View a markdown version of this page

Permissões POSIX no S3 Files - Amazon Simple Storage Service

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:root com permissões 0644 (-rw-r--r--)

  • Diretórios: propriedade root:root com permissões 0755 (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.