Una característica muy útil en Linux son las «Listas de control de acceso» que controlan el acceso a archivos y directorios. Así es como funcionan las listas de control de acceso para controlar los permisos de archivos en Linux.
Nota: Para comprender a fondo cómo funcionan las listas de control de acceso, primero configuraremos algunos usuarios y grupos en un sistema Linux que funcione. El siguiente ejercicio se realiza en una máquina virtual con sistema operativo Kali. El usuario raíz tiene el poder de agregar nuevos usuarios al sistema y asignarlos a grupos.
Creación de usuarios y grupos
En primer lugar, iniciaremos sesión como raíz, crearemos usuarios y los colocaremos en los grupos respectivos como se muestra en la tabla a continuación. A los usuarios se les han dado nombres simples para ayudar a comprender mejor el concepto.
juan1 juan2 juan3 | Juanes |
jane1 jane2 | jane |
Usaremos el adduser
Comando para agregar nuevos usuarios al sistema.
Él id
El comando mostrará los detalles del usuario recién creado. Mostrará la identificación del usuario (uid), la identificación del grupo (gid) y el nombre del grupo (grupos). El usuario, una vez creado, se agrega automáticamente a un grupo con el mismo nombre que el nombre de usuario. Ese usuario sería el único miembro del grupo.
Asimismo, también se crean los usuarios “john2” y “john3”.
adduser john2 adduser john3
Una vez creados los tres usuarios, utilice elid
comando para ver los respectivos ID de usuario y grupo.
Podemos ver que los tres usuarios están en sus propios grupos: 1000, 1001 y 1002. De acuerdo con la tabla que se muestra anteriormente, queremos que los tres usuarios estén en el mismo grupo: johns
. Dado que dicho grupo no existe actualmente en el sistema, lo crearemos con el groupadd
dominio:
groupadd -g <new_group_ID> <group_name>
El nuevo ID de grupo se especifica como 5000. Si el -g
se ignora el interruptor, entonces el sistema seleccionará automáticamente una ID de grupo. El nombre del nuevo grupo es «johns». Ahora los tres usuarios, «john1», «john2» y «john3», deben agregarse como miembros de este grupo. Usaremos el usermod
comando para esta tarea.
usermod -g <group_name> <user_name>
usermod
agrega el usuario «nombre_usuario» al grupo «nombre_grupo». La siguiente figura muestra primero el uid y el gid para «john1» antes del cambio de grupo. Después de la usermod
el comando se ejecuta correctamente, se agrega «john1» al grupo «johns» con gid 5000.
El mismo proceso se realiza para los usuarios «john2» y «john3».
usermod -g johns john2 usermod -g johns john3
Finalmente, los detalles de los tres usuarios en el grupo «johns» se pueden ver usando id
dominio.
Hemos creado con éxito tres usuarios y los hemos agregado al mismo grupo.
De manera similar, los usuarios «jane1» y «jane2» se crean y agregan al grupo «janes» con gid 6000. Sus detalles se pueden ver usando el id
comando como se muestra a continuación.
¿Cuál es la necesidad de las listas de control de acceso?
Supongamos que el usuario «john1» inicia sesión,
crea un nuevo archivo en el directorio de inicio,
y le agrega algo de contenido.
Utilizando lals
comando, vemos los metadatos del archivo.
Los primeros caracteres de la salida, - rw - r - - r - -
cuenta para la cadena de permiso. Vamos a diseccionarlo.
Tipo de archivo | permisos que tiene john1 en el archivo | permisos que tienen los miembros del grupo johns en el archivo | permisos otorgados a otros que no están en el grupo de johns |
Este artículo es una buena introducción a los permisos de archivos.
¿Qué sucede si “john1”, siendo el propietario del archivo, quiere otorgar permisos de escritura adicionales solo a “john2” y “jane1” pero persiste con permisos de lectura para “john3” y “jane2”?
juan1 juan2 jane1 | juan3 jane2 |
Una opción sería crear un nuevo grupo con permisos de lectura y escritura para «john1», «john2» y «jane1» y otro grupo con permisos de solo lectura para «john3» y «jane2». En caso de que john1 desee modificar más los permisos para cualquier miembro del grupo, se deben crear más grupos. Crear y administrar varios grupos es una carga para el administrador del sistema.
En su lugar, se puede crear una «Lista de control de acceso» para un archivo que indique claramente las operaciones que cualquier usuario puede realizar en ese archivo.
¿Cómo crear una lista de control de acceso (ACL) para un archivo?
Cada archivo en el momento de la creación tiene una ACL asignada. Usarlo de manera eficiente es simplemente cuestión de modificarlo. Solo el propietario del archivo y el usuario raíz pueden modificar la ACL de un archivo.
Podemos usar el getfacl
Comando para ver la ACL existente:
getfacl <file_name>
Las líneas que comienzan con #
son líneas de comentarios. La información real se encuentra en las últimas tres líneas de salida, que es similar a la cadena de permisos obtenida anteriormente. La línea «usuario» hace referencia a los permisos asignados al propietario del archivo «john1». La línea «grupo» se refiere a los permisos asignados a otros miembros en el grupo «johns». Como habrás adivinado, la línea «otro» se refiere a cualquier otra persona fuera del grupo.
Usemos el setfacl
comando para modificar la ACL existente en el archivo.
setfacl -m entity:name:permissions <file_name>
el valor aquí significa para quién es la entrada de ACL: usuario (u) o grupo (g) u otros (o) | el nombre del usuario o grupo, para quien la entrada de ACL es relevante | los permisos de lectura, escritura y ejecución se indican con las letras r, w, x |
“john2” recibe primero acceso de lectura y escritura al archivo,
seguido de «jane1».
Veamos la ACL actualizada para «secretfile».
Podemos ver que se han asignado permisos de lectura y escritura a «john2» y «jane1».
Verificación de la autenticidad de la ACL
Podemos ver que «john2» puede leer el archivo y escribir en él.
La nueva información ingresada por «john2» se ha agregado al archivo.
Del mismo modo, «jane1» obtiene el mismo privilegio: acceso de lectura y acceso de escritura.
Pero «john3» en el mismo grupo no puede escribir en el archivo.
“jane2”, que pertenece a la otra categoría, tampoco puede escribir en el archivo.
Conclusión
El mismo proceso también se puede extender a los directorios. Las listas de control de acceso permiten que un administrador del sistema maneje el acceso a archivos y directorios de manera experta.
Danos tu opinión