JavaScript is required to for searching.
Omitir Vínculos de navegación
Salir de la Vista de impresión
Administración de Oracle Solaris 11.1: sistemas de archivos ZFS     Oracle Solaris 11.1 Information Library (Español)
search filter icon
search icon

Información del documento

Prefacio

1.  Sistema de archivos ZFS de Oracle Solaris (introducción)

2.  Procedimientos iniciales con Oracle Solaris ZFS

3.  Administración de agrupaciones de almacenamiento de Oracle Solaris ZFS

4.  Gestión de componentes de la agrupación raíz ZFS

5.  Administración de sistemas de archivos ZFS de Oracle Solaris

6.  Uso de clones e instantáneas de Oracle Solaris ZFS

7.  Uso de listas de control de acceso y atributos para proteger archivos Oracle Solaris ZFS

Modelo de ACL de Solaris

Descripciones de la sintaxis para definir las ACL

Conjuntos de LCA de ZFS

Herencia de ACL

Propiedades de ACL

Establecimiento de las LCA en archivos ZFS

Establecimiento y visualización de ACL en archivos ZFS en formato detallado

Establecimiento de herencia de LCA en archivos ZFS en formato detallado

Establecimiento y visualización de ACL en archivos ZFS en formato compacto

Aplicación de atributos especiales a los archivos de ZFS

8.  Administración delegada de ZFS Oracle Solaris

9.  Temas avanzados de Oracle Solaris ZFS

10.  Recuperación de agrupaciones y solución de problemas de Oracle Solaris ZFS

11.  Archivado de instantáneas y recuperación de agrupaciones raíz

12.  Prácticas de ZFS recomendadas por Oracle Solaris

A.  Descripciones de versiones de Oracle Solaris ZFS

Índice

Establecimiento y visualización de ACL en archivos ZFS en formato detallado

El comando chmod es válido para modificar las ACL de archivos ZFS. La sintaxis siguiente del comando chmod para modificar ACL utiliza especificación ACL para identificar el formato de la ACL. Para obtener una descripción de especificación ACL, consulte Descripciones de la sintaxis para definir las ACL.

Para ver en pantalla información de ACL en modo detallado, se utiliza el comando ls -v. Por ejemplo:

# ls -v file.1
-rw-r--r--   1 root     root      206695 Jul 20 13:43 file.1
     0:owner@:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
     2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

Para obtener información sobre el uso del formato de ACL compacto, consulte Establecimiento y visualización de ACL en archivos ZFS en formato compacto.

Ejemplo 7-1 Modificación de ACL triviales en archivos ZFS

En esta sección, se proporcionan ejemplos acerca de la configuración y la visualización de ACL triviales, lo que significa que únicamente las entradas UNIX tradicionales user, group y other se incluyen en la ACL.

En el ejemplo siguiente, en file.1 hay una ACL trivial:

# ls -v file.1
-rw-r--r--   1 root     root      206695 Jul 20 13:43 file.1
     0:owner@:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
     2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

En el ejemplo siguiente, se conceden permisos de write_data para group@.

# chmod A1=group@:read_data/write_data:allow file.1
# ls -v file.1
-rw-rw-r--   1 root     root      206695 Jul 20 13:43 file.1
     0:owner@:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     1:group@:read_data/write_data:allow
     2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

En el ejemplo siguiente, los permisos de file.1 se establecen en 644.

# chmod 644 file.1
# ls -v file.1
-rw-r--r--   1 root     root      206695 Jul 20 13:43 file.1
     0:owner@:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
     2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

Ejemplo 7-2 Establecimiento de ACL no triviales en archivos ZFS

En esta sección se proporcionan ejemplos de establecimiento y visualización de ACL no triviales.

En el ejemplo siguiente, se agregan permisos de read_data/execute para el usuario gozer en el directorio test.dir.

# chmod A+user:gozer:read_data/execute:allow test.dir
# ls -dv test.dir
drwxr-xr-x+  2 root     root           2 Jul 20 14:23 test.dir
     0:user:gozer:list_directory/read_data/execute:allow
     1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/delete_child
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     2:group@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow
     3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

En el ejemplo siguiente, se retiran los permisos de read_data/execute para el usuario gozer.

# chmod A0- test.dir
# ls -dv test.dir
drwxr-xr-x   2 root     root           2 Jul 20 14:23 test.dir
     0:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/delete_child
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     1:group@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow
     2:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

Ejemplo 7-3 Interacción de ACL con permisos en archivos ZFS

Los siguientes ejemplos de ACL ilustran la interacción entre el establecimiento de las ACL y el cambio de los bits de permisos del archivo o el directorio.

En el ejemplo siguiente, en file.2 hay una ACL trivial:

# ls -v file.2
-rw-r--r--   1 root     root        2693 Jul 20 14:26 file.2
     0:owner@:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
     2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

En el siguiente ejemplo, los permisos allow de ACL se eliminan de everyone@.

# chmod A2- file.2
# ls -v file.2
-rw-r-----   1 root     root        2693 Jul 20 14:26 file.2
     0:owner@:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow

En esta salida, los bits de permisos del archivo se restablecen de 644 a 640. Los permisos de lectura de everyone@ se han suprimido de los bits de permisos del archivo cuando se retiran los permisos de LCA de everyone@.

En el ejemplo siguiente, la ACL se reemplaza con permisos de read_data/write_data para everyone@.

# chmod A=everyone@:read_data/write_data:allow file.3
# ls -v file.3
-rw-rw-rw-   1 root     root        2440 Jul 20 14:28 file.3
     0:everyone@:read_data/write_data:allow

En esta salida, la sintaxis de chmod reemplaza la ACL con permisos de read_data/write_data:allow por permisos de lectura/escritura para owner (propietario), group (grupo) y everyone@ (cualquiera). En este modelo, everyone@ especifica acceso a cualquier grupo o usuario. Como no hay entrada de ACL de owner@ o group@ para anular los permisos de propietario y grupo, los bits de permisos se establecen en 666.

En el ejemplo siguiente, la ACL se reemplaza por permisos de lectura para el usuario gozer.

# chmod A=user:gozer:read_data:allow file.3
# ls -v file.3
----------+  1 root     root        2440 Jul 20 14:28 file.3
     0:user:gozer:read_data:allow

En esta salida, los permisos de archivo se calculan que sean 000 porque no hay entradas de ACL para owner@, group@ ni everyone@, que representan los componentes de permisos habituales de un archivo. El propietario del archivo puede solventar esta situación restableciendo los permisos (y la ACL) de la forma siguiente:

# chmod 655 file.3
# ls -v file.3
-rw-r-xr-x   1 root     root        2440 Jul 20 14:28 file.3
     0:owner@:execute:deny
     1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     2:group@:read_data/read_xattr/execute/read_attributes/read_acl
         /synchronize:allow
     3:everyone@:read_data/read_xattr/execute/read_attributes/read_acl
         /synchronize:allow

Ejemplo 7-4 Restauración de ACL triviales en archivos ZFS

Puede utilizar el comando chmod para eliminar todas las ACL no triviales de un archivo o directorio.

En el ejemplo siguiente, hay dos entradas de control de acceso no triviales en test5.dir.

# ls -dv test5.dir
drwxr-xr-x+  2 root     root           2 Jul 20 14:32 test5.dir
     0:user:lp:read_data:file_inherit:deny
     1:user:gozer:read_data:file_inherit:deny
     2:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/delete_child
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     3:group@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow
     4:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

En el ejemplo siguiente, se han eliminado las LCA no triviales de los usuarios gozer and lp. La ACL restante contiene los valores predeterminados de owner@, group@ y everyone@.

# chmod A- test5.dir
# ls -dv test5.dir
drwxr-xr-x   2 root     root           2 Jul 20 14:32 test5.dir
     0:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/delete_child
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     1:group@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow
     2:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

Ejemplo 7-5 Aplicación de un conjunto de ACL en los archivos de ZFS

Los conjuntos de ACL están disponibles, de modo que no es necesario aplicar permisos de ACL por separado. Para obtener una descripción de los conjuntos de ACL, consulte Conjuntos de LCA de ZFS.

Por ejemplo, puede aplicar read_set como se indica a continuación:

# chmod A+user:otto:read_set:allow file.1
# ls -v file.1
-r--r--r--+  1 root     root      206695 Jul 20 13:43 file.1
     0:user:otto:read_data/read_xattr/read_attributes/read_acl:allow
     1:owner@:read_data/read_xattr/write_xattr/read_attributes
         /write_attributes/read_acl/write_acl/write_owner/synchronize:allow
     2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
     3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

Puede aplicar write_set y read_set como se indica a continuación:

# chmod A+user:otto:read_set/write_set:allow file.2
# ls -v file.2
-rw-r--r--+  1 root     root        2693 Jul 20 14:26 file.2
     0:user:otto:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl:allow
     1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
     3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

Establecimiento de herencia de LCA en archivos ZFS en formato detallado

Puede determinar la forma en que se heredan o no las ACL en archivos o directorios. De forma predeterminada, las LCA no se propagan. Si en un directorio se establece una ACL no trivial, no se heredará en ningún directorio posterior. Debe especificar la herencia de una LCA en un archivo o directorio.

La propiedad aclinherit se puede establecer de manera global en un sistema de archivos. De manera predeterminada, la propiedad aclinherit está establecida en restricted.

Para obtener más información, consulte Herencia de ACL.

Ejemplo 7-6 Concesión de herencia de ACL predeterminada

De forma predeterminada, las ACL no se propagan por una estructura de directorios.

En el ejemplo siguiente, se aplica una entrada de control de acceso no trivial de read_data/write_data/execute para el usuario gozer en test.dir.

# chmod A+user:gozer:read_data/write_data/execute:allow test.dir
# ls -dv test.dir
drwxr-xr-x+  2 root     root           2 Jul 20 14:53 test.dir
     0:user:gozer:list_directory/read_data/add_file/write_data/execute:allow
     1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/delete_child
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     2:group@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow
     3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

Si se crea un subdirectorio de test.dir, no se propaga la entrada de control de acceso del usuario gozer. El usuario gozer sólo dispondrá de acceso a sub.dir si se le conceden permisos de acceso de sub.dir como propietario del archivo, miembro del grupo o everyone@.

# mkdir test.dir/sub.dir
# ls -dv test.dir/sub.dir
drwxr-xr-x   2 root     root           2 Jul 20 14:54 test.dir/sub.dir
     0:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/delete_child
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     1:group@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow
     2:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

Ejemplo 7-7 Concesión de herencia de ACL en archivos y directorios

En los ejemplos siguientes se identifican las entradas de control de acceso de archivos y directorios que se aplican al establecerse el indicador file_inherit.

En el ejemplo siguiente, se agregan los permisos read_data/write_data para los archivos del directorio test2.dir para el usuario gozer, de manera que éste disponga de acceso de lectura a cualquier archivo que se cree.

# chmod A+user:gozer:read_data/write_data:file_inherit:allow test2.dir
# ls -dv test2.dir
drwxr-xr-x+  2 root     root           2 Jul 20 14:55 test2.dir
     0:user:gozer:read_data/write_data:file_inherit:allow
     1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/delete_child
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     2:group@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow
     3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

En el ejemplo siguiente, los permisos del usuario de gozer se aplican en el archivo test2.dir/file.2 recién creado. La herencia de LCA concedida, read_data:file_inherit:allow, significa que el usuario gozer puede leer el contenido de cualquier archivo que se cree.

# touch test2.dir/file.2
# ls -v test2.dir/file.2
-rw-r--r--+  1 root     root           0 Jul 20 14:56 test2.dir/file.2
     0:user:gozer:read_data:inherited:allow
     1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
     3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

Como la propiedad aclinherit para este sistema de archivos se establece en el modo predeterminado, restricted, el usuario gozer no dispone del permiso write_data en file.2 porque el permiso de grupo del archivo no lo permite.

El permiso inherit_only, que se concede si se establecen los indicadores file_inherit o dir_inherit, se emplea para propagar la ACL por la estructura de directorios. Así, al usuario gozer sólo se le conceden o deniegan permisos de everyone@, a menos que sea propietario del archivo o miembro del grupo propietario del archivo. Por ejemplo:

# mkdir test2.dir/subdir.2
# ls -dv test2.dir/subdir.2
drwxr-xr-x+  2 root     root           2 Jul 20 14:57 test2.dir/subdir.2
     0:user:gozer:list_directory/read_data/add_file/write_data:file_inherit
         /inherit_only/inherited:allow
     1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/delete_child
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     2:group@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow
     3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

En los ejemplos siguientes se identifican las ACL de archivo y directorio que se aplican si se establecen los indicadores file_inherit y dir_inherit.

En el ejemplo siguiente, al usuario gozer se le conceden permisos de lectura, escritura y ejecución que se heredan para archivos y directorios recientemente creados.

# chmod A+user:gozer:read_data/write_data/execute:file_inherit/dir_inherit:allow 
test3.dir
# ls -dv test3.dir
drwxr-xr-x+  2 root     root           2 Jul 20 15:00 test3.dir
     0:user:gozer:list_directory/read_data/add_file/write_data/execute
         :file_inherit/dir_inherit:allow
     1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/delete_child
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     2:group@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow
     3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

El texto inherited en el resultado que se muestra a continuación es un mensaje informativo que indica que la ACE es heredada.

# touch test3.dir/file.3
# ls -v test3.dir/file.3
-rw-r--r--+  1 root     root           0 Jul 20 15:01 test3.dir/file.3
     0:user:gozer:read_data:inherited:allow
     1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
     3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

En los ejemplos anteriores, debido a que los bits de permisos del directorio principal para group@ y everyone@ deniegan permisos de escritura y ejecución, se le deniegan al usuario gozer permisos de escritura y ejecución. El valor predeterminado de la propiedad aclinherit es restricted, lo cual significa que no se heredan los permisos write_data y execute.

En el siguiente ejemplo, al usuario gozer se le conceden derechos de lectura, escritura y ejecución que se heredan para archivos recientemente creados pero que no se propagan por el resto del directorio.

# chmod A+user:gozer:read_data/write_data/execute:file_inherit/no_propagate:allow 
test4.dir
# ls -dv test4.dir
drwxr--r--+  2 root     root           2 Mar  1 12:11 test4.dir
     0:user:gozer:list_directory/read_data/add_file/write_data/execute
         :file_inherit/no_propagate:allow
     1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/delete_child
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     2:group@:list_directory/read_data/read_xattr/read_attributes/read_acl
         /synchronize:allow
     3:everyone@:list_directory/read_data/read_xattr/read_attributes/read_acl
         /synchronize:allow

Como se ilustra en el siguiente ejemplo, los permisos read_data/write_data/execute de gozer se reducen en función de los permisos del grupo propietario.

# touch test4.dir/file.4
# ls -v test4.dir/file.4
-rw-r--r--+  1 root     root           0 Jul 20 15:09 test4.dir/file.4
     0:user:gozer:read_data:inherited:allow
     1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
     3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

Ejemplo 7-8 Herencia de ACL con el modo ACL heredado establecido en passthrough

Si la propiedad aclinherit del sistema de archivos tank/cindy se establece en passthrough, el usuario gozer hereda la ACL que se aplica a test5.dir para el archivo recién creado file.4 de la manera que se indica a continuación:

# zfs set aclinherit=passthrough tank/cindy
# touch test4.dir/file.5
# ls -v test4.dir/file.5
-rw-r--r--+  1 root     root           0 Jul 20 14:16 test4.dir/file.5
     0:user:gozer:read_data/write_data/execute:inherited:allow
     1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
     3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

Ejemplo 7-9 Herencia de ACL con el modo de herencia de ACL establecido en Discard

Si la propiedad aclinherit de un sistema de archivos se establece en discard, las ACL se pueden descartar si cambian los bits de permisos en un directorio. Por ejemplo:

# zfs set aclinherit=discard tank/cindy
# chmod A+user:gozer:read_data/write_data/execute:dir_inherit:allow test5.dir
# ls -dv test5.dir
drwxr-xr-x+  2 root     root           2 Jul 20 14:18 test5.dir
     0:user:gozer:list_directory/read_data/add_file/write_data/execute
         :dir_inherit:allow
     1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/delete_child
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     2:group@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow
     3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

Si, posteriormente, decide restringir los bits de permisos de un directorio, se prescinde de la ACL no trivial. Por ejemplo:

# chmod 744 test5.dir
# ls -dv test5.dir
drwxr--r--   2 root     root           2 Jul 20 14:18 test5.dir
     0:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/delete_child
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     1:group@:list_directory/read_data/read_xattr/read_attributes/read_acl
         /synchronize:allow
     2:everyone@:list_directory/read_data/read_xattr/read_attributes/read_acl
         /synchronize:allow

Ejemplo 7-10 Herencia de ACL con el modo de herencia de ACL establecido en nonallow

En este ejemplo se establecen dos ACL no triviales con herencia de archivos. Una ACL concede el permiso read_data y una ACL deniega el permiso read_data. Asimismo, el ejemplo muestra la manera de especificar dos entradas de control de acceso en el mismo comando chmod.

# zfs set aclinherit=noallow tank/cindy
# chmod A+user:gozer:read_data:file_inherit:deny,user:lp:read_data:file_inherit:allow 
test6.dir
# ls -dv test6.dir
drwxr-xr-x+  2 root     root           2 Jul 20 14:22 test6.dir
     0:user:gozer:read_data:file_inherit:deny
     1:user:lp:read_data:file_inherit:allow
     2:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/delete_child
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     3:group@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow
     4:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

Como se indica en el ejemplo siguiente, al crear un archivo, se prescinde de la ACL que concede el permiso read_data.

# touch test6.dir/file.6
# ls -v test6.dir/file.6
-rw-r--r--+  1 root     root           0 Jul 20 14:23 test6.dir/file.6
     0:user:gozer:read_data:inherited:deny
     1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
     3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow