2011-03-30

Listas de Control de Acceso a los Directorios y Archivos

Ya todos conocemos los permisos sobre los usuarios, los grupos y otros que se manejan en Linux y que nos dan la opción de permitir o denegar la lectura, escritura y ejecución sobre cada uno de los archivos que tenemos en el sistema.

Estos los identificamos con las letras rwx que se ven en la consola así

root@localhost:~# ls -l file
-rwxrw-r-- 1 root root 125 2011-03-30 file

Lo que tenemos en el ejemplo es un archivo llamado file perteneciente al usuario y grupo root, cuya última modificación fue el 30 de marzo de 2011, y los permisos son:
Usuario: rwx --> Lectura (r) - Escritura (w) - Ejecución (x)
Grupo: rw-  --> Lectura (r) - Escritura (w)
Otros: r-- --> Lectura (r)

Pero adicionalmente a estos existe en Linux la posibilidad de asignar permisos especiales  y específicos para un usuario o para un grupo, estos son denominados acl (listas de acceso).

Para poder configurar las listas de acceso es necesarios dos pasos en el sistema previos a habilitar estos permisos especiales, el primero es instalar el paquete y el segundo es permitir que la partición los use, esto se hace así:

Instalar paquete:
root@localhost:~# apt-get -y install acl

Permitir su uso en la partición:
En el archivo /etc/fstab adicionamos el permiso acl a la partición donde se van a usar los permisos, de la siguiente forma

# /home was on /dev/sda6 during installation
UUID=77a5-4327-a1ee-7d80e97fdf47 /home           ext4    defaults,acl        0       2

Para que este cambio se realice podemos o reiniciar el sistema o remontar la partición, si no tienen practica para remontar particiones les recomiendo reiniciar.

Una vez hacemos estos dos pasos ya podemos revisar los permisos especiales sobre un archivo con el comando getfacl, de la siguiente forma



Bueno ahora le daremos el permiso a un usuario (para el ejemplo root) que pueda leer y escribir este archivo pero únicamente a este usuario, esto se hace con el comando que tiene la siguiente estructura

setfacl -m [usuario-grupo]:[nombre usuario-grupo]:[permisos] archivo

que para el ejemplo sería así

user@localhost:~$ setfacl -m u:root:rw APU.xls

Una vez se aplica este permiso podemos ver como este usuario tiene permisos especiales y únicos sobre este archivo


Así puedes crear permisos especiales y específicos para archivos y directorios, para ver mas opciones te aconsejo ver el man de este comando.

Si quieres eliminar todos los permisos especiales sobre un archivo ejecutas el siguiente comando

user@localhost:~$ setfacl -b file

Con esto ya eliminas todos los permisos especiales configurados 

Espero le sirva y quede claro, es un tema muy extenso pero esta es la base