Cómo administrar ACL de Linux usando 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.