GNU/Linux >> Tutoriales Linux >  >> Linux

¿Obtener nuevos archivos para heredar permisos de grupo en Linux?

Tengo un problema con los permisos en un servidor Linux. Estoy acostumbrado a BSD. Cuando un directorio es propiedad de un grupo en el que el usuario no está, como www-data, los archivos creados en él serán propiedad de ese grupo. Esto es importante porque quiero que el servidor web pueda leer los archivos (que no ejecutaré como raíz), pero para que un usuario aún pueda colocar nuevos archivos en el directorio. No puedo poner a los usuarios en www-data porque entonces pueden leer los sitios web de todos los demás usuarios.

Quiero que el servidor web lea todos los sitios web, quiero que los usuarios puedan cambiar los suyos propios.

Los permisos están configurados así en las carpetas en este momento...

drwxr-x--- 3 john www-data 4096 Feb 17 21:27 john

Es un comportamiento estándar en BSD que los permisos funcionen de esta manera. ¿Cómo consigo que Linux haga esto?

Respuesta aceptada:

Parece que está describiendo la funcionalidad de bit setgid donde cuando un directorio lo tiene configurado, obligará a cualquier archivo nuevo creado dentro de él a tener su grupo configurado en el mismo grupo que está configurado en el directorio principal.

Ejemplo

$ whoami
saml

$ groups
saml wheel wireshark

configure un directorio con permisos y propiedades

$ sudo mkdir --mode=u+rwx,g+rs,g-w,o-rwx somedir
$ sudo chown saml.apache somedir
$ ll -d somedir/
drwxr-s---. 2 saml apache 4096 Feb 17 20:10 somedir/

toque un archivo como saml en este directorio

$ whoami
saml

$ touch somedir/afile
$ ll somedir/afile 
-rw-rw-r--. 1 saml apache 0 Feb 17 20:11 somedir/afile

Esto le dará aproximadamente lo que parece que quiere. Sin embargo, si realmente desea exactamente lo que ha descrito, creo que deberá recurrir a la funcionalidad de Listas de control de acceso para obtener eso (ACL).

ACL

Si desea obtener un poco más de control sobre los permisos de los archivos que se crean en el directorio, somedir , puede agregar la siguiente regla de ACL para establecer los permisos predeterminados de esta manera.

antes

$ ll -d somedir
drwxr-s---. 2 saml apache 4096 Feb 17 20:46 somedir

establecer permisos

$ sudo setfacl -Rdm g:apache:rx somedir
$ ll -d somedir/
drwxr-s---+ 2 saml apache 4096 Feb 17 20:46 somedir/

Observe el + al final, eso significa que este directorio tiene ACL aplicadas.

$ getfacl somedir
# file: somedir
# owner: saml
# group: apache
# flags: -s-
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:apache:r-x
default:mask::r-x
default:other::---

después

$ touch somedir/afile
$ ll somedir/afile 
-rw-r-----+ 1 saml apache 0 Feb 17 21:27 somedir/afile
$ 

$ getfacl somedir/afile
# file: somedir/afile
# owner: saml
# group: apache
user::rw-
group::r-x              #effective:r--
group:apache:r-x        #effective:r--
mask::r--
other::---

Aviso con los permisos por defecto (setfacl -Rdm ) configurado para que los permisos sean (r-x ) por defecto (g:apache:rx ). Esto obliga a cualquier archivo nuevo a tener solo su r bit habilitado.

Relacionado:Hoja de referencia de ShellScript
Linux
  1. Cómo usar Rsync para sincronizar archivos nuevos o cambiados/modificados en Linux

  2. Cómo encontrar archivos con permisos SUID y SGID en Linux

  3. ¿Agregué un usuario a un grupo, pero los permisos de grupo en los archivos siguen sin tener efecto?

  4. ¿Forzar nuevos permisos en archivos después de Rsync de Seedbox?

  5. Linux:¿obtener archivos para la fecha actual en Linux?

Comando Rm en Linux

Cómo cambiar recursivamente los permisos de archivos en Linux

Cómo encontrar archivos según sus permisos en Linux

8 comandos fundamentales de administración de archivos de Linux para nuevos usuarios

Crear nuevos grupos en Linux con el comando Groupadd

Comprender los permisos básicos de archivos y la propiedad en Linux