Table of Contents
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 (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--