

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# AppSpec section « autorisations » (déploiements EC2/sur site uniquement)
<a name="reference-appspec-file-structure-permissions"></a>

La `'permissions'` section indique comment les autorisations spéciales, le cas échéant, doivent être appliquées aux fichiers et directories/folders à la `'files'` section après leur copie sur l'instance. Vous pouvez spécifier plusieurs instructions `object`. Cette section est facultative. Elle s'applique uniquement aux instances Amazon Linux, Ubuntu Server et RHEL.

**Note**  
La `'permissions'` section est uniquement utilisée pour les déploiements EC2/sur site. Il n'est pas utilisé pour les AWS déploiements Lambda ou Amazon ECS.

Cette section a la structure suivante :

```
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
```

Les instructions sont les suivantes :
+ `object` : obligatoire. Il s'agit d'un ensemble d'objets de système de fichiers (fichiers ou répertoires/dossiers) auxquels les autorisations spécifiées sont appliquées après la copie des objets de système de fichiers sur l'instance.

  Spécifiez `object` avec une chaîne.
+ `pattern` : facultatif. Spécifie un modèle pour appliquer des autorisations. Si elles ne sont pas spécifiées ou si elles sont spécifiées avec les caractères spéciaux **"\$1\$1"**, les autorisations sont appliquées à tous les fichiers ou répertoires correspondants, selon leur `type`. 

  Spécifiez `pattern` avec une chaîne placée entre guillemets ("").
+ `except` : facultatif. Spécifie les fichiers ou répertoires qui sont des exceptions par rapport à `pattern` 

  Spécifiez `except` avec une liste de chaînes séparées par des virgules entre crochets.
+ `owner` : facultatif. Nom du propriétaire de `object`. Si cette instruction n'est pas spécifiée, tous les propriétaires existants appliqués à la structure de fichiers ou de répertoires/dossiers d'origine restent inchangés après l'opération de copie.

  Spécifiez `owner` avec une chaîne.
+ `group` : facultatif. Nom du groupe pour `object`. Si cette instruction n'est pas spécifiée, tous les groupes existants appliqués à la structure de fichiers ou de répertoires/dossiers d'origine restent inchangés après l'opération de copie.

  Spécifiez `group` avec une chaîne.
+ `mode` : facultatif. Une valeur numérique spécifiant les autorisations à `object` appliquer. Le réglage du mode suit la syntaxe de la commande Linux chmod.
**Important**  
Si la valeur inclut un zéro initial, vous devez l'entourer de guillemets doubles ou supprimer le zéro initial afin qu'il ne reste que trois chiffres.
**Note**  
La notation symbolique telle que celle-ci n'**u\$1x**est pas prise en charge pour le `mode` paramètre.

  Exemples :
  + `mode: "0644"`donne des autorisations de lecture et d'écriture au propriétaire de l'objet (6), des autorisations de lecture seule au groupe (4) et des autorisations de lecture seule à tous les autres utilisateurs (4).
  + `mode: 644`accorde les mêmes autorisations que`mode: "0644"`.
  + `mode: 4755`définit l'attribut setuid (4), donne des autorisations de contrôle complètes au propriétaire (7), donne des autorisations de lecture et d'exécution au groupe (5) et donne des autorisations de lecture et d'exécution à tous les autres utilisateurs (5).

    Pour plus d'exemples, consultez la documentation de la commande Linux chmod.

    Si aucun mode n'est spécifié, tous les modes existants appliqués à la structure de fichier ou de dossier d'origine restent inchangés après l'opération de copie.
+ `acls` : facultatif. Liste de chaînes de caractères représentant une ou plusieurs entrées de liste de contrôle d'accès (ACL) appliquées à `object`. Par exemple, **u:bob:rw** représente des autorisations de lecture et d'écriture pour l'utilisateur **bob**. (Pour plus d'exemples, consultez les exemples de formats d'entrées ACL dans la documentation relative à la commande Linux `setfacl`.) Vous pouvez spécifier plusieurs entrées ACL. Si `acls` ce n'est pas spécifié, tout élément existant ACLs appliqué au fichier ou à la directory/folder structure d'origine reste inchangé après l'opération de copie. Elles remplacent toutes celles qui existent déjà ACLs.

  Spécifiez `acls` avec un tiret (-) suivi d'un espace, puis d'une chaîne (par exemple, `- u:jane:rw`). Si vous avez plusieurs listes ACL, chacune est spécifiée sur une ligne distincte.
**Note**  
La définition d'utilisateurs anonymes, de groupes anonymes ou d'autres entrées ACL similaires entraîne l'échec du AppSpec fichier. Utilisez `mode` pour spécifier ces types d'autorisations à la place.
+ `context` : facultatif. Pour les instances compatibles Security-Enhanced Linux (SELinux), liste d'étiquettes contextuelles relatives à la sécurité à appliquer aux objets copiés. Les étiquettes sont spécifiées en tant que clés contenant `user`, `type` et `range`. (Pour plus d'informations, consultez la SELinux documentation.) Chaque clé est entrée avec une chaîne. Si elles ne sont pas spécifiées, toutes les étiquettes existantes appliquées au fichier ou à la directory/folder structure d'origine restent inchangées après l'opération de copie.
  + `user` : facultatif. L' SELinux utilisateur.
  + `type` : facultatif. Le nom du SELinux type.
  + `range` : facultatif. Le spécificateur SELinux de plage. Cette instruction n'a aucun effet, sauf si Multi-Level Security (MLS) et Multi-Category Security (MCS) sont activés sur la machine. Si ces options ne sont pas activées, `range` prend par défaut la valeur **s0**.

  Spécifiez `context` avec une chaîne (par exemple, `user: unconfined_u`). Chaque instruction `context` est spécifiée sur une ligne distincte.
+ `type` : facultatif. Types d'objets auxquels appliquer les autorisations spécifiées. `type` est une chaîne qui peut être définie sur **file** ou **directory**. Si **file** est spécifié, les autorisations sont appliquées uniquement aux fichiers contenus immédiatement dans `object` après l'opération de copie (et non à `object` proprement dit). Si cette **directory** option est spécifiée, les autorisations sont appliquées de manière récursive à tous directories/folders ceux qui se trouvent n'importe où `object` après l'opération de copie (mais pas à `object` elle-même).

  Spécifiez `type` avec un tiret (-) suivi d'un espace, puis d'une chaîne (par exemple, `- file`).

## Exemple de section « Autorisations »
<a name="reference-appspec-file-structure-permissions-example"></a>

L'exemple suivant montre comment spécifier la section `'permissions'` avec les instructions `object`, `pattern`, `except`, `owner`, `mode` et `type`. Cet exemple s'applique uniquement aux instances Amazon Linux, Ubuntu Server et RHEL. Dans cet exemple, supposez que les fichiers et dossiers suivants sont copiés vers l'instance dans la hiérarchie :

```
/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
```

Le AppSpec fichier suivant indique comment définir des autorisations sur ces fichiers et dossiers une fois qu'ils ont été copiés :

```
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
```

Les autorisations obtenues sont les suivantes :

```
-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
```

L'exemple suivant montre comment spécifier la section `'permissions'` avec l'ajout des instructions `acls` et `context`. Cet exemple s'applique uniquement aux instances Amazon Linux, Ubuntu Server et 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
```