

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# AppSpec seção 'permissões' (somente implantações EC2/locais)
<a name="reference-appspec-file-structure-permissions"></a>

A `'permissions'` seção especifica como as permissões especiais, se houver, devem ser aplicadas aos arquivos e directories/folders na `'files'` seção após serem copiadas para a instância. É possível especificar várias instruções `object`. Esta seção é opcional. Ela se aplica somente às instâncias Amazon Linux, Ubuntu Server e RHEL.

**nota**  
A seção `'permissions'` é usada somente para implantações EC2/On-Premises. Ele não é usado para implantações do AWS Lambda ou do Amazon ECS.

Esta seção tem a seguinte estrutura:

```
permissions:
  - object: object-specification
    pattern: pattern-specification
    except: exception-specification
    owner: owner-account-name
    group: group-name
    mode: mode-specification
    acls: 
      - acls-specification 
    context:
      user: user-specification
      type: type-specification
      range: range-specification
    type:
      - object-type
```

As instruções são as seguintes:
+ `object` – obrigatório. Este é um conjunto de objetos do sistema de arquivos (arquivos ou diretórios/pastas) ao qual as permissões especificadas serão aplicadas depois que esses objetos forem copiados para a instância.

  Especifique `object` com uma string.
+ `pattern`: opcional. Especifica um padrão para aplicar permissões. Se não forem especificadas ou se forem especificadas com os caracteres especiais **"\$1\$1"**, as permissões serão aplicadas em todos os arquivos ou diretórios correspondentes, de acordo com o `type`. 

  Especifique `pattern` com uma string entre aspas ("").
+ `except`: opcional. Especifica os arquivos ou diretórios que são exceções ao `pattern`. 

  Especifique `except` com uma lista de strings separada por vírgulas entre colchetes.
+ `owner`: opcional. O nome do proprietário do `object`. Se não for especificado, todos os proprietários existentes aplicados à estrutura original de arquivos ou diretórios/pastas permanecerão inalterados após a operação de cópia.

  Especifique `owner` com uma string.
+ `group`: opcional. O nome do grupo para `object`. Se não for especificado, todos os grupos existentes aplicados à estrutura original de arquivos ou diretórios/pastas permanecerão inalterados após a operação de cópia.

  Especifique `group` com uma string.
+ `mode`: opcional. Um valor numérico que especifica as permissões a serem aplicadas ao `object`. A configuração do modo segue a sintaxe do comando chmod do Linux.
**Importante**  
Se o valor incluir um zero inicial, você deverá colocá-lo entre aspas duplas ou remover o zero inicial para que restem apenas três dígitos.
**nota**  
Notação simbólica, como **u\$1x**, não é suportada para a configuração `mode`.

  Exemplos:
  + `mode: "0644"` concede permissões de leitura e gravação ao proprietário do objeto (6), permissões somente leitura ao grupo (4) e permissões somente leitura a todos os outros usuários (4).
  + `mode: 644` concede as mesmas permissões que `mode: "0644"`.
  + `mode: 4755` define o atributo setuid (4), concede permissões de controle total ao proprietário (7), concede permissões de leitura e execução ao grupo (5) e concede permissões de leitura e execução a todos os outros usuários (5).

    Para obter mais exemplos, consulte a documentação do comando chmod do Linux.

    Se o modo não for especificado, todos os modos existentes aplicados à estrutura original de arquivos ou pastas permanecerão inalterados após a operação de cópia.
+ `acls`: opcional. Uma lista de strings de caracteres que representam uma ou mais entradas da lista de controle de acesso (ACL) aplicadas ao `object`. Por exemplo, **u:bob:rw** representa permissões de leitura e gravação para o usuário **bob**. (Para obter mais exemplos, consulte exemplos de formatos de entradas de ACL na documentação do comando `setfacl` do Linux). É possível especificar várias entradas de ACL. Se não `acls` for especificado, qualquer existente ACLs aplicado ao arquivo ou directory/folder estrutura original permanecerá inalterado após a operação de cópia. Eles substituem os existentes ACLs.

  Especifique uma `acls` com um traço (-), seguido por um espaço e uma string (por exemplo, `- u:jane:rw`). Se você tiver mais de uma ACL, cada uma será especificada em uma linha separada.
**nota**  
A configuração de usuários sem nome, grupos sem nome ou outras entradas de ACL semelhantes faz com que o AppSpec arquivo falhe. Use `mode` para especificar esses tipos de permissões em vez disso.
+ `context`: opcional. Para instâncias habilitadas para Security-Enhanced Linux (SELinux), uma lista de rótulos de contexto relevantes à segurança a serem aplicados aos objetos copiados. Os rótulos são especificados como chaves contendo `user`, `type`, e `range`. (Para obter mais informações, consulte a SELinux documentação.) Cada chave é inserida com uma string. Se não for especificado, todos os rótulos existentes aplicados ao arquivo ou directory/folder estrutura original permanecerão inalterados após a operação de cópia.
  + `user`: opcional. O SELinux usuário.
  + `type`: opcional. O nome do SELinux tipo.
  + `range`: opcional. O especificador SELinux de intervalo. Isso apenas terá efeito se os recursos MLS (Multi-Level Security) e MCS (Multi-Category Security) estiverem habilitados na máquina. Se não estiver habilitado, `range` assumirá **s0** como padrão.

  Especifique `context` com uma string (por exemplo, `user: unconfined_u`). Cada `context` é especificado em uma linha separada.
+ `type`: opcional. Os tipos de objetos aos quais aplicar as permissões especificadas. `type` é uma string que pode ser definida como **file** ou **directory**. Se **file** for especificado, as permissões serão aplicadas somente nos arquivos que estiverem imediatamente contidos no `object` após a operação de cópia (e não no `object` em si). Se **directory** for especificado, as permissões serão aplicadas recursivamente a tudo o directories/folders que estiver em qualquer lugar `object` após a operação de cópia (mas não a `object` si mesma).

  Especifique o `type` com um traço (-), seguido por um espaço e uma string (por exemplo, `- file`).

## Exemplo da seção 'permissions'
<a name="reference-appspec-file-structure-permissions-example"></a>

O exemplo a seguir mostra como especificar a seção `'permissions'` com as instruções `object`, `pattern`, `except`, `owner`, `mode` e `type`. Esse exemplo se aplica somente às instâncias Amazon Linux, Ubuntu Server e RHEL. Neste exemplo, suponha que os seguintes arquivos e pastas sejam copiados para a instância nesta hierarquia:

```
/tmp
  `-- my-app
       |-- my-file-1.txt
       |-- my-file-2.txt
       |-- my-file-3.txt
       |-- my-folder-1
       |     |-- my-file-4.txt
       |     |-- my-file-5.txt
       |     `-- my-file-6.txt
       `-- my-folder-2
             |-- my-file-7.txt
             |-- my-file-8.txt
             |-- my-file-9.txt
	           `-- my-folder-3
```

O AppSpec arquivo a seguir mostra como definir permissões nesses arquivos e pastas após serem copiados:

```
version: 0.0
os: linux
# Copy over all of the folders and files with the permissions they
#  were originally assigned.
files:
  - source: ./my-file-1.txt
    destination: /tmp/my-app
  - source: ./my-file-2.txt
    destination: /tmp/my-app
  - source: ./my-file-3.txt
    destination: /tmp/my-app
  - source: ./my-folder-1
    destination: /tmp/my-app/my-folder-1
  - source: ./my-folder-2
    destination: /tmp/my-app/my-folder-2
# 1) For all of the files in the /tmp/my-app folder ending in -3.txt
#  (for example, just my-file-3.txt), owner = adm, group = wheel, and
#  mode = 464 (-r--rw-r--).
permissions:
  - object: /tmp/my-app
    pattern: "*-3.txt"
    owner: adm
    group: wheel
    mode: 464
    type:
      - file
# 2) For all of the files ending in .txt in the /tmp/my-app
#  folder, but not for the file my-file-3.txt (for example,
#  just my-file-1.txt and my-file-2.txt),
#  owner = ec2-user and mode = 444 (-r--r--r--).
  - object: /tmp/my-app
    pattern: "*.txt"
    except: [my-file-3.txt]
    owner: ec2-user
    mode: 444
    type:
      - file
# 3) For all the files in the /tmp/my-app/my-folder-1 folder except
#  for my-file-4.txt and my-file-5.txt, (for example,
#  just my-file-6.txt), owner = operator and mode = 646 (-rw-r--rw-).
  - object: /tmp/my-app/my-folder-1
    pattern: "**"
    except: [my-file-4.txt, my-file-5.txt]
    owner: operator
    mode: 646
    type:
      - file
# 4) For all of the files that are immediately under
#  the /tmp/my-app/my-folder-2 folder except for my-file-8.txt,
#  (for example, just my-file-7.txt and
#  my-file-9.txt), owner = ec2-user and mode = 777 (-rwxrwxrwx).
  - object: /tmp/my-app/my-folder-2
    pattern: "**"
    except: [my-file-8.txt]
    owner: ec2-user
    mode: 777
    type:
      - file
# 5) For all folders at any level under /tmp/my-app that contain
#  the name my-folder but not
#  /tmp/my-app/my-folder-2/my-folder-3 (for example, just
#  /tmp/my-app/my-folder-1 and /tmp/my-app/my-folder-2),
#  owner = ec2-user and mode = 555 (dr-xr-xr-x).
  - object: /tmp/my-app
    pattern: "*my-folder*"
    except: [tmp/my-app/my-folder-2/my-folder-3]
    owner: ec2-user
    mode: 555
    type:
      - directory
# 6) For the folder /tmp/my-app/my-folder-2/my-folder-3,
#  group = wheel and mode = 564 (dr-xrw-r--).
  - object: /tmp/my-app/my-folder-2/my-folder-3
    group: wheel
    mode: 564
    type:
      - directory
```

As permissões resultantes são as seguintes:

```
-r--r--r-- ec2-user root  my-file-1.txt
-r--r--r-- ec2-user root  my-file-2.txt
-r--rw-r-- adm      wheel my-file-3.txt

dr-xr-xr-x ec2-user root  my-folder-1
-rw-r--r-- root     root  my-file-4.txt
-rw-r--r-- root     root  my-file-5.txt
-rw-r--rw- operator root  my-file-6.txt

dr-xr-xr-x ec2-user root  my-folder-2
-rwxrwxrwx ec2-user root  my-file-7.txt
-rw-r--r-- root     root  my-file-8.txt
-rwxrwxrwx ec2-user root  my-file-9.txt

dr-xrw-r-- root     wheel my-folder-3
```

O exemplo a seguir mostra como especificar a seção `'permissions'` com a adição das instruções `acls` e `context`. Esse exemplo se aplica somente às instâncias Amazon Linux, Ubuntu Server e RHEL.

```
permissions:
  - object: /var/www/html/WordPress
    pattern: "**"
    except: [/var/www/html/WordPress/ReadMe.txt]
    owner: bob
    group: writers
    mode: 644
    acls: 
      - u:mary:rw
      - u:sam:rw
      - m::rw
    context:
      user: unconfined_u
      type: httpd_sys_content_t
      range: s0
    type:
      - file
```