==== Configurar permisos predeterminados al crear archivos / carpetas (ACLs en GNU/Linux) ====
GNU/Linux no está limitado únicamente a permisos sobre un solo usuario y grupo, cuando el sistema de archivos ha sido montado con la opción acl, es posible asignar permisos de lectura, escritura y ejecución por usuarios y/o grupos de una forma más granulada. También es posible establecer permisos predeterminados para ficheros en determinados directorios. El soporte de ACLs viene habilitado de modo predeterminado en Arch, CentOS, Fedora™, Red Hat™ Enterprise Linux, openSUSE™ y SUSE™ Linux Enterprise.
# En el fichero /etc/fstab se puede usar la opción acl. Pero suele estar activada de manera predeterminada. Para desactivar las ACLs se dispone de la opción "noacl".
# Linea de comandos
mount -o remount,acl,user_xattr /
mount -o remount,acl,user_xattr /var
Los ACLs se pueden configurar:
* Por usuario.
* Por grupo.
* A través de la máscara de derechos efectivos.
* Para usuarios que no estén en el grupo de usuarios para el archivo.
**getfacl**: Consulta las ACLs de un fichero / directorio.
**setfacl**: Crea / modificar ACLs de un fichero dado.
NOTA: Si el fichero es borrado por root y luego se genera otro con el mismo nombre, este no mantendrá la ACL, lo mismo pasaría si se usara el comando mv. Pero si por el contrario fue sobrescrito con cp, este mantendrá activa la ACL.
==== Formato de entrada ====
Permisos por usuario, si no especifican usa los del propietario.
[d[efault]:] [u[ser]:]uid [:perms]
Permisos por grupo, si no especifican usa los del grupo de propietario.
[d[efault]:] g[roup]:gid [:perms]
Permisos para los otros.
[d[efault]:] o[ther][:] [:perms]
Máscara: Configura la máscara de derechos efectivos. La máscara por defecto es la unión de todos los permisos del grupo propietario y todas las entradas del usuario y grupo. Si la máscara es modificada y tiene unos permisos más restrictivos que los permisos de usuario y grupo, la máscara tiene prioridad. Si esto sucediera, al usar "getfacl" se indicarían los permisos efectivos mediante "effective:r--" (ej. solo lectura).
[d[efault]:] m[ask][:] [:perms]
Si no se especifica usuario o grupo es como si se definieran los dos, los permisos establecidos serán tanto para usuario como para grupo. Se pueden establecer varias definiciones separadas por comas. el uid / gid se puede especificar por su número o bien por el nombre.
NOTA: La máscara define los privilegios efectivos para usuario y grupo, si se estableció lectura y escritura anteriormente pero la máscara define solo lectura, el permiso de escritura queda anulado. Lo definido en la máscara es sobrescrito cada vez que se modifica un privilegio en grupo o usuario, por lo que debe usarse siempre al final. Al ejecutar el comando "//getfalc//" podremos ver la sección "effective", ahí se ve los permisos efectivos que se tienen, de no tener ninguno es señal de configuraciones sin sentido.
==== setfacl opciones ====
***-b** Borra todas las ACL.
***-x** Borra una ACL en concreto (No se le especifican permisos).
***-k** Borra la ACL por defecto.
***-m** Modifica una ACL.
***-M** Modifica una ACL leyendo de la entrada estándar a un fichero.
***-s** Sobrescribe una ACL.
***-R** Aplicar los cambios de forma recursiva (subdirectorios). Se puede usar como método para hacer backups.
***-d** Los nuevos ficheros y directorios de un carpeta configurada con una ACL la heredarán.
***-L**, **--logical** Sigue enlaces simbólicos.
***-P**, **--physical** No sigue enlaces simbólicos.
==== getflacl opciones ====
***-a** Muestra la ACL.
***-d** Muestra la ACL predeterminada (Directorios).
***-t** Muestra la información de forma tabulada.
***-n** Muestra los números UID / GID en vez de los nombres.
***-c** No muestra las tres primeras lineas comentadas con "#".
***-R** Recursividad (subdirectorios).
***--restore=backup** Restaura un backup de ACL generado con getflacl -R
NOTA: Con predeterminado se refiere a los privilegios que se establecerán automáticamente al crear dentro de esos directorios ficheros o carpetas.
setfacl -R -m g:jasmin:w prueba/prueba1/fichero2
ls -lt prueba/prueba1/fichero2
-rw-rw-r--+ 1 root root 39 Okt 12 23:30 prueba/prueba1/fichero2
getfacl prueba/prueba1/fichero2
file: prueba/prueba1/fichero2
# owner: root
# group: root
user::rw-
group::r--
group:jasmin:-w-
mask::rw-
other::r--
NOTA: Para personalizar el GID predeterminado al crear ficheros / directorios en GNU/Linux se puede usar el SGID ([[control_de_usuarios_grupos_y_permisos_en_linux|Leer]]).
==== Establecer en un directorio y sus ficheros ACLs predeterminadas ====
Estos dos comandos hacen lo mismo.
setfacl -R -d -m u:games:x prueba
setfacl -R -m d:u:games:x prueba
==== Acceso de lectura para el usuario lisa ====
setfacl -m u:lisa:r file
==== Eliminando el permiso de lectura anteriormente establecido mediante máscara ====
No se especifica usuario ni grupo.
setfacl -m m::rx file
==== Eliminando la ACL del grupo jasmin y la máscara ====
setfacl -x g:jasmin file
setfacl -x m:: file
==== Copiando las ACL de un fichero y aplicándolas a otro ====
getfacl file1 | setfacl --set-file=- file2
==== Copia las ACLs de un directorio y las establece como predeterminadas en otro ====
getfacl --access dir | setfacl -d -M- dir
==== Crear backup de una carpeta (también su contenido) y restablecerlo posteriormente ====
getfacl -R dir > ACLbackup
setfacl --restore= ACLbackup
==== Configuración de máscara sin sentido (effective:---) ====
getfacl -c prueba/caca3
user::rw-
user:games:r-- #effective:---
group::r-- #effective:---
mask::--x
other::r--
==== Otra herramienta de interés complementaria a ACL ====
**Recomendación de interés en relación al post**: [[http://linux.die.net/man/1/chattr|chattr]]
**Enlace de interés**.
* [[control_de_usuarios_grupos_y_permisos_en_linux|Control de usuarios grupos y permisos en GNU/linux]]