it-swarm.com.de

Neue Dateien zum Erben von Gruppenberechtigungen unter Linux abrufen

Ich habe ein Problem mit Berechtigungen auf einem Linux-Server. Ich bin an BSD gewöhnt. Wenn ein Verzeichnis einer Gruppe gehört, gehört der Benutzer, dem es gehört, nicht zu den WWW-Daten. Die darin erstellten Dateien gehören dieser Gruppe. Dies ist wichtig, da ich möchte, dass Dateien vom Webserver gelesen werden können (der nicht als Root ausgeführt wird), ein Benutzer jedoch weiterhin neue Dateien in das Verzeichnis einfügen kann. Ich kann die Benutzer nicht in www-Daten einfügen, da sie dann die Websites aller anderen Benutzer lesen können.

Ich möchte, dass der Webserver alle Websites liest. Ich möchte, dass Benutzer ihre eigenen ändern können.

Die Berechtigungen sind momentan für die Ordner so festgelegt ....

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

Bei BSD ist es Standard, dass Berechtigungen auf diese Weise funktionieren. Wie bringe ich Linux dazu?

96
John Tate

Es hört sich so an, als würden Sie die Funktion setgid bit beschreiben, bei der bei einem Verzeichnis, in dem es festgelegt wurde, alle darin erstellten neuen Dateien gezwungen werden, ihre Gruppe auf dieselbe Gruppe festzulegen, die im übergeordneten Verzeichnis festgelegt ist .

Beispiel

$ whoami
saml

$ groups
saml wheel wireshark

Ein Verzeichnis mit Dauerwellen + Besitzern einrichten

$ 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/

Berühren Sie eine Datei als saml in diesem Verzeichnis

$ whoami
saml

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

Dies gibt Ihnen ungefähr das, wonach es sich anhört. Wenn Sie wirklich genau das wollen, was Sie beschrieben haben, müssen Sie meiner Meinung nach auf die Funktionen der Zugriffssteuerungslisten zurückgreifen, um diese (ACLs) zu erhalten.

ACLs

Wenn Sie die Berechtigungen für die Dateien, die unter dem Verzeichnis somedir erstellt werden, etwas besser steuern möchten, können Sie die folgende ACL-Regel hinzufügen, um die Standardberechtigungen wie folgt festzulegen.

vor

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

Berechtigungen festlegen

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

Beachten Sie die + am Ende bedeutet dies, dass auf dieses Verzeichnis ACLs angewendet werden.

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

nach

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

Beachten Sie mit den Standardberechtigungen (setfacl -Rdm) so einstellen, dass die Berechtigungen (r-x) standardmäßig (g:Apache:rx). Dadurch werden für alle neuen Dateien nur das Bit r aktiviert.

134
slm

TL: DR; zu machen ne Dateien erben die Gruppe des Containerordners do:

$ chmod g+s somefolder

Hinweis: Dies ist in der akzeptierten Antwort impliziert und nur ein Ausschnitt.

49
alo Malbarez

Beachten Sie als Ergänzung zur Antwort von slm, dass Sie in einem ext2/3/4-Dateisystem das von Ihnen beschriebene BSD-Verhalten mithilfe der Mount-Option bsdgroups auf der Partition replizieren können. Von der Manpage mount(1):

grpid|bsdgroups and nogrpid|sysvgroups
              These options define what group id a newly  created  file  gets.
              When  grpid  is  set,  it takes the group id of the directory in
              which it is created; otherwise (the default) it takes the  fsgid
              of  the current process, unless the directory has the setgid bit
              set, in which case it takes the gid from the  parent  directory,
              and also gets the setgid bit set if it is a directory itself.
10
user60039