

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# AppSpec sección de «permisos» (solo para despliegues de EC2/on-premise)
<a name="reference-appspec-file-structure-permissions"></a>

`'permissions'`En esta sección se especifica cómo se deben aplicar los permisos especiales, si los hay, a los archivos y directories/folders en la `'files'` sección después de copiarlos en la instancia. Puede especificar varias instrucciones `object`. Esta sección es opcional. Se aplica únicamente a las instancias de Amazon Linux, Ubuntu Server y RHEL.

**nota**  
La sección `'permissions'` solo se utiliza para las implementaciones de EC2/en las instalaciones. No se utiliza para las implementaciones de AWS Lambda o Amazon ECS.

Esta sección tiene la siguiente estructura:

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

Las instrucciones son las siguientes:
+ `object`: obligatorio. Este es un conjunto de objetos del sistema de archivos (archivos o directorios/carpetas) a los que se aplican los permisos especificados una vez que se copian en la instancia.

  Especifique `object` con una cadena.
+ `pattern`: opcional. Especifica un patrón para aplicar permisos. Si no se especifica o se especifica con los caracteres especiales **"\$1\$1"**, los permisos se aplican a todos los archivos o directorios coincidentes, en función del valor de `type`. 

  Especifique `pattern` con una cadena con comillas ("").
+ `except`: opcional. Especifica los archivos o directorios que son excepciones a `pattern`. 

  Especifique `except` con una lista separada por comas de cadenas entre corchetes.
+ `owner`: opcional. El nombre del propietario de `object`. Si no se especifica, todos los propietarios existentes aplicados a la estructura original de archivos o directorios/carpetas permanecen sin cambios después de la operación de copia.

  Especifique `owner` con una cadena.
+ `group`: opcional. El nombre del grupo de `object`. Si no se especifica, todos los grupos existentes aplicados a la estructura original de archivos o directorios/carpetas permanecen sin cambios después de la operación de copia.

  Especifique `group` con una cadena.
+ `mode`: opcional. Un valor numérico que especifica los permisos que se van a aplicar a `object`. La configuración del modo sigue la sintaxis del comando chmod de Linux.
**importante**  
Si el valor incluye un cero a la izquierda, debe ponerlo entre comillas dobles o eliminar el cero inicial para que solo queden tres dígitos.
**nota**  
El ajuste **u\$1x** no admite una notación simbólica como `mode`.

  Ejemplos:
  + `mode: "0644"` otorga permisos de lectura y escritura al propietario del objeto (6), permisos de solo lectura al grupo (4) y permisos de solo lectura a todos los demás usuarios (4).
  + `mode: 644` concede los mismos permisos que `mode: "0644"`.
  + `mode: 4755` establece el atributo setuid (4), otorga permisos de control total al propietario (7), otorga permisos de lectura y ejecución al grupo (5) y otorga permisos de lectura y ejecución a todos los demás usuarios (5).

    Para ver más ejemplos, consulte la documentación del comando chmod de Linux.

    Si no se especifica mode, todos los modos existentes aplicados a la estructura original de archivos o carpetas permanecen sin cambios después de la operación de copia.
+ `acls`: opcional. Una lista de cadenas de caracteres que representan una o varias entradas de la lista de control de acceso (ACL) aplicadas a `object`. Por ejemplo, **u:bob:rw** representa permisos de lectura y escritura para el usuario **bob**. (Para ver más ejemplos, consulte los ejemplos de formato de entradas de ACL en la documentación del comando `setfacl` de Linux). Puede especificar varias entradas de ACL. Si no `acls` se especifica, cualquier elemento existente ACLs aplicado al archivo o directory/folder estructura original permanecerá inalterado tras la operación de copia. Estas sustituyen a las existentes ACLs.

  Especifique una `acls` con un guion (-), seguido de un espacio y, a continuación, una cadena (por ejemplo, `- u:jane:rw`). Si tiene varias ACL, cada una de ellas se especifica en una línea independiente.
**nota**  
Si se configuran usuarios sin nombre, grupos sin nombre u otras entradas de ACL similares, se produce un error en el AppSpec archivo. Utilice `mode` para especificar estos tipos de permisos en su lugar.
+ `context`: opcional. En el caso de las instancias habilitadas para Linux (SELinux) con seguridad mejorada, una lista de etiquetas de contexto relevantes para la seguridad que se deben aplicar a los objetos copiados. Las etiquetas se especifican como claves que contienen `user`, `type` y `range`. (Para obtener más información, consulte la documentación). SELinux Cada clave se escribe con una cadena. Si no se especifica, cualquier etiqueta existente aplicada al archivo o directory/folder estructura original permanecerá inalterada tras la operación de copia.
  + `user`: opcional. El SELinux usuario.
  + `type`: opcional. El nombre del SELinux tipo.
  + `range`: opcional. El especificador SELinux de rango. No tiene ningún efecto a no ser que Multi-Level Security (MLS) y Multi-Category Security (MCS) estén habilitados en la máquina. Si no está habilitada, el valor predeterminado de `range` es **s0**.

  Especifique `context` con una cadena (por ejemplo, `user: unconfined_u`). Cada `context` se especifica en una línea separada.
+ `type`: opcional. Los tipos de objetos a los que se van a aplicar los permisos especificados. `type` es una cadena que se puede establecer en **file** o en **directory**. Si se especifica **file**, los permisos se aplican únicamente a los archivos que estén incluidos en `object` después de la operación de copia (y no al propio `object`). Si **directory** se especifica, los permisos se aplican de forma recursiva a todos los directories/folders que se encuentren en cualquier punto `object` después de la operación de copia (pero no a `object` sí mismos).

  Especifique `type` con un guion (-), seguido de un espacio y, a continuación, una cadena (por ejemplo, `- file`).

## Ejemplo de la sección "permissions"
<a name="reference-appspec-file-structure-permissions-example"></a>

En el siguiente ejemplo se muestra cómo especificar la sección `'permissions'` con las instrucciones `object`, `pattern`, `except`, `owner`, `mode` y `type`. Este ejemplo se aplica únicamente a las instancias de Amazon Linux, Ubuntu Server y RHEL. En este ejemplo, se presupone que se copian los siguientes archivos y carpetas en la instancia en esta jerarquía:

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

El siguiente AppSpec archivo muestra cómo establecer los permisos en estos archivos y carpetas después de copiarlos:

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

Los permisos resultantes son los siguientes:

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

En el siguiente ejemplo se muestra cómo especificar la sección `'permissions'` con la adición de las instrucciones `acls` y `context`. Este ejemplo se aplica únicamente a las instancias de Amazon Linux, Ubuntu Server y 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
```