Listas de control de acceso en Ubuntu

Listas de control de acceso en Ubuntu
Las cuentas de usuario se crean con un cierto conjunto de privilegios y derechos predefinidos a los archivos y servicios del sistema. Por otro lado, existen grupos para compartir archivos y carpetas entre los usuarios. Por lo general, cuando se crean cuentas de usuario, se pueden asignar a grupos alternativos. Sin embargo, hay momentos en que es posible que no desee asignar un usuario en particular a un grupo en particular, pero al mismo tiempo, es posible que deba compartir archivos/carpetas con ese usuario específico. Aquí es donde las listas de control de acceso (ACL) entran en la imagen. En este tutorial, aprenderemos sobre las listas de control de acceso en Ubuntu.

Listas de control de acceso (ACL)

Las listas de control de acceso (ACL) nos permiten ajustar el control de acceso. En otras palabras, suponga que el usuario Sara necesita acceso a una sola carpeta propiedad de Kalyani. Técnicamente, podríamos asignar a Sara al grupo de Kalyani, pero eso significaría que Sara tendría acceso a más de lo que necesita, y suponer que Kalyani tiene archivos sensibles que no quiere que Sara lea, escriba o ejecute. Aquí es donde las listas de control de acceso o las ACL entran en la imagen. Podemos, en teoría, meterse con los permisos, pero las ACL nos permiten dar diferentes accesos a diferentes usuarios, así como dar acceso sin tener que meterse con los permisos base reales del archivo o la carpeta.

Ver permisos actuales

Usamos el comando getFaCl (Get File Access Control) para ver los permisos de ACL actuales.

getFacl archivo/carpeta

Supongamos que creo una carpeta llamada Secret con dos subdirectorios y 5 archivos. Supongamos además que quiero ver los permisos de ACL en la carpeta secreta.

GetFaCl Secret

Esto significa que el propietario de los archivos y la carpeta, Kalyani, perteneciente al grupo Kalyani, ha leído, escribe y ejecutan permisos. Todos los demás, sin embargo, no tienen permiso en absoluto.

Asignación de permisos de usuarios ajustados

Ajuste de los permisos con ACL se lleva a cabo utilizando el comando setFacl. El interruptor -m, en particular, se usa para modificar los permisos.

setFacl -m U: nombre de usuario: nombre de archivo de permisos

La U denota que el cambio es para un usuario y no para un grupo. Después del colon, uno escribiría el nombre de usuario para quien se otorga el permiso, así como el permiso otorgado. Los permisos son los mismos que los disponibles para Chmod: leer, escribir y ejecutar. Por último, escribimos el nombre de archivo para el cual se aplica el permiso.

Por ejemplo, suponga que deseo otorgar su acceso completo a esta carpeta secreta al usuario Sara, luego escribiría:

setfacl -m u: sara: rwx secret

Ahora, si iniciamos sesión como Sara, habríamos leído, escribimos y ejecutamos el acceso a la carpeta "Secret". Ahora, sí, establecí un permiso 770 en el directorio inicial. Este permiso se mantuvo, pero se agregó una excepción a la regla utilizando listas de control de acceso. Si tuviera otra carpeta llamada "Kali" con permiso 770 propiedad de Kalyani, el usuario Sara no podría tocarla. De hecho, diría "permiso negado".

Además, un punto a tener en cuenta es que una vez que el archivo se modifica como un ACL, hay un signo más al lado cuando lo enumera. En este caso, como puede ver, dice DRWXRWX-+ para la carpeta llamada Secret. El signo más implica que se ha modificado con ACLS.

Una vez que establece ACLS, también se crea una máscara. La máscara es el permiso máximo que un usuario o grupo de ACL puede tener potencialmente en un directorio o un archivo.

Asignación de grupos permisos ajustados

Al igual que asignar un permiso especial de los usuarios, también podemos asignar un permiso especial de grupos. Lo que esto significa es que podemos mantener nuestros permisos base tal como están y asignar un permiso adicional de grupo en particular usando ACL.

setfacl -m g: group_name: nombre de archivo de permisos

Ex:

SetFacl -M G: John: R Secret

En este caso, le estamos dando permiso al grupo John. Esto significa que todos los miembros del grupo John tendrán permiso de lectura para la carpeta secreta y solo la carpeta secreta. Todo lo demás estará bajo cerradura y llave.

Tarea recursiva

La carpeta Secreta fue diseñada con 3 archivos directamente y 2 subdirectorios, cada uno con un solo archivo en ella.

Cuando asignamos los permisos para el usuario Sara y el Grupo John, no lo hicimos de manera recursiva, así que verifiquemos los permisos de ACL de los subdirectorios actualmente (después de haber asignado permisos al directorio secreto).

Como puede ver, los permisos de ACL solo se aplicaron al directorio secreto y no a los subdirectorios. Lo que esto significa es que el usuario Sara y el grupo John no tienen los permisos dados en los subdirectorios! En este caso, si queremos dar permisos a todo el directorio (incluidos los subdirectorios), tenemos que hacer una tarea recursiva. Usamos el interruptor -r para hacer esto.

setfacl -r -m U: nombre de usuario: nombre de archivo de permisos

Ex:

setfacl -r -m u: sara: rwx secret

Eliminar permisos afinados

También es posible que desee revocar los permisos dados, y eso es tan fácil de hacer que darles. Utiliza el interruptor -x en lugar del interruptor -m para revocar los permisos.

Para eliminar una entrada específica:

setFacl -x U: nombre de usuario de nombre de usuario
setfacl -x g: group_name nombre de archivo

En este caso, habría escrito:

setFacl -x U: Sara Secret
setFacl -x G: John Secret

Para eliminar todas las entradas de una sola vez:

setFacl -B nombre de archivo

Por ejemplo:

setFacl -B secreto

Esto, sin embargo, no elimina los derechos de los subdirectorios. Para eliminar los derechos de los subdirectorios, debe usar la recursión.

setfacl -r -b secreto

Resumen

Todo lo que aprendimos se reduce a esto:

Para ver los permisos de ACL:

GetFaCl FileName

Para establecer permisos de ACL:

setFacl Nombre del archivo

Opciones:
-m, -modify modificar ACL
-x, -Remove Eliminar la entrada de ACL
-B, -Remove -All Retire todas las entradas de ACL
-R Asignación recursiva

Entrada:
U: nombre de usuario: permisos para usuarios
g: group_name: permisos para grupos

Aunque Chmod existe para otorgar permisos para archivos y carpetas, no es selectivo. No puede otorgar diferentes privilegios a los diferentes usuarios. Además, hay momentos en que uno no quiere agregar personas al azar a los grupos tampoco. Las listas de control de ACL o de acceso se inventaron solo para este tipo de ocasión. Puede dar acceso a usuarios o grupos específicos a archivos y/o carpetas específicos. En este tutorial, aprendimos cómo dar a los usuarios y grupos permisos especiales, asignar permisos recursivamente y revocar dichos permisos. Así que vaya y ajuste los permisos de fino en archivos y carpetas desde aquí adelante!

Codificación feliz!