Geben Sie mehreren Benutzern Schreibberechtigungen für einen Ordner in Ubuntu

80

Es gibt einen Ordner, der dem Benutzer tomcat6 gehört:

drwxr-xr-x 2 tomcat6 tomcat6 69632 2011-05-06 03:43 document

Ich möchte einem anderen Benutzer (ruser) Schreibrechte für den Dokumentordner gewähren. Die beiden Benutzer (tomcat6 und ruser) gehören nicht derselben Gruppe an. Ich habe versucht mit setfacl:

sudo setfacl -m  u:ruser:rwx document

aber das gibt mir setfacl: document: Operation not supportedfehler. Bitte hilf mir.

TheVillageIdiot
quelle

Antworten:

143

Dazu gibt es zwei Möglichkeiten: Setzen Sie das Verzeichnis auf "Welt", oder erstellen Sie eine neue Gruppe für die beiden Benutzer, und machen Sie das Verzeichnis für diese Gruppe schreibbar.

Offensichtlich ist es eine schlechte Sache, die Welt beschreibbar zu machen, daher ist die zweite Option vorzuziehen.

Benutzer in Linux können mehreren Gruppen angehören. In diesem Fall möchten Sie eine brandneue Gruppe erstellen, nennen wir sie tomandruser:

sudo groupadd tomandruser

Nachdem die Gruppe existiert, fügen Sie die beiden Benutzer hinzu:

sudo usermod -a -G tomandruser tomcat6
sudo usermod -a -G tomandruser ruser

Jetzt müssen Sie nur noch die Berechtigungen für das Verzeichnis festlegen:

sudo chgrp -R tomandruser /path/to/the/directory
sudo chmod -R 770 /path/to/the/directory

Jetzt können nur Mitglieder der Benutzergruppe tomandruser irgendetwas im Verzeichnis lesen, schreiben oder ausführen. Beachten Sie das Argument -R für die Befehle chmod und chgrp: Dadurch werden sie angewiesen, in jedes Unterverzeichnis des Zielverzeichnisses zurückzukehren und alle gefundenen Dateien und Verzeichnisse zu ändern.

Sie können 770 auch so ändern, 774dass andere 775Benutzer die Dateien lesen und ausführen können. Änderungen an der Gruppenzuordnung werden erst wirksam, wenn sich die Benutzer ab- und wieder abmelden im.

Wenn Sie (wahrscheinlich auch) möchten, dass neue Dateien, die innerhalb des Verzeichnisses von einem der Benutzer erstellt wurden, automatisch von anderen Benutzern in der Gruppe beschrieben werden können, sehen Sie hier nach .

Andrew Lambert
quelle
2
Sie möchten wahrscheinlich auch das Set-Group-ID-Flag für Verzeichnisse setzen, damit neue Dateien und Unterverzeichnisse automatisch der richtigen Gruppe gehören:sudo find /path/to/the/directory -type d -exec chmod 2770 '{}' \;
Marcello Nuccio
8
Ich würde es vermeiden, chmod 770, 775 oder was auch immer zu verwenden. Das beeinträchtigt die Berechtigungen aller Dateien. Verwenden Sie stattdessen so etwas wie chmod -R g+wdas Hinzufügen von Schreibrechten, ohne alles andere durcheinander zu bringen.
Christian Varga
2
Wenn ein Benutzer dort eine neue Datei erstellt (z. B. mysql by SELECT INTO OUTFILE), legt er die Berechtigungen für seine primäre Gruppe fest ( mysqlin diesem Fall), und auf die Datei kann ohnehin kein anderer Benutzer zugreifen. Wie kann man das umgehen?
Olexa
2
Was ist, wenn Sie Benutzern Schreibzugriff auf einen Ordner gewähren möchten, ohne die Eigentümerschaft des Ordners zu ändern, z. B. möchten Sie nicht mit den Berechtigungen von Apache für einen public_html-Ordner herumspielen?
Codecowboy
2
Hinweis: "Änderungen an der Gruppenzuweisung werden erst wirksam, wenn sich die Benutzer abmelden und wieder anmelden." Ich habe das verpasst :)
Vladimir Vukanac
3

Das Beispielskript zeigt ein Beispiel zum Erteilen der w (write)/ r (read) / x (execute)Berechtigung für den angegebenen Ordnerpfad /path/to/the/directoryfür USER1und USER2. Wenn Sie nur Schreibzugriff geben , ersetzen Sie bitte rwxmit w.


#!/bin/bash

# Block others and people in the same group to do read/write/execute on give folder:    
sudo chmod 700 /path/to/the/directory 

#Give read/write/execute access to USER1 on give folder:
sudo setfacl -R -m user:USER1:rwx  /path/to/the/directory 

#Give read/write/execute access to USER2 on give folder:
sudo setfacl -R -m user:USER2:rwx  /path/to/the/directory 
alper
quelle