Una de las características que se echan en falta en los sistemas Linux actuales, especialmente en entornos corporativos, es la posibilidad de especificar los permisos de acceso a los ficheros con mayor facilidad. Los sistemas Linux siguen el modelo de permisos Unix tradicional segementando el tipo de acceso en tres categorías:
- El propietario del fichero (User)
- El grupo al que pertenece el fichero (Group)
- El resto de usuarios del sistema que no están en ninguna de las dos categorías anteriores (Other).
también conocido como modelo UGO (User, Group, Other).
Aquí es donde entran en juego los permisos basados en Listas de Control de Acceso, más conocidos como ACLs, lo cual nos permitira definir permisos sobre archivos o carpetas para usuarios que antes no podian acceder a ellos.
Lo primero que debemos hacer es instalar el software:
sudo apt-get install acl
Las utilidades básicas que vamos a usar son getfacl y setfacl, la primera nos permite ver las propiedades acl de carpetas y archivos y la segunda establecerlos.
Caso Practico.
El usuario pepe es la persona que se va a encargar de la pagina web de la empresa, que se encuentra en la carpeta var/www/. Este usuario no tiene acceso via ftp a esta carpeta, por lo que le supondra un problema poder modificar los contenidos de este directorio.
Para solucionar el problema el usuario root hace uso de las ACL y del comando setfacl para asignarle los permisos necesarios para tener aceso de escritura y ejecucion a la carpeta:
setfacl -m u:pepe:rwx /var/html
Para ver las propiedades de dicha carpeta sobre un usuario usamos el comando getfacl:
getfacl /var/www/
getfacl: Removing leading '/' from absolute path names
# file: var/www/
# owner: root
# group: root
user::rwx
user:pepe:rwx
group::r-x
mask::rwx
other::r-x
Para que las acl esten activas la particion donde se encuentran las carpetas anteriores deben estar montadas con acl, por tanto modificamos nuestro archivo fstab y lo dejamos similar a este:
cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/hda1 / ext3 acl,defaults,errors=remount-ro 0 1
/dev/hda6 /home ext3 defaults 0 2
/dev/hda5 none swap sw 0 0
/dev/hdb /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
Para activar acl en fstab hay que reiniciar, sino queremos hacerlo inmediatamente podemos desmontar y montar con acl asi:
mount -o remount,acl /dev/hda1 (siendo hda1 la particion que ejecutara las acl)