Gestión de sistemas de archivos ZFS en Oracle® Solaris 11.2

Salir de la Vista de impresión

Actualización: Diciembre de 2014
 
 

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.

  • Agregación de entradas de ACL

    • Agregación de una entrada de ACL para un usuario

      % chmod A+acl-specification filename
    • Agregación de una entrada de ACL mediante index-ID

      % chmod Aindex-ID+acl-specification filename

      Esta sintaxis inserta la nueva entrada de ACL en la ubicación de index-ID que se especifica.

  • Sustitución de una entrada de ACL

    % chmod A=acl-specification filename
    % chmod Aindex-ID=acl-specification filename
  • Eliminación de entradas de ACL

    • Eliminación de una entrada de ACL mediante index-ID

      % chmod Aindex-ID- filename
    • Eliminación de una entrada de ACL por usuario

      % chmod A-acl-specification filename
    • Eliminación de todas las entradas de control de acceso no triviales de un archivo

      % chmod A- filename

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 joe en el directorio test.dir.

# chmod A+user:joe: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:joe: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 joe.

# 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 joe.

# chmod A=user:joe:read_data:allow file.3
# ls -v file.3
----------+  1 root     root        2440 Jul 20 14:28 file.3
0:user:joe: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:joe: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 ACL no triviales de los usuarios joe y 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:bob:read_set:allow file.1
# ls -v file.1
-r--r--r--+  1 root     root      206695 Jul 20 13:43 file.1
0:user:bob: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:bob: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:bob: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