Permissões POSIX no S3 Files
Os sistemas de arquivos POSIX exigem propriedade e permissões em cada arquivo. O Amazon S3 armazena dados como objetos com acesso controlado por políticas do IAM e políticas de bucket e não armazena nativamente atributos de propriedade ou permissão de arquivos. O S3 Files compensa essa diferença armazenando metadados POSIX, incluindo as permissões de proprietário, grupo e arquivo, como metadados definidos pelo usuário em cada objeto do S3. Quando você cria ou modifica um arquivo por meio do S3 Files, o serviço grava todos os metadados de permissão automaticamente. Quando um objeto é gravado em seu bucket do S3 fora do sistema de arquivos, por exemplo, por meio do console do Amazon S3, da CLI da AWS ou do SDK da AWS, não há metadados POSIX nesse objeto. O S3 Files atribui a esses objetos um valor padrão de propriedade root:root e permissões 644, o que permite que usuários não raiz leiam o arquivo, mas não gravem nele. Se esses padrões satisfizerem seus requisitos de acesso, nenhuma ação será necessária. Caso o aplicativo exija, é possível substituir as permissões padrão nesses objetos. Este tutorial explica como aplicar permissões personalizadas.
Como o S3 Files armazena metadados POSIX
O S3 Files armazena informações POSIX como metadados definidos pelo usuário em cada objeto. As seguintes chaves de metadados controlam a propriedade e as permissões:
| Chave de metadados | Descrição | Valor de exemplo |
|---|---|---|
x-amz-meta-file-owner |
ID de usuário POSIX (UID) | 1000 |
x-amz-meta-file-group |
ID de grupo POSIX (GID) | 1000 |
x-amz-meta-file-permissions |
Tipo de arquivo e bits de permissão (octal) | 0100644 |
Quando um objeto não tem metadados POSIX, o S3 Files aplica os seguintes padrões:
Arquivos: propriedade
root:rootcom permissões0644(-rw-r--r--)Diretórios: propriedade
root:rootcom permissões0755(drwxr-xr-x)
Com esses padrões, todos os usuários podem ler arquivos e percorrer diretórios, mas somente o proprietário (raiz) pode gravar. Os arquivos não são executáveis por padrão.
Configuração de metadados POSIX em objetos existentes
Realize o procedimento a seguir para aplicar a propriedade e as permissões POSIX a objetos que já existem no seu bucket.
Etapa 1: identificar o UID e o GID do usuário de destino
Neste exemplo, o usuário de destino é ec2-user com o UID 1000:
$ id ec2-user uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user)
Etapa 2: atualizar os metadados do objeto usando copy-object
O comando aws s3api copy-object copia o objeto no local com metadados atualizados. Substitua BUCKET_NAME e OBJECT_KEY pelos seus valores.
A opção --metadata-directive REPLACE substitui todos os metadados definidos pelo usuário no objeto. Inclua --content-type para preservar o tipo de conteúdo do objeto, pois REPLACE redefine para o padrão (binary/octet-stream). Se você usar outros campos de metadados, inclua-os no parâmetro --metadata.
aws s3api copy-object \ --bucket BUCKET_NAME \ --key OBJECT_KEY \ --copy-source BUCKET_NAME/OBJECT_KEY \ --metadata-directive REPLACE \ --content-type CONTENT_TYPE \ --metadata '{"file-owner":"1000", "file-group":"1000", "file-permissions":"0100644"}'
Etapa 3: verificar se os metadados foram aplicados
Execute o seguinte comando para confirmar os metadados:
aws s3api head-object --bucket BUCKET_NAME --key OBJECT_KEY
A resposta inclui seus metadados POSIX:
{ "AcceptRanges": "bytes", "LastModified": "Mon, 18 May 2026 14:43:00 GMT", "ContentLength": 7214, "ETag": "\"abc123...\"", "ContentType": "image/png", "Metadata": { "file-owner": "1000", "file-group": "1000", "file-permissions": "0100644" } }
Etapa 4: verificar as permissões no sistema de arquivos do S3
$ ls -ltr /mnt/s3files/ -rw-r--r--. 1 ec2-user ec2-user 7214 May 18 14:43 s3.png
O arquivo agora é de propriedade de ec2-user e não precisa mais da raiz para ser acessado.
Configuração de metadados POSIX em novos uploads
Você pode incluir metadados POSIX ao fazer upload de objetos no bucket.
Uso de aws s3 cp
aws s3 cp localfile.txt s3://BUCKET_NAME/localfile.txt \ --metadata '{"file-owner":"1000", "file-group":"1000", "file-permissions":"0100644"}'
Uso de aws s3api put-object
aws s3api put-object \ --bucket BUCKET_NAME \ --key localfile.txt \ --body localfile.txt \ --metadata '{"file-owner":"1000", "file-group":"1000", "file-permissions":"0100644"}'
Verifique os metadados no objeto carregado
aws s3api head-object --bucket BUCKET_NAME --key localfile.txt
Referência de valores de permissão
A tabela a seguir lista valores comuns de permissão POSIX e os respectivos casos de uso.
| Valor octal | Modo de arquivo | Caso de uso |
|---|---|---|
0100644 |
-rw-r--r-- |
Arquivo padrão: leitura/gravação do proprietário, outros somente leitura |
0100664 |
-rw-rw-r-- |
Arquivo compartilhado: leitura/gravação do proprietário e do grupo, outros somente leitura |
0100755 |
-rwxr-xr-x |
Executável: acesso total do proprietário, outros leem e executam |
0100666 |
-rw-rw-rw- |
Arquivo gravável globalmente: todos os usuários podem ler e gravar |
0040755 |
drwxr-xr-x |
Diretório padrão: acesso total do proprietário, outros leem e percorrem |
Práticas recomendadas
Faça upload de arquivos pelo sistema de arquivos do S3 sempre que possível. O S3 Files armazena automaticamente a propriedade e as permissões do arquivo como metadados do objeto e, portanto, nenhuma etapa adicional é necessária. Ao fazer upload diretamente para o bucket do S3, inclua metadados POSIX no comando de upload para garantir que a propriedade e as permissões corretas sejam definidas desde o início.