This is an old revision of the document!
Table of Contents
ACL's en Linux
Como todo lo que se supone que es fácil al final no lo es, pues vamos a explicar lo que he recogido de aquí y de ahí sobre acl's en linux.
Qué son
Pues algo que seguramente habías necesitado muchas veces: por ejemplo, cuando queremos crear un directorio al que juan
tiene permisos de lectura y ejecución y pedro
los tiene de lectura, escritura y ejecución. O queremos crear un usuario backup
que tenga acceso a todo el disco duro, pero no queremos que se ejecute como root. ¿complicado, eh?? Con acl's es muy fácil, ya que especificamos los ficheros tal y como se describe aquí.
Hello. I was browsing the 0 replies thread and though I might give this a go. If you are absolutely certain that you have complied ACLs into your kernel and are still getting this error: setfacl: test: Operation not supported then check your /etc/fstab. For ACLs to work you have to mount whatever partition you want with the option acl. As an example, notice /home: LABEL=/ / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 LABEL=/home /home ext3 rw,acl 1 2 I hope this helps, that is if you haven't already solved this. Good luck.
Un ejemplo clásico
Vamos a realizar el ejemplo más clasico: tenemos un conjunto de carpetas que tienen asignado un usuario y grupo concreto, que en nuestro ejemplo es santiago:santiago, y queremos que además el usuario/grupo mediatomb/mediatomb tenga acceso, y que todo el contenido nuevo que cree santiago, sea por defecto accesible por mediatomb.
Mi estructura de directorios para este ejemplo:
test +--- uno | +--- primero +--- dos | +--- segundo +--- tres +--- tercero
Primero, segundo y tercero son ficheros, y uno, dos y tres son directorios. Todos tienen como único propietario “santiago:santiago”. Vamos a añadir los comandos necesarios para que además sean visibles por el usuario mediatomb:mediatomb y además, a partir de ahora, todos los nuevos ficheros se comporten igual.
Para ello, añadimos los permisos (recursivamente) para el nuevo usuario y el nuevo grupo:
# primero ponemos permisos de lectura y ejecución para el grupo setfacl -R -m g:mediatomb:rx test # y luego ponemos permisos de lectura y ejecución para el usuario setfacl -R -m u:mediatomb:rx test
A continuación podemos comprobar que la operación se ha ejecutado, ejecutando getfacl
para comprobar el resultado:
root:/data# getfacl test/uno # file: test/ # owner: santiago # group: santiago user::rwx user:mediatomb:r-x group::r-x group:mediatomb:r-x mask::r-x other::r-x
El último paso consiste en establecer qué va a pasar a partir de ahora con los ficheros y directorios nuevos que se creen. Eso se define con las ACL's por defecto. Se establecen de la misma forma, pero usando la opción -d
en la llamada al comando, y no se aplicarán recursivamente: se coge la que esté disponible.
# a partir de ahora, todos los ficheros nuevos tendrán # permisos de lectura y ejecución para el grupo "mediatomb" setfacl -d -m g:mediatomb:rx test # y también para el usuario "mediatomb" setfacl -d -m u:mediatomb:rx test
A continuación hemos creado un directorio llamado “cuatro” con un fichero llamado “cuarto”. Veamos si el usuario mediatomb tiene permisos:
root:/data/test/cuatro# getfacl cuarto # file: cuarto # owner: root # group: root user::rw- user:mediatomb:r-x #effective:r-- group::r-x #effective:r-- group:mediatomb:r-x #effective:r-- mask::r-- other::r--
Efectivamente, tiene permisos.
Las máscaras
Puede que el ejemplo anterior no funcione. Eso es debido a lo que se llaman “mascaras”: se trata de una especificación que limita a qué es aplicable una acl.
Lo mejor poner como máscara rwx, para que los permisos a aplicar sean los que definamos. Eso se hace con este comando:
# primero ponemos la mascara del directorio setfacl -R -m m::rwx test # y luego ponemos la máscara por defecto setfacl -d -m m::rwx test