User Tools

Site Tools


linux:acl

This is an old revision of the document!


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 mask::rwx test
# y luego ponemos la máscara por defecto
setfacl -d -m mask::rwx test
linux/acl.1290123404.txt.gz · Last modified: 2022/12/02 22:02 (external edit)