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.
getFaclarchivo/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:
setFaclNombre 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!