permissions – Obtener nuevos archivos para heredar permisos de grupo en Linux

Pregunta:

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 que lo posee no está, como www-data, los archivos creados en él serán propiedad de ese grupo. Esto es importante porque quiero que los archivos sean legibles por el servidor web (que no ejecutaré como root) pero para que un usuario aún pueda poner 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.

Los permisos se establecen 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:

Parece que está describiendo la funcionalidad de bit setgid donde, cuando un directorio que lo tiene configurado, forzará 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

configurar un directorio con permisos + 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 desea. Sin embargo, si realmente desea exactamente lo que ha descrito, creo que deberá recurrir a la funcionalidad de Listas de control de acceso para obtenerlo (ACL).

ACL

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

antes de

$ 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, que 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::---

Observe que los permisos predeterminados ( setfacl -Rdm ) están configurados para que los permisos sean ( rx ) de manera predeterminada ( g:apache:rx ). Esto obliga a que los archivos nuevos solo tengan habilitado el bit r .

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım