¿Cómo otorgo diferentes permisos para cada usuario?


11

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.


8
Para ese tipo de granularidad en los permisos, deberá utilizar listas de control de acceso (ACL). Puede encontrar un tutorial rápido aquí . Aunque es una advertencia, una vez que comienzas por el camino de las ACL en lugar de los permisos, es una pendiente muy resbaladiza y las cosas se complican muy rápido con algunas consecuencias no deseadas al final.
MelBurslan

Respuestas:


19

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 setfaclcomando y se leen congetfacl

$ setfacl -m u:root:r-- file.txt
$ setfacl -m u:bin:-wx file.txt 
$ setfacl -m u:lp:--x file.txt 
$ getfacl file.txt
# file: file.txt
# owner: sweh
# group: sweh
user::rw-
user:root:r--
user:bin:-wx
user:lp:--x
group::r--
mask::rwx
other::r--

Puede saber fácilmente si un archivo tiene una ACL mirando la lssalida:

$ ls -l file.txt
-rw-rwxr--+ 1 sweh sweh 0 Jul 26 10:33 file.txt

Al +final de los permisos indica una ACL.


2

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 masken la figura getfacl), pero setfacldeben ocuparse de eso si agrega permisos.

Pero en algunos casos, debe preguntar si el conjunto de permisos tiene algún sentido.

Tengo 3 usuarios con estos permisos deseados ....
- user1 rwx
- user2 rw_
- user3 r__

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 -wxy user5 with --xno 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 xbit, 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.


Si el usuario solo puede escribir en un sistema de archivos montado sin permiso de ejecución, no puede ejecutar una copia, incluso si pudiera ejecutar el original si se establecieran los permisos apropiados. También ejecutar solo podría tener sentido si desea evitar que busquen exploits. -wxes definitivamente extraño, sin embargo.
celtschk

1
Algunos sistemas tienen un mecanismo de permitir solo anexos. Linux tiene 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 .
Random832
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.