Entonces, he estado usando Linux durante algunos años, y realmente debería saber esta respuesta, pero tengo problemas para encontrarla. Específicamente, he estado usando distribuciones basadas en Debian ... principalmente Ubuntu.
Si tengo un servidor, que tiene más de tres usuarios, ¿cómo configuro un conjunto diferente de permisos para un archivo para cada usuario?
Por ejemplo:
Si tengo un archivo con estos permisos y propiedad:
rwx rw_ r__ user1:group1 file1.txt
y tengo 3 usuarios con estos permisos deseados ...
- usuario1 rwx
- usuario2 rw_
- usuario3 r__
Todo lo que tengo que hacer es que user1 sea el propietario del archivo, user2 esté en group1 y user3 no puede ser ninguno de los dos, ¿correcto?
Pero, lo que si tengo una user4 y user5 .
- usuario4 _wx
- usuario5 __x
¿Cómo iba a configurar eso?
No he tenido que hacer esto antes, pero un administrador de Windows me hizo esa pregunta y, sinceramente, no pude responder.
fuente
Respuestas:
Los permisos tradicionales de Unix solo permiten los permisos de usuario, grupo y otros permisos que haya encontrado. Esto puede resultar en una combinación incómoda de grupos que necesitan ser creados ...
Entonces se agregó una nueva forma de ACL (Listas de control de acceso). Esto le permite especificar múltiples usuarios y múltiples grupos con diferentes permisos. Estos se configuran con el
setfacl
comando y se leen congetfacl
Puede saber fácilmente si un archivo tiene una ACL mirando la
ls
salida:Al
+
final de los permisos indica una ACL.fuente
Sí, las ACL: s permiten configurar libremente diferentes derechos para diferentes usuarios o grupos. IIRC: los permisos de grupo habituales limitan el conjunto de permisos que los grupos y los usuarios pueden tener a través de ACL: s (como se muestra
mask
en la figuragetfacl
), perosetfacl
deben ocuparse de eso si agrega permisos.Pero en algunos casos, debe preguntar si el conjunto de permisos tiene algún sentido.
Puede implementar esto con ACL: s, o (aproximadamente) con los permisos habituales de Unix haciendo que user1 sea el propietario del archivo, user2 un miembro del grupo y permita que otros, incluido user3, tengan acceso de lectura. Aunque entonces todos (con acceso al directorio) también tendrían acceso de lectura.
Consideremos el significado de esos permisos. Tiene un usuario que puede leer y otro que puede leer y escribir. Eso es completamente usual. Ninguno de estos tiene acceso para ejecutar el archivo, pero se supone que un tercer usuario también puede hacerlo.
Eso no tiene mucho sentido en mi mente. Cualquier usuario que pueda leer el archivo, puede hacer una copia (*), marcarlo como ejecutable y ejecutarlo, sin acceso para ejecutar el archivo original. La única situación que tiene sentido para tener acceso de ejecución para algunos usuarios pero no para otros, es cuando el ejecutable tiene privilegios elevados a través de suid. Pero si ese fuera el caso, tampoco debería tener otros usuarios con acceso de escritura al archivo.
En el mismo sentido, user4 with
-wx
y user5 with--x
no tienen sentido para mí. El acceso de solo escritura podría tener sentido si existiera la posibilidad de permitir solo anexos , pero el sistema de permisos no es tan específico.(* a menos que no puedan escribir en ningún lado)
Sin embargo, si eliminamos el requisito extraño para el
x
bit, nos queda un archivo donde user1 y user2 deberían tener acceso de escritura, y user3 debería tener acceso de lectura. Un escritor y varios lectores serían fáciles con el modelo tradicional, pero este caso necesitaría trucos para combinar los permisos de archivos con los permisos del directorio que los contiene. Afortunadamente, en muchos casos un usuario con más permisos es suficiente.Sin el requisito en el bit de ejecución, esto parece un caso para usar ACL: s. Pero con esto, este ejemplo en particular me parece bastante complicado.
fuente
-wx
es definitivamente extraño, sin embargo.chattr +a
, por ejemplo. E incluso sin nada específico del sistema, puede convertir el archivo en un FIFO.--x
, y por extensión también-wx
, tiene sentido para mí para directorios .