

# Permissões POSIX no S3 Files
<a name="s3-files-posix-permissions"></a>

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
<a name="s3-files-posix-permissions-how-stored"></a>

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
<a name="s3-files-posix-permissions-existing-objects"></a>

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
<a name="s3-files-posix-permissions-existing-step1"></a>

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
<a name="s3-files-posix-permissions-existing-step2"></a>

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
<a name="s3-files-posix-permissions-existing-step3"></a>

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
<a name="s3-files-posix-permissions-existing-step4"></a>

```
$ 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
<a name="s3-files-posix-permissions-new-uploads"></a>

Você pode incluir metadados POSIX ao fazer upload de objetos no bucket.

### Uso de aws s3 cp
<a name="s3-files-posix-permissions-new-uploads-cp"></a>

```
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
<a name="s3-files-posix-permissions-new-uploads-put"></a>

```
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
<a name="s3-files-posix-permissions-new-uploads-verify"></a>

```
aws s3api head-object --bucket BUCKET_NAME --key localfile.txt
```

## Referência de valores de permissão
<a name="s3-files-posix-permissions-reference"></a>

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
<a name="s3-files-posix-permissions-best-practices"></a>

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.