Zwei Nutzer, ein Verzeichnis - volle Zugriffsrechte für alle Dateien garantieren

Metal_Warrior

Defender of Freedom
Teammitglied
Registriert
10 Aug. 2013
Beiträge
6.061
Ort
/dev/mapper/home
Nachdem Gulli stirbt, ich aber die eine oder andere Anleitung verfasst hab, die ich selber öfter brauche, hier quasi das öffentliche Backup:

Problemstellung
Es existieren zwei User, die beide auf ein Verzeichnis und alle darin enthaltenen Dateien zugreifen können sollen, mit allen Rechten, unabhängig vom Besitzer. Alle Dateien und Verzeichnisse, die später in dieses Verzeichnis hinzugefügt werden sollen, sollen automatisch so eingestellt werden.

Voraussetzung
Gruppenzugehörigkeiten müssen stimmen, d. h. die Hauptgruppe des Benutzers sollte den gleichen Namen haben wie der User (ist Standard in Debian), zumindest aber exklusiv sein (also nur den User enthalten, keine zweite oder gar dritte Person). Auch das ist Standard in Debian.

Wir haben also zwei User und deren exklusive Gruppen:
gisela:gisela
hendrik:hendrik

Lösung
Schritt 1:
Zuerst muss eine neue Gruppe erstellt werden, zu der beide Nutzer hinzugefügt werden:
Code:
Expand Collapse Copy
sudo addgroup sharing
Dann die Nutzer an die Gruppe anhängen, entweder mit Kommando:
Code:
Expand Collapse Copy
sudo adduser gisela sharing
Code:
Expand Collapse Copy
sudo adduser hendrik sharing
oder man editiert die /etc/group:
Code:
Expand Collapse Copy
sudo vim /etc/group
/etc/group schrieb:
...
sharing:x:1002:gisela,hendrik

Übersetzt:
Gruppenname:Passwort_(normal_nicht_gesetzt,_daher_x):Group-ID:Usernamen_durch_Kommata_getrennt

Schritt 2:
Wir ändern die Gruppenzugehörigkeit unseres Verzeichnisses und seinem Inhalt:
Code:
Expand Collapse Copy
sudo chown -R gisela:sharing /home/shared/
Der effektive Besitzer des Verzeichnisses spielt keine Rolle.

Schritt 3:
Wir ändern die Zugriffsrechte von Verzeichnis und Inhalt:
Code:
Expand Collapse Copy
sudo chmod -R 2770 /home/shared/
In diesem Beispiel haben Besitzer und Mitglieder von Gruppe "sharing" alle Rechte (Lese-, Schreib-, Zugriffsrechte), alle anderen Systemnutzer haben keine Rechte. Wichtig ist die 2 am Beginn, sie setzt das SGID-Bit. Dieses bewirkt, dass alle Dateien und Verzeichnisse, die nachträglich darin erstellt werden, automatisch der Gruppe "sharing" gehören, unabhängig vom erstellenden Besitzer. Rekursiv haben wir nur gearbeitet, weil der Inhalt des Verzeichnisses sonst die alten Rechte (in Debian 755 (drwxrwxr-x) bzw. 644 (-rw-r--r--)) behalten hätte.

Schritt 4:
Wir müssen Debian beibringen, dass alles, was der Nutzer erstellt, nicht mehr 755 bzw. 644 als Rechteeinstellung hat, sondern 775 bzw. 664. Dazu editieren wir die .bashrc im Nutzerverzeichnis:
Code:
Expand Collapse Copy
sudo vim /home/gisela/.bashrc
/home/gisela/.bashrc schrieb:
...
# sets umask for new files and directories
umask u=rwx,g=rwx
(analog dazu auch die von hendrik)

Aus diesem Grund war es wichtig, dass die Hauptgruppe des Nutzers exklusiv ist - denn jetzt hat jedes Mitglied seiner Hauptgruppe Lese- und Schreibrechte auf alle seine Daten, auch die vertraulichen (wie SSH-Private-Keys etc.). Solange er aber alleiniges Mitglied seiner Hauptgruppe ist, ändert das an der Sicherheit nichts. Deshalb haben wir auch bewusst die Rechte für "Others" von umask unberührt gelassen.
P.S.: Auch wenn in Umask für alles Ausführungsrechte vergeben werden, verbietet es die Debian-Systemeinstellung, dass Dateien automatisch Ausführungsrechte zugesprochen bekommen - aus gutem Grund. Umask ändert daran also nichts.

Nach einem neuen Login des jeweiligen Nutzers ist das Hexenwerk getan.

Ich hoffe, es hilft Nachfolgern - give a bit, take a bit... Sollte das irgendwo nicht so laufen oder andere Dinge beachtet werden müssen, bitte meldet euch - auch ich bin nicht perfekt!
 
Zuletzt bearbeitet:
Kleine Anmerkung: Die Gruppe, die du erstellst, nennst du "sharing". Aber die Gruppe, die du /home/sharing zuweist, ist "webmaster". Hast du das wirklich so gemeint?

2. Frage: Den hinteren Teil hab ich noch nicht ganz verstanden, bei dem du von exklusiver Hauptgruppe sprichst. Meine User kriegen grundsätzlich "users" als Hauptgruppe. Die Umask würde ich dann nur anwenden wollen, wenn in das Verzeichnis mit der entsprechenden Gruppe geschrieben werden soll. Deine Ausführung versteh ich aber so, dass die User Gisela und Hendrik dann grundsätzlich mit diesen Rechten schreiben, also auch in anderen Verzeichnissen. Das wäre nicht das, was ich will.
 
  • Thread Starter Thread Starter
  • #3
@musv:
Punkt 1:
Du hast natürlich recht - die Gruppe müsste sharing heißen. Wieso das hier falsch ist, kann ich erklären: Bei mir wars nur wichtig, dass zwei Nutzer Vollzugriffsrechte auf alle Dateien in /var/www haben, und der gehört bei mir den Webmastern. Ich hab das nur vergessen, vollständig zu ändern. Korrigiere ich gleich im Posting...

Punkt 2: Wie ich geschrieben habe, ist das eine Besonderheit bei allen Debianoiden, die ich kenne, dass jeder Nutzer eine eigene Hauptgruppe bekommt. Bei Suse ist das AFAIK nicht so und jeder bekommt als Hauptgruppe "users". Tatsächlich ist daher die Einstellung der umask in Debian kein Problem - denn sie sind IMMER allein in ihrer Hauptgruppe, und alle ihre Directories gehören ihrer Hauptgruppe; damit gibt es kein Sicherheitsproblem, wie es auftritt, wenn alle Benutzer sich eine Hauptgruppe teilen. In deinem Fall müsstest du also eine andere Lösung finden, oder gleich den Zugriff auf die Benutzerordner nur den jeweiligen Benutzern geben und der Hauptgruppe standardmäßig sperren (also chmod g-rwx $HOME).
 
Zurück
Oben