¿Por qué necesitamos ACL?
Cada archivo en cualquier sistema de archivos UNIX tendrá un propietario/grupo y un conjunto de permisos. Imagine un caso en el que varios usuarios necesitan acceder al mismo archivo y los usuarios son de diferentes grupos. Las listas de control de acceso a archivos (FACL) o simplemente ACL son la lista de usuarios/grupos adicionales y su permiso para el archivo.
Cómo saber cuándo un archivo tiene una ACL adjunta
Es muy fácil saber cuándo un archivo tiene una ACL adjunta. ls-l El comando produciría una salida como se muestra a continuación.
# ls -l -rw-r--r-+ 1 root root 0 Sep 19 14:41 file
Tenga en cuenta el + firmar al final de los permisos. Esto confirma que el archivo tiene una ACL adjunta.
Ver ACL
Para mostrar información detallada de ACL de un archivo, utilice getfacl dominio.
# getfacl /tmp/test # file: test # owner: root # group: root user::rw- user:john:rw- user:sam:rwx group::r-- mask::rwx other:---
Observe los 3 usuarios: diferentes líneas. La primera línea enumera los permisos de archivo estándar del propietario del archivo. Los otros 2 permisos de usuario son el permiso individual para el usuario john y sam. El campo de máscara aquí solo se aplica a los permisos adicionales que hemos otorgado al usuario y a los grupos. Si la máscara se establece en rwx, los permisos de lectura, escritura y ejecución se otorgarán a usuarios/grupos adicionales. Si la máscara se establece en r-x, el permiso de escritura no se otorgará a usuarios/grupos adicionales. En general, NO establezca la máscara en cualquier otra cosa que no sea rwx. El valor de la máscara no afecta los permisos estándar de usuario/grupo/otros de UNIX.
Archivo sin ACL
Si ejecuta el comando getfacl en un archivo sin ACL, las líneas adicionales "usuario:" y "máscara" no se mostrarán y se mostrarán los permisos de archivo estándar.
# getfacl test # file: test # owner: root # group: root user::rw- group::r-- other::r--
Creación y administración de FACL
El setfacl El comando se usa para establecer ACL en el archivo dado. Para dar acceso rw al usuario john en el archivo /tmp/test :
# setfacl -m u:john:rw /tmp/test
La opción -m le dice a setfacl que modifique las ACL en los archivos mencionados en la línea de comando. En lugar del usuario john, podemos tener un grupo para tener un permiso específico en el archivo:
# setfacl -m g:accounts:rw /tmp/test
Las FACL para múltiples usuarios y grupos también se pueden configurar con un solo comando:
# setfacl -m u:john:rw,g:accounts:rwx /tmp/test
FACL predeterminados en directorios
Las ACL predeterminadas solo se crean en directorios. Cuando establece ACL predeterminadas en los directorios, todos los archivos creados dentro de ese directorio también tendrán esa FACL predeterminada asignada automáticamente.
Para crear una FACL predeterminada en un directorio:
# setfacl -m default:u:john:rw /accounts
# getfacl accounts/ # file: accounts/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:user:john:rw- default:group::r-x default:mask::rwx default:other::r-x
Ahora cree un nuevo archivo en el directorio de cuentas y enumere la FACL en el archivo:
# touch /accounts/test # getfacl test # file: test # owner: root # group: root user::rw- user:john:rw- group::r-x #effective:r-- mask::rw- other::r--
Eliminación de FACL
Para eliminar FACL, use el comando setfacl con la opción -x:
# setfacl -x u:john /tmp/test
El comando anterior elimina la ACL para el usuario john en el archivo /tmp/test. Las ACL para otros usuarios/grupos, si alguno, no se ven afectadas.
Para eliminar todas las ACL asociadas a un archivo, use la opción -b con setfacl :
# setfacl -b /tmp/test
Copia de seguridad de las FACL
Muchas veces, es posible que el software de respaldo no copie los metadatos relacionados con FACL en los archivos. En ese caso, es posible que desee hacer una copia de seguridad de la información FACL en los archivos. Ahora, la FACL de todos los archivos de un directorio (incluidos todos los subdirectorios) se puede copiar en un solo archivo.
# cd /accounts # getfacl -R * > accounts_facl ( -R -> recursive )
Restauración de las FACL
Cuando restaure los archivos en el directorio /accounts, tendrá que restaurar las FACL asociadas con los archivos en ese directorio. PARA hacerlo, use el archivo de copia de seguridad FACL accounts_facl junto con –restore opción:
# setfacl --restore=accounts_facl