#4sysadmins

Inicio » GNU/Linux » ACL

ACL

Últimas Entradas

Follow #4sysadmins on WordPress.com

Implementación de Listas de Control de Acceso en Linux

Sobre las ACL

Una Lista de Control de Acceso es una lista de usuario o grupo y los permisos que tienen asignados sobre determinados archivos o directorios. Una ACL consta de 3 bits al igual que los permisos ordinarios (r, w y x), pero difiere en que no está limitada, bien a un grupo propietario (en el que deberíamos de añadir a todos los usuarios que quisiéramos distinguir del resto de usuarios) o a permisos generales (es decir a todos los usuarios) si no que nos permite que el propietario del archivo pueda asignar diferentes permisos a diferentes grupos o usuarios.

Nota: Para crear una ACL el sistema de archivo debe de tener soporte para esta. Actualmente los principales sistemas de archivos de Linux soportan ACL, pero puede que tenga que recompilar su kernel (o, al menos, el módulo pertinente del kernel) para activar dicha compatibilidad.

Para definir o visualizar ACL estás cuentan con sus propios comandos. Con setfacl podremos definir una ACL y con el comando getfacl podremos mostrar la ACL de un archivo.

¡ AL LÍO !

setfacl : Crea una lista de acceso para un determinado directorio o archivo.

setfacl [opciones] archivo

Vamos a estudiar las Listas de Control de Acceso con un ejemplo práctico.

IMPORTANTE: Antes de crear una lista de acceso, por ejemplo del directorio ‘/home/usuarios/sistemas‘ es conveniente realizar un respaldo de los permisos existentes, para que en caso de que queramos anular la ACL en un futuro, podamos usar este backup.

  • Crear un respaldo de los permisos para /home/usuarios/sistemas
$ getfacl -R /home/usuarios/sistemas > /home/usuarios/Desktop/persistemas.bak
  • Restaurar los permisos de un directorio en caso de que apliquemos una ACL errónea
$ setfacl --restore=permsistemas.bak

De momento vamos a imaginar que tenemos un directorio ‘/home/usuarios/sistemas‘ donde diferentes usuarios pueden acceder, pero en concreto queremos que sea directorio para el grupo de sistemas. Lo primero que vamos a llevar a cabo antes de implementar ACL sobre este directorio, será dejarlo ‘limpio’, es decir, anularemos otras posibles listas de acceso que este pudiese tener o incluso si tuviese una ACL por defecto. Esto lo haremos con el siguiente comando:

$ sudo setfacl -b -k -R /home/usuarios/sistemas

[Opciones]:

  • Eliminamos la posible ACL que ya pudiese tener el directorio: -b
  • Eliminamos la posible ACL por defecto que pudiese tener el directorio: -k
  • Aplicamos los cambios de forma recursiva: -R

Ahora con el directorio limpio vamos a crear la ACL, acción que podremos realizar mediante el uso de dos parámetros: ‘s‘ o ‘m‘. Si queremos crear una ACL eliminando una ya existente usaríamos ‘s‘, si por el contrario queremos modificar una ACL o crearla si no existe, usaremos ‘m‘. Nosotros usaremos ‘m‘ ya que antes hemos eliminado todo lo relacionado con ACL en el directorio.

$ sudo setfacl -R -m g:sistemas:rw

Aquí igualmente hemos aplicado de forma recursiva (-R) el comando. Vamos a desglosar la cadena ‘g:sistemas:rw‘ para ver que significado tiene cada uno de sus campos. Como nota añadir que el 3º campo es opcional a la hora de eliminar una ACL.

  • Indicar si se trata de una ACL de usuario (u) o de grupo (g): En nuestro caso, de grupo
  • El segundo campo es el nombre del grupo (podemos pasar el GID igualmente): sistemas
  • El tercer y ultimo campo son los permisos de la ACL, podemos pasar en valor octal como con chmod: rw

Ahora vamos a darle al grupo de explotación permisos de lectura y acceso para el subdirectorio ‘/home/usuarios/sistemas/prod‘ pero además algo que no hemos hecho en la anterior ACL es crearla como default, esto implica que cada subdirectorio o archivo que se cree bajo ./prod heredará los permisos, muy útil para no tener que andar modificando la ACL continuamente (cada vez que se cree contenido). Usaremos la opción ‘-d

$ sudo setfacl -d -R -m g:explotacion:rx /home/usuarios/sistemas/prod

[Otras Opciones]:

  • Restaurar los permisos anteriores a la ACL a partir de un archivo: –restore=FILE
  • Cuando usamos -R podemos incluir o no, los enlaces simbólicos (respectivamente): -L o -P

getfacl : Muestra las entradas de Listas de Control de Acceso para un archivo o directorio

getfacl [opciones] archivo

Una vez terminadas la tarea de setear una ACL, es conveniente usar el comando getfacl para comprobar como ha quedado todo:

$ sudo getfacl /home/usuarios/sistemas

# file: home/usuarios/sistemas
# owner: nebul4ck
# group: nebul4ck
user::rwx
group::r-x
group:sistemas:rw-
mask::rwx
other::r-x

Nota: Si hemos usado la opción ‘-d‘ (default) getfacl mostrará además estás entradas:

default:user::rwx
default:group::r-x
default:group:sistemas:rw-
default:mask::rwx
default:other::r-x

Donde:

  • user: permisos para nebul4ck (propietario)
  • group: permisos del grupo nebul4ck
  • group:sistemas: permisos rw- para el grupo sistemas (habrá tantas entradas como ACL hayamos asignado)
  • mask: Esa entrada se puede manipular con setfacl y permite especificar el máximo de permisos que se pueden asignar en dicho fichero con las ACLs de usuario y grupo.
  • Other: Es la entrada de los permisos generales o globales del modelo UGO (usergroupother).

[Otras Opciones]:

  • Listar recursivamente: -R
  • Listar solo la ACL (no muestra default): -a
  • Listar solo la ACL default: -d
  • Omitir los comentarios ‘#’: -c
  • Mostrar en vez del nombre de usuario y grupo, los UID y GID: -n

Pues listo esto es todo lo que os puedo enseñar sobre ACL, ahora toca practicar!!!!
Licencia Creative Commons
Implementar ACLs Linux por nebul4ck se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.

Anuncios

2 comentarios

  1. […] Podemos aprender mas sobre las listas de control de acceso aquí. […]

    Me gusta

  2. […] Podemos aprender mas sobre como implementar listas de control de acceso aquí. […]

    Me gusta

Deja un comentario, Gracias!

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: