Um die Gruppe festzulegen, geben Sie /var/www
ein die setgid bisschen:
chgrp www-data /var/www
chmod g+s /var/www
Um auch Unterverzeichnisse anzupassen:find /var/www -type d -exec chmod g+s {} +
Dadurch erben alle neu erstellten Dateien die Gruppe des übergeordneten Verzeichnisses und nicht die des Benutzers.
Um die standardmäßigen Gruppenberechtigungen festzulegen, müssen Sie ACLs verwenden . Legen Sie eine "Standard"-ACL fest:
setfacl -m "default:group::rwx" /var/www
Um auch Unterverzeichnisse anzupassen:find /var/www -type d -exec setfacl -m d:g::rwx {} +
Hinweis:Für das Dateisystem muss die ACL-Unterstützung aktiviert sein. Manchmal ist es standardmäßig aktiviert; auf ext3 oder ext4 Möglicherweise erhalten Sie "Operation nicht unterstützt". In diesem Fall muss sie manuell aktiviert werden:
-
Für ein aktuell gemountetes Dateisystem:
mount -o remount,acl /
-
Dauerhaft – eins der folgenden Methoden:
-
auf fstab-Ebene:Bearbeiten Sie
/etc/fstab
acl
haben im Optionsfeld -
auf Dateisystemebene:
tune2fs -o acl /dev/diskname
-
Dies könnte dazu geführt haben, dass einige Leute bei der Antwort "Grawity" auf setgid hängen geblieben sind. Wenn sich die Gruppe des Ordners von Ihrer eigenen unterscheidet, müssen Sie möglicherweise chmod als root ausführen, aber Sie erhalten keine Fehlermeldung, die darauf hinweist, dass Sie dies tun müssen.
$ 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