09.04.2014 Aufrufe

Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...

Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...

Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

14.5 Besondere Zugriffsrechte für Verzeichnisse 207<br />

Analog zum Set-UID-Bit gibt es auch ein SGID-Bit, mit dem ein Prozess statt SGID-Bit<br />

mit der Gruppenzugehörigkeit <strong>des</strong> Aufrufers mit der Gruppenzugehörigkeit der<br />

Programmdatei und den damit verbundenen Rechten (typischerweise zum Zugriff<br />

auf andere Dateien, die dieser Gruppe zugeordnet sind) ausgeführt wird.<br />

<strong>Die</strong> SUID- und SGID-Modi werden wie alle anderen Modi einer Datei mit dem chmod-Syntax<br />

Systemprogramm chmod verändert, indem Sie symbolische Schlüssel wie u+s (setzt<br />

das SUID-Bit) oder g-s (löscht das SGID-Bit) angeben. Auch in oktalen Modi können<br />

Sie diese Bits setzen, indem Sie eine vierte Ziffer ganz links hinzufügen: Das<br />

SUID-Bit hat den Wert 4, das SGID-Bit den Wert 2 – so können Sie einer Datei<br />

den Zugriffsmodus 4755 geben, um sie für alle Benutzer lesbar und ausführbar<br />

zu machen (der Eigentümer darf auch schreiben) und das SUID-Bit zu setzen.<br />

Sie erkennen Programme, die mit den Rechten <strong>des</strong> Eigentümers oder der Gruppe<br />

der Programmdatei arbeiten, in der Ausgabe von »ls -l« durch die symboli- ls-Ausgabe<br />

schen Abkürzungen »s« anstelle von »x« für normal ausführbare Dateien.<br />

14.5 Besondere Zugriffsrechte für Verzeichnisse<br />

Es gibt eine weitere Ausnahme von der Zuordnung <strong>des</strong> Eigentums an Dateien<br />

nach dem »Verursacherprinzip«: Der Eigentümer eines Verzeichnisses kann bestimmen,<br />

dass die in diesem Verzeichnis erzeugten Dateien der gleichen Benutzergruppe<br />

gehören wie das Verzeichnis selbst. Das geschieht, indem das SGID- SGID für Verzeichnisse<br />

Bit <strong>des</strong> Verzeichnisses gesetzt wird. (Da Verzeichnisse nicht ausgeführt werden<br />

können, ist das SGID-Bit für solche Sachen frei.)<br />

<strong>Die</strong> Zugriffsrechte auf ein Verzeichnis werden durch das SGID-Bit nicht verändert.<br />

Um eine Datei in einem solchen Verzeichnis anzulegen, muss ein Benutzer<br />

das Schreibrecht in der für ihn zutreffenden Kategorie (Eigentümer, Gruppe, andere<br />

Benutzer) haben. Wenn ein Benutzer zum Beispiel weder der Eigentümer<br />

noch Mitglied der Benutzergruppe eines SGID-Verzeichnisses ist, muss das Verzeichnis<br />

für alle Benutzer beschreibbar sein, damit er neue Dateien hineinschreiben<br />

kann. <strong>Die</strong> in dem SGID-Verzeichnis erzeugte Datei gehört dann der Gruppe<br />

<strong>des</strong> Verzeichnisses, auch wenn der Benutzer selbst dieser Gruppe nicht angehört.<br />

B<br />

Der typische Anwendungsfall für das SGID-Bit auf einem Verzeichnis ist<br />

ein Verzeichnis, das einer »Projektgruppe« als Datenablage dient. (Nur) <strong>Die</strong><br />

Mitglieder der Projektgruppe sollen alle Dateien im Verzeichnis lesen und<br />

schreiben und auch neue Dateien anlegen können. Das heißt, Sie müssen<br />

alle Benutzer, die an dem Projekt mitarbeiten, in die Projektgruppe tun (sekundäre<br />

Gruppe reicht):<br />

# groupadd projekt Neue Gruppe anlegen<br />

# usermod -a -G projekt hugo hugo in die Gruppe<br />

# usermod -a -G projekt susi susi auch<br />

✁✁✁✁✁<br />

Jetzt können Sie das Verzeichnis anlegen und der neuen Gruppe zuordnen.<br />

Eigentümer und Gruppe bekommen alle Rechte, der Rest der Welt keine;<br />

außerdem setzen Sie noch das SGID-Bit:<br />

# cd /home/projekt<br />

# chgrp projekt /home/projekt<br />

# chmod u=rwx,g=srwx /home/projekt<br />

Wenn hugo jetzt eine Datei in /home/projekt anlegt, sollte diese der Gruppe<br />

projekt zugeordnet sein:<br />

$ id<br />

uid=1000(hugo) gid=1000(hugo) groups=101(projekt),1000(hugo)<br />

$ touch /tmp/hugo.txt Test: gewöhnliches Verzeichnis<br />

Copyright © 2012 <strong>Linup</strong> <strong>Front</strong> GmbH

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!