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:
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.
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.
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).
Estos dos comandos hacen lo mismo.
setfacl -R -d -m u:games:x prueba setfacl -R -m d:u:games:x prueba
setfacl -m u:lisa:r file
No se especifica usuario ni grupo.
setfacl -m m::rx file
setfacl -x g:jasmin file setfacl -x m:: file
getfacl file1 | setfacl --set-file=- file2
getfacl --access dir | setfacl -d -M- dir
getfacl -R dir > ACLbackup setfacl --restore= ACLbackup
getfacl -c prueba/caca3 user::rw- user:games:r-- #effective:--- group::r-- #effective:--- mask::--x other::r--