¿Cómo fuerzo el grupo y los permisos para los archivos creados dentro de un directorio específico?

¿Cómo fuerzo el grupo y los permisos para los archivos creados dentro de un directorio específico?

Para archivos creados a partir delusuario de pruebacuenta en el directorio /var/www, necesito que tengang+rwxcomo permisos, ywww-datoscomo grupo.

¿Cómo puedo conseguir esto?

Estoy creando los archivos a través de SSH.

Respuesta1

Para configurar el grupo, dé /var/wwwelsetgidpoco:

chgrp www-data /var/www
chmod g+s /var/www

Para ajustar también los subdirectorios:find /var/www -type d -exec chmod g+s {} +

Esto hará que todos los archivos recién creados hereden el grupo del directorio principal, en lugar del del usuario.


Para configurar los permisos de grupo predeterminados, deberá usarACL. Establezca una ACL "predeterminada":

setfacl -m "default:group::rwx" /var/www

Para ajustar también los subdirectorios:find /var/www -type d -exec setfacl -m d:g::rwx {} +

Nota: El sistema de archivos debe tener habilitada la compatibilidad con ACL. A veces está activado de forma predeterminada; enext3oext4es posible que aparezca "Operación no compatible", en cuyo caso debe habilitarse manualmente:

  • Para un sistema de archivos actualmente montado:mount -o remount,acl /

  • Permanentemente -unode los métodos siguientes:

    • a nivel de fstab: editar /etc/fstabpara tener aclen el campo de opciones

    • a nivel del sistema de archivos:tune2fs -o acl /dev/diskname

Respuesta2

Esto podría haber dejado a algunas personas atascadas con la respuesta 'grawity' en setgid, si el grupo de carpetas es diferente al suyo, es posible que necesite ejecutar chmod como root, pero no recibirá ningún error que indique que necesita hacer esto.

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir

$ chmod g+s dir                                    #no errors

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir  #but nothing changed

$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar  9 10:51 nosudo       #and the group is still wrong


$ sudo chmod g+s dir

$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar  9 10:44 dir  #the setgid bit is now on

$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke      0 Mar  9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar  9 10:51 withsudo #and group is set

Respuesta3

El grupo de archivos creados por un usuario es el grupo de ese usuario (en /etc/group). Los permisos están controlados por el parámetro UMASK. mira esto

información relacionada