LINUX

Cómo administrar ACL de Linux usando Setfacl y Getfacl

comandos linux setfacl y getfacl

El comando de Linux setfacl permite a los usuarios establecer listas de control de acceso extensas en archivos y directorios. Normalmente, usando el comando chmod, podrá establecer permisos para el propietario / grupo / otros. Pero, en caso de que también necesite proporcionar permisos de archivo para otros usuarios, eso no se puede hacer usando chmod. Setfacl le ayudará a deshacerse de estos problemas.

Por ejemplo, no podemos configurar diferentes conjuntos de permisos para diferentes usuarios en el mismo directorio o archivo. Por lo tanto, se implementaron listas de control de acceso (ACL). Puede ver el conjunto de ACL actual en archivos y directorios mediante el comando getfacl.

Para usar setfacl en un archivo / directorio, el sistema de archivos residente debe tener habilitado el soporte acl. Si el sistema de archivos no admite acl, obtendrá el error «operación no admitida». En ese caso, debe agregar soporte acl al sistema de archivos en / etc / fstab de la siguiente manera y luego volver a montar el sistema de archivos.

Compruebe si el kernel tiene soporte ACL

Ejecute el siguiente comando para verificar la compatibilidad con ACL para el sistema de archivos y la opción POSIX_ACL = Y (si hay N en lugar de Y, significa que Kernel no admite ACL y debe recompilarse).

root@linoxide:/home# grep -i acl /boot/config*
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_GENERIC_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_HFSPLUS_FS_POSIX_ACL=y
CONFIG_F2FS_FS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_CIFS_ACL=y
CONFIG_9P_FS_POSIX_ACL=y

Comprobando si el sistema de archivos es compatible con ACL

Puedes probar esto con:

$ cat /etc/fstab

En algunos sistemas, mirar fstab no le mostrará si el sistema de archivos es compatible con acl, sino que solo mostrará «valores predeterminados» como opciones de montaje:

root@linoxide:/home# cat /etc/fstab
LABEL=cloudimg-rootfs	/	 ext4	defaults	0 0

En ese caso, puede usar el siguiente comando para verificar si el sistema de archivos está montado con soporte acl:

root@linoxide:/home# tune2fs -l /dev/sda1
tune2fs 1.42.9 (4-Feb-2014)
Filesystem volume name:   cloudimg-rootfs
Last mounted on:          /
Filesystem UUID:          2e294961-ce03-483e-a53e-ff3fc4514bd4
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl

Si su sistema de archivos no ha sido montado con la opción ‘acl’, puede volver a montarlo dando la opción necesaria:

# mount -o remount -o acl /dev/sda1

Verifique los paquetes requeridos

Para utilizar las ACL de Linux, asegúrese de tener instalados los paquetes necesarios. A continuación se muestran los paquetes requeridos que deben instalarse usando yum o apt-get.

Para sistemas basados ​​en RedHat:

$ sudo yum install nfs4-acl-tools acl libacl

Para basado en Debian:

$ sudo apt-get install nfs4-acl-tools acl

Ahora podemos pasar por varios usos de «setfacl«Comando. En primer lugar, deberíamos crear una carpeta llamada “test_folder” como usuario root.

root@linoxide:/home# mkdir test_folder

root@linoxide:/home# getfacl test_folder/
# file: test_folder/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

1. Proporcionar ACL para un usuario individual

Supongamos que desea otorgar acceso completo al usuario «prueba» (puede ser cualquier usuario) en el directorio «carpeta_prueba». Esto se puede hacer usando setfacl como sigue.

root@linoxide:/home# setfacl -m u:test:rwx test_folder/

root@linoxide:/home# getfacl test_folder/
# file: test_folder/
# owner: root
# group: root
user::rwx
user:test:rwx
group::r-x
mask::rwx
other::r-x

2. Proporcionar ACL para todos los usuarios de un grupo

Si desea otorgar permiso de acceso de escritura a todos los usuarios del grupo «testg”A la carpeta“ test_folder ”, puede hacerlo de la siguiente manera.

root@linoxide:/home# setfacl -m g:testg:w test_folder/
  
root@linoxide:/home# getfacl test_folder/
# file: test_folder/
# owner: root
# group: root
user::rwx
user:test:rwx
group::r-x
group:testg:-w-
mask::rwx
other::r-x

3. Revocación de la LCA de un usuario o grupo

Si desea revocar los permisos que le hemos otorgado al usuario prueba y el grupo testg, puedes usar setfacl comando de la siguiente manera.

root@linoxide:/home# setfacl -x u:test,g:testg test_folder/

root@linoxide:/home# getfacl test_folder/
# file: test_folder/
# owner: root
# group: root
user::rwx
group::r-x
mask::rwx
other::r-x

4. Copiar ACL de un archivo / directorio a otro

Supongamos que también desea tener el mismo conjunto de ACL de test_folder en test_folder1, puede configurarlo copiando el ACL de la siguiente manera.

root@linoxide:/home# getfacl test_folder/ > acl.txt
root@linoxide:/home# mkdir test_folder1
root@linoxide:/home# setfacl -M acl.txt test_folder1/
root@linoxide:/home# getfacl test_folder1/
# file: test_folder1/
# owner: root
# group: root
user::rwx
user:test:rwx
group::r-x
group:testg:-w-
mask::rwx
other::r-x

Conclusión

En este tutorial, hemos visto el uso básico de las herramientas getfacl y setfacl para las listas de control de acceso para establecer y revocar algunos permisos a test_folder. También aprendimos cómo verificar el soporte acl del kernel y del sistema de archivos y cómo instalar los paquetes requeridos. Si tiene alguna idea o comentario sobre linux acl, escríbalo en la sección de comentarios a continuación.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar