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 ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
208 14 Zugriffsrechte<br />
$ ls -l /tmp/hugo.txt<br />
-rw-r--r-- 1 hugo hugo 0 Jan 6 17:23 /tmp/hugo.txt<br />
$ touch /home/projekt/hugo.txt Projektverzeichnis<br />
$ ls -l /home/projekt/hugo.txt<br />
-rw-r--r-- 1 hugo projekt 0 Jan<br />
6 17:24 /home/projekt/hugo.txt<br />
Das ganze hat nur einen Schönheitsfehler, den Sie erkennen, wenn Sie sich<br />
die letzte Zeile <strong>des</strong> Beispiels anschauen: <strong>Die</strong> Datei hat zwar die richtige<br />
Gruppenzugehörigkeit, aber andere Mitglieder der Gruppe projekt dürfen<br />
sie trotzdem nur lesen. Wenn Sie möchten, dass alle Mitglieder von projekt<br />
schreiben dürfen, müssen Sie entweder nachträglich chmod anwenden (lästig)<br />
oder die umask so setzen, dass das Gruppenschreibrecht erhalten bleibt<br />
(siehe Übung 14.4).<br />
Der SGID-Modus verändert nur das Verhalten <strong>des</strong> Betriebssystems beim Erzeugen<br />
neuer Dateien. Der Umgang mit bereits existierenden Dateien ist in diesen<br />
Verzeichnissen völlig normal. Das bedeutet beispielsweise, dass eine Datei, die<br />
außerhalb <strong>des</strong> SGID-Verzeichnisses erzeugt wurde, beim Verschieben dorthin ihre<br />
ursprüngliche Gruppe behält (wohingegen sie beim Kopieren die Gruppe <strong>des</strong><br />
Verzeichnisses bekommen würde).<br />
Auch das Programm chgrp arbeitet in SGID-Verzeichnissen völlig normal: der<br />
Eigentümer einer Datei kann sie jeder Gruppe zueignen, der er selbst angehört.<br />
Gehört der Eigentümer nicht zu der Gruppe <strong>des</strong> Verzeichnisses, kann er die Datei<br />
mit chgrp nicht dieser Gruppe übergeben – dazu muss er sie in dem Verzeichnis<br />
neu erzeugen.<br />
B<br />
Es ist möglich, bei einem Verzeichnis das SUID-Bit zu setzen – diese Einstellung<br />
hat aber keine Wirkung.<br />
<strong>Linux</strong> unterstützt noch einen weiteren Spezialmodus für Verzeichnisse, bei<br />
dem das Löschen oder Umbenennen von darin enthaltenen Dateien nur dem Besitzer<br />
der jeweiligen Datei erlaubt ist:<br />
drwxrwxrwt 7 root root 1024 Apr 7 10:07 /tmp<br />
sticky bit<br />
Mit diesem t-Modus, dem sticky bit, kann einem Problem begegnet werden, das<br />
bei der gemeinsamen Verwendung öffentlicher Verzeichnisse entstehen kann: Das<br />
Schreibrecht für das Verzeichnis erlaubt auch das Löschen fremder Dateien, unabhängig<br />
von deren Zugriffsmodus und Besitzer! Beispielsweise sind die /tmp-<br />
Verzeichnisse öffentlicher Raum, in dem von vielen Programmen temporäre Dateien<br />
angelegt werden. Um darin Dateien anlegen zu können, haben alle Benutzer<br />
für diese Verzeichnisse Schreibrecht. Damit hat jeder Benutzer auch das Recht,<br />
Dateien in diesem Verzeichnis zu löschen.<br />
Normalerweise betrachtet das Betriebssystem beim Löschen oder Umbenennen<br />
einer Datei die Zugriffsrechte auf die Datei selbst nicht weiter. Wenn auf einem<br />
Verzeichnis das sticky bit gesetzt wird, kann eine Datei in diesem Verzeichnis<br />
anschließend nur von ihrem Eigentümer, dem Eigentümer <strong>des</strong> Verzeichnisses<br />
oder root gelöscht werden. Das sticky bit kann über die symbolische Angabe +t<br />
bzw. -t gesetzt oder gelöscht werden, oktal hat es in derselben Ziffer wie SUID<br />
und SGID den Wert 1.<br />
B<br />
Das sticky bit bekommt seinen Namen von einer weiteren Bedeutung, die es<br />
früher in anderen Unix-Systemen hatte: Seinerzeit wurden Programme vor<br />
dem Start komplett in den Swap-Speicher kopiert und nach dem Programmlauf<br />
wieder daraus entfernt. Programmdateien, auf denen das sticky bit gesetzt<br />
war, wurden dagegen auch noch nach dem Programmende im Swap-<br />
Speicher liegengelassen. <strong>Die</strong>s beschleunigte weitere Startvorgänge für dasselbe<br />
Programm, weil der anfängliche Kopiervorgang entfiel. <strong>Linux</strong> verwendet<br />
wie die meisten heutigen Unix-Systeme demand paging, holt also nur die<br />
Copyright © 2012 <strong>Linup</strong> <strong>Front</strong> GmbH