Guía de administración de Oracle Solaris ZFS

Establecimiento de las ACL en archivos ZFS

Al implementarse con ZFS, las ACL se componen de una matriz de entradas de ACL. ZFS proporciona un modelo de ACL puro en el que todos los archivos disponen de una ACL. Normalmente, las ACL son triviales en el sentido de que únicamente representan las entradas de UNIX owner/group/other tradicionales.

Si cambia los permisos del archivo, su ACL se actualiza en consonancia. Además, si elimina una ACL no trivial que concedía a un usuario acceso a un archivo o directorio, ese usuario quizá siga disponiendo de acceso gracias a los bits de permisos del archivo o directorio que conceden acceso al grupo o a todos los usuarios. Todas las decisiones de control de acceso se supeditan a los permisos representados en una ACL de archivo o directorio.

A continuación se proporcionan las reglas principales de acceso de ACL de un archivo ZFS:

Si en un directorio se establece una ACL no trivial, los directorios secundarios no heredan la ACL de manera automática. Si se establece una ACL no trivial y desea que la hereden los directorios secundarios, debe utilizar los indicadores de herencia de ACL. Para obtener más información, consulte la Tabla 8–3 y Establecimiento de herencia de ACL en archivos ZFS en formato detallado.

Al crear un archivo, y en función del valor umask, se aplica una ACL similar a la siguiente:


$ ls -v file.1
-rw-r--r--   1 root     root      206663 May 20 14:09 file.1
     0:owner@:execute:deny
     1:owner@:read_data/write_data/append_data/write_xattr/write_attributes
         /write_acl/write_owner:allow
     2:group@:write_data/append_data/execute:deny
     3:group@:read_data:allow
     4:everyone@:write_data/append_data/write_xattr/execute/write_attributes
         /write_acl/write_owner:deny
     5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

Cada categoría de usuario (owner@!, group@!, everyone@!) tiene dos entradas de ACL en este ejemplo. Una entrada es para los permisos deny y otra para los permisos allow.

A continuación se proporciona una descripción de la ACL de este archivo:

0:owner@

Se deniega al propietario el permiso de ejecución del archivo (execute:deny ).

1:owner@

El propietario puede leer y modificar el contenido del archivo ( read_data/write_data/append_data). También puede modificar atributos del archivo como indicaciones de hora, atributos extendidos y ACL (write_xattr/write_attributes /write_acl). Además, puede modificar la propiedad del archivo (write_owner:allow).

2:group@

Se deniegan al grupo permisos de modificación y ejecución del archivo (write_data/append_data/execute:deny).

3:group@

Se conceden al grupo permisos de lectura del archivo (read_data:allow ).

4:everyone@

Se deniegan a quien no sea propietario del archivo o miembro del grupo propietario los permisos de ejecución o modificación del contenido del archivo, y de modificación de sus atributos (write_data/append_data/write_xattr/execute/write_attributes/write_acl/write_owner:deny ).

5:everyone@

Se conceden a quien no sea propietario del archivo o miembro del grupo propietario permisos de lectura del archivo y de sus atributos (read_data/read_xattr/read_attributes/read_acl/synchronize:allow ). El permiso de acceso synchronize no está implementado en la actualidad.

Al crear un directorio, y en función del valor umask, se aplica una ACL de directorio predeterminada similar a la siguiente:


$ ls -dv dir.1
drwxr-xr-x   2 root     root           2 May 20 14:11 dir.1
     0:owner@::deny
     1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/write_xattr/execute/write_attributes/write_acl
         /write_owner:allow
     2:group@:add_file/write_data/add_subdirectory/append_data:deny
     3:group@:list_directory/read_data/execute:allow
     4:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr
         /write_attributes/write_acl/write_owner:deny
     5:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

A continuación se proporciona una descripción de esta ACL de directorio:

0:owner@

La lista de deny del propietario está vacía para el directorio (::deny).

1:owner@

El propietario puede leer y modificar el contenido del directorio (list_directory/read_data/add_file/write_data/add_subdirectory/append_data ), buscar en el contenido (execute) y modificar atributos del archivo como indicaciones de hora, atributos extendidos y ACL (write_xattr/write_attributes/write_acl). Además, puede modificar la propiedad del directorio (write_owner:allow).

2:group@

El grupo no puede agregar ni modificar contenido del directorio ( add_file/write_data/add_subdirectory/append_data:deny).

3:group@

El grupo puede agrupar y leer el contenido del directorio. Además, tiene permisos de ejecución para buscar en el contenido del directorio (list_directory/read_data/execute:allow).

4:everyone@

Se deniega a quien no sea propietario del archivo o miembro del grupo propietario el permiso de adición o modificación del contenido del directorio (add_file/write_data/add_subdirectory/append_data). Además se deniega el permiso para modificar atributos del directorio (write_xattr/write_attributes/write_acl/write_owner:deny).

5:everyone@

Se conceden a quien no sea propietario del archivo o miembro del grupo propietario permisos de lectura y ejecución del contenido del directorio y sus atributos (list_directory/read_data/read_xattr/execute/read_attributes/read_acl/synchronize:allow ). El permiso de acceso synchronize no está implementado en la actualidad.