AppSpec seção 'permissões' (somente implantações EC2/locais) - AWS CodeDeploy

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 seção 'permissions' especifica como as permissões especiais, se houver, deverão ser aplicadas aos arquivos e diretórios/pastas na seção 'files' depois que forem copiados 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 "**", 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+x, 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 acls não for especificado, todas as ACLs existentes aplicadas à estrutura original de arquivos ou diretórios/pastas permanecerão inalteradas após a operação de cópia. Elas substituirão as ACLs existentes.

    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 com o SELinux (Security-Enhanced Linux), uma lista de rótulos de contexto relevantes para a segurança a ser aplicada aos objetos copiados. Os rótulos são especificados como chaves contendo user, type, e range. (Para obter mais informações, consulte a documentação do SELinux). Cada chave é inserida com uma string. Se não for especificado, qualquer rótulo existente aplicado à estrutura original de arquivos ou diretórios/pastas permanecerá inalterado após a operação de cópia.

    • user: opcional. O usuário do SELinux.

    • type: opcional. O nome do tipo SELinux.

    • range: opcional. O especificador do intervalo SELinux. 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 em todos os diretórios/pastas que estiverem em qualquer lugar do object após a operação de cópia (mas não no object em si).

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

Exemplo da seção 'permissions'

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 depois que eles são 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