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

Salir de la Vista de impresión

Actualización: Diciembre de 2014
 
 

Ejemplos de delegación de permisos de ZFS

Ejemplo 8-1  Delegación de permisos a un determinado usuario

Cuando delega permisos de create y mount a un usuario individual, debe asegurarse de que el usuario disponga de permisos en el punto de montaje subyacente.

Por ejemplo, para delegar al usuario mark los permisos create y mount en el sistema de archivos tank, primero defina los permisos:

# chmod A+user:mark:add_subdirectory:fd:allow /tank/home

A continuación, utilice el comando zfs allow para delegar los permisos create , destroy y mount. Por ejemplo:

# zfs allow mark create,destroy,mount tank/home

El usuario mark ahora puede crear sus propios sistemas de archivos en el sistema de archivos tank/home. Por ejemplo:

# su mark
mark$ zfs create tank/home/mark
mark$ ^D
# su lp
$ zfs create tank/home/lp
cannot create 'tank/home/lp': permission denied
Ejemplo 8-2  Delegación de los permisos create y destroy en un grupo.

El siguiente ejemplo muestra cómo configurar un sistema de archivos de forma que cualquier integrante del grupo staff pueda crear y montar sistemas de archivos en el sistema de archivos tank/home, así como destruir sus propios sistemas de archivos. Sin embargo, los miembros de grupo staff no pueden destruir los sistemas de archivos de otra persona.

# zfs allow staff create,mount tank/home
# zfs allow -c create,destroy tank/home
# zfs allow tank/home
---- Permissions on tank/home ----------------------------------------
Create time permissions:
create,destroy
Local+Descendent permissions:
group staff create,mount
# su cindy
cindy% zfs create tank/home/cindy/files
cindy% exit
# su mark
mark% zfs create tank/home/mark/data
mark% exit
cindy% zfs destroy tank/home/mark/data
cannot destroy 'tank/home/mark/data': permission denied
Ejemplo 8-3  Delegación de permisos en el nivel correcto del sistema de archivos

Compruebe que conceda permisos a los usuarios en el nivel correcto del sistema de archivos. Por ejemplo, se delegan al usuario mark los permisos create, destroy y mount para los sistemas de archivos local y descendiente. Se delega al usuario mark permiso local para crear una instantánea del sistema de archivos tank/home, pero no puede crear una instantánea de su propio sistema de archivos. Así pues, no se le ha delegado el permiso snapshot en el nivel correcto del sistema de archivos.

# zfs allow -l mark snapshot tank/home
# zfs allow tank/home
---- Permissions on tank/home ----------------------------------------
Create time permissions:
create,destroy
Local permissions:
user mark snapshot
Local+Descendent permissions:
group staff create,mount
# su mark
mark$ zfs snapshot tank/home@snap1
mark$ zfs snapshot tank/home/mark@snap1
cannot create snapshot 'tank/home/mark@snap1': permission denied

Para delegar al usuario mark permiso en el nivel de sistema de archivos descendiente, utilice la opción zfs allow –d. Por ejemplo:

# zfs unallow -l mark snapshot tank/home
# zfs allow -d mark snapshot tank/home
# zfs allow tank/home
---- Permissions on tank/home ----------------------------------------
Create time permissions:
create,destroy
Descendent permissions:
user mark snapshot
Local+Descendent permissions:
group staff create,mount
# su mark
$ zfs snapshot tank/home@snap2
cannot create snapshot 'tank/home@snap2': permission denied
$ zfs snapshot tank/home/mark@snappy

El usuario mark ahora solo puede crear una instantánea por debajo del nivel de sistema de archivos tank/home.

Ejemplo 8-4  Definición y uso de permisos delegados complejos

Puede delegar permisos a usuarios o grupos. Por ejemplo, el siguiente comando zfs allow delega determinados permisos al grupo staff. Asimismo, se delegan los permisos destroy y snapshot una vez creados los sistemas de archivos en tank/home.

# zfs allow staff create,mount tank/home
# zfs allow -c destroy,snapshot tank/home
# zfs allow tank/home
---- Permissions on tank/home ----------------------------------------
Create time permissions:
create,destroy,snapshot
Local+Descendent permissions:
group staff create,mount

Debido a que el usuario mark es miembro del grupo staff, puede crear sistemas de archivos en tank/home. Además, el usuario mark puede crear una instantánea de tank/home/mark2 porque dispone de los permisos correspondientes para hacerlo. Por ejemplo:

# su mark
$ zfs create tank/home/mark2
$ zfs allow tank/home/mark2
---- Permissions on tank/home/mark2 ----------------------------------
Local permissions:
user mark create,destroy,snapshot
---- Permissions on tank/home ----------------------------------------
Create time permissions:
create,destroy,snapshot
Local+Descendent permissions:
group staff create,mount

Sin embargo, el usuario mark no puede crear una instantánea de tank/home/mark porque carece de los permisos correspondientes para hacerlo. Por ejemplo:

$ zfs snapshot tank/home/mark@snap1
cannot create snapshot 'tank/home/mark@snap1': permission denied

En este ejemplo, el usuario mark tiene el permiso create en el directorio principal, lo que significa que puede crear instantáneas. Esta situación hipotética es útil si el sistema de archivos está montado por NFS.

$ cd /tank/home/mark2
$ ls
$ cd .zfs
$ ls
shares snapshot
$ cd snapshot
$ ls -l
total 3
drwxr-xr-x   2 mark    staff          2 Sep 27 15:55 snap1
$ pwd
/tank/home/mark2/.zfs/snapshot
$ mkdir snap2
$ zfs list
# zfs list -r tank/home
NAME                    USED  AVAIL  REFER  MOUNTPOINT
tank/home/mark           63K  62.3G    32K  /tank/home/mark
tank/home/mark2          49K  62.3G    31K  /tank/home/mark2
tank/home/mark2@snap1    18K      -    31K  -
tank/home/mark2@snap2      0      -    31K  -
$ ls
snap1  snap2
$ rmdir snap2
$ ls
snap1
Ejemplo 8-5  Definición y uso de un conjunto de permisos delegados de ZFS

En el ejemplo siguiente se muestra cómo crear un conjunto de permisos @myset y se delega el grupo de permisos rename al grupo staff para el sistema de archivos tank. El usuario cindy, miembro del grupo staff, tiene permiso para crear un sistema de archivos en tank. Sin embargo, el usuario lp no tiene permiso para crear un sistema de archivos en tank.

# zfs allow -s @myset create,destroy,mount,snapshot,promote,clone,readonly tank
# zfs allow tank
---- Permissions on tank ---------------------------------------------
Permission sets:
@myset clone,create,destroy,mount,promote,readonly,snapshot
# zfs allow staff @myset,rename tank
# zfs allow tank
---- Permissions on tank ---------------------------------------------
Permission sets:
@myset clone,create,destroy,mount,promote,readonly,snapshot
Local+Descendent permissions:
group staff @myset,rename
# chmod A+group:staff:add_subdirectory:fd:allow tank
# su cindy
cindy% zfs create tank/data
cindy% zfs allow tank
---- Permissions on tank ---------------------------------------------
Permission sets:
@myset clone,create,destroy,mount,promote,readonly,snapshot
Local+Descendent permissions:
group staff @myset,rename
cindy% ls -l /tank
total 15
drwxr-xr-x   2 cindy   staff          2 Jun 24 10:55 data
cindy% exit
# su lp
$ zfs create tank/lp
cannot create 'tank/lp': permission denied