![]() |
|
||||||||||||||||||
|
|||||||||||||||||||
|
|||||||||||||||||||
|
||
|
TFT Monitor bei
Mercateo kaufen.
Neues Netbook? Ein Preisvergleich lohnt sich. Bei uns finden sie Notebooks, PDAs und Drucker mit Testberichten und Tipps. Diamant Buchhaltungssoftware – transparent und detailliert auch für die Konzernbuchhaltung. Günstige Shareware Programme als direkte Downloads im Software Portal. Bis zu 70% sparen durch Preisvergleich. |
||
|
Zu BefehlRechte und Pflichten -- meine oder Deine Datei?von Heike Jurzik |
|
Dateien und Verzeichnisse haben unter Unix nicht nur einen Besitzer, sondern auch eine ganze Liste von Zugriffsrechten -- eine gute Grundlage, um gezielten Zugang zu Files erlauben oder verbieten zu können. Solche Berechtigungen legen ebenfalls fest, ob eine Datei ausführbar ist und wer diese ausführen darf. Mit dem Kommando ls (für englisch "list") und dem Parameter -l kann man nachschauen, wie das für einzelne Files aussieht:
huhn@huehnerstall ~ > ls -l drwxr-xr-x 3 huhn huhn 1024 Aug 21 18:56 ./ drwxr-xr-x 11 huhn huhn 1024 Aug 5 14:33 ../ -rw-r--r-- 1 huhn games 7790 Aug 5 15:32 datei -rwxr-xr-x 1 huhn huhn 7780 Aug 5 17:19 datei2-rw-r--r-- sind die Zugriffsrechte für datei, der Besitzer heißt huhn, und der Name der Gruppe ist games. Wie schlüsselt man aber die Kombination aus Strichen und Buchstaben für die Rechte auf? Das erste Zeichen steht für den Dateityp, hier ein "-" für eine normale Datei. Alternativ könnte dort ein "d" für ein Verzeichnis ("directory") auftauchen, ein "l" für einen symbolischen Link usw. Das "r" steht für Leseerlaubnis ("read"), das "w" für Schreibberechtigung ("write") und das "x" für die Erlaubnis, die Datei ausführen zu dürfen ("executable"). Die ersten drei Zeichen gehören zum Dateieigentümer, die nächsten drei zur Gruppe, und die letzte Dreiergruppe gehört zu allen übrigen Benutzern des Systems. Je nachdem, welcher Buchstabe dort erscheint, darf das File entsprechend gelesen, geschrieben oder ausgeführt werden. Für das File datei in dem Beispiel oben gilt: Der Besitzer huhn darf die Datei lesen und verändern, Angehörige der Gruppe games und alle anderen Benutzer dürfen sie lesen. Die datei2 darf vom Besitzer gelesen, verändert und ausgeführt werden, die anderen Benutzer dürfen sie lesen und ausführen, aber nicht darin schreiben.
Das klingt auf den ersten Blick alles recht kompliziert, wird aber schnell klar, wenn man sich ein paar Beispiele dazu anschaut:
huhn@huehnerstall ~ > chmod g+w datei huhn@huehnerstall ~ > ls -l datei -rw-rw-r-- 1 huhn games 0 Aug 5 15:32 datei
Die Übersetzung lautet: Ändere die Rechte für die Gruppe ("g") dahingehend, dass Schreibrechte ("w") zusätzlich ("+") bestehen. Jetzt kann also nicht nur der Besitzer, sondern auch jedes Mitglied der Gruppe die Datei verändern.
huhn@huehnerstall ~ > chmod o=rx datei huhn@huehnerstall ~ > ls -l datei -------r-x 1 huhn games 0 Aug 5 15:32 datei
Dieser Aufruf setzt die Rechte für alle übrigen Benutzer explizit auf "r-x". Natürlich können auch mehrere Schritte zu einem einzigen zusammengefasst werden. chmod ug=rx,u+s datei erlaubt zunächst dem Eigentümer und der Gruppe, die Datei zu lesen und auszuführen, und setzt dann das s-Bit für den Eigentümer:
-r-sr-xr-x 1 huhn games 0 Aug 5 15:32 datei
Eine andere Möglichkeit, mit chmod Rechte zu verändern, ist die Verwendung von drei- oder vierstelligen Oktalzahlen. Hierbei werden jedesmal alle Rechte mit einem Aufruf komplett neu gesetzt. Die Abkürzungen "u", "g" und "o" werden jeweils einer Ziffer zugeordnet. Jede dieser Zahlen ist eine Summe aus 4 (Leserechte), 2 (Schreibrechte) und 1 (Datei darf ausgeführt werden), z. B. lässt sich 777 in rwxrwxrwx oder 644 in rw-r--r-- übersetzen. Um das s-Bit zu setzen, wird noch eine weitere Ziffer an den Anfang gesetzt, wiederum die Summe aus 4 (s-Bit für den Eigentümer), 2 (s-Bit für die Gruppe) und 1 (t-Bit). Ein chmod 4755 datei setzt also die Rechte auf rwsr-xr-x -- alle dürfen die Datei lesen und ausführen, zusätzlich ist das s-Bit für den Eigentümer gesetzt.
| Rechte oktal und symbolisch |
|
In dieser Tabelle können Sie die "Umrechnung" zwischen symbolischen Rechten und der Darstellung in Oktalzahlen nachschlagen: --- 0 r-- 4 --x 1 r-x 5 (=4+1) -w- 2 rw- 6 (=4+2) -wx 3 (=2+1) rwx 7 (=4+2+1) |
Übrigens haben die neun Zugriffsrechte auch bei Verzeichnissen Gültigkeit, allerdings eine leicht abweichende Bedeutung: "r" steht weiterhin für "readable", d. h. andere Anwender können den Inhalt des Verzeichnisses mit ls betrachten. Bei einem gesetzten "x" darf mit dem Kommando cd directory in das Verzeichnis gewechselt werden. Nur, wenn "x" und "w" dort stehen, dürfen von anderen Benutzern fremde Dateien in das Verzeichnis kopiert werden, sonst gibt es eine Fehlermeldung der Form cp: cannot create regular file `/home/huhn/test/datei': Permission denied.
| Achtung Rekursion! |
|
Die Kommandos chmod, chown und chgrp arbeiten mit dem Parameter -R (die Langform ist --recursive) auch rekursiv. Wenn man z. B. einem ganzen Dateibaum die Schreibrechte für die Gruppe nehmen möchte, sollte man chmod -R g-w verzeichnisvon dessen übergeordnetem Verzeichnis aufrufen. Ein einfaches Beispiel macht das Problem schnell klar: Angenommen, es gibt ein Verzeichnis b, das in a liegt, und für b sollen eben diese Schreibrechte für die Gruppe entfernt werden -- der o. g. Aufruf erfolgt aus a heraus. Damit kann man alle Dateien, egal ob versteckt (.datei) oder nicht, in diesem untergeordneten Verzeichnis erfassen. Allerdings gelten die veränderten Rechte nun auch für das Unterverzeichnis. Was geschieht also, wenn man ein chmod -R 600 * aufruft? Bevor irgendetwas in einem Unterverzeichnis passiert, wird das * ausgewertet: Dateien, die auch in b erfasst werden sollen, können nicht mehr erreicht werden, weil zuerst die Rechte des Unterverzeichnisses auf drw------- gesetzt wurden, die Fehlermeldung des Systems lautet: chmod: b/datei: Permission denied. Der Trick, wie man das Unterverzeichnis selbst auslassen kann, liegt in einem kombinierten Aufruf aus den Kommandos find (s. "Zu Befehl 06/2000") und chmod:
huhn@huehnerstall ~ > find b -type f -exec chmod 600 \{\} \;
huhn@huehnerstall ~ > ls -l b
drwxr-xr-x 3 huhn huhn 1024 Aug 21 21:48 ./
drwxr-xr-x 3 huhn huhn 1024 Aug 21 22:27 ../
-rw------- 1 huhn huhn 0 Aug 21 20:53 .datei
-rw------- 1 huhn huhn 0 Aug 21 20:48 datei
Des Rätsels Lösung: Zuerst wird in b nach Dateien (-type f) gesucht, auf welche dann das Kommando chmod 600 angewendet wird. Das Unterverzeichnis selbst bleibt davon unberührt. |
Mit dem Programm chown lassen sich Dateien neue Besitzer zuordnen -- allerdings nur vom Superuser root. Der Aufruf ist einfach:
chown neuerBesitzer dateiAls "einfacher" User auf dem System erhält man die Fehlermeldung: chown: datei: Operation not permitted. Die Gruppe hingegen kann man selbst verändern, aber auch hier wird Sicherheit im System ganz groß geschrieben -- man darf die Datei nur den Gruppen zuordnen, in denen man selbst ist. Der Versuch, eine eigene Datei der Gruppe root "unterzuschieben" scheitert: chgrp: you are not a member of group `root': Operation not permitted. Wenn man nicht weiß, in welchen Gruppen man Mitglied ist, kann man übrigens einfach den Befehl id verwenden.
Neben separaten Aufrufen von chown und chgrp erlaubt Linux auch das gleichzeitige Verändern von Eigentümer und Gruppe. Ist man als root eingeloggt, kann man mit chown user.gruppe datei das File einem neuen Benutzer und gleichzeitig einer neuen Gruppe zuweisen.
Falls Sie in einem alten Unix-Buch von der Möglichkeit lesen, dass jeder Anwender Dateien mit chown "verschenken" kann, dann lesen Sie ein wirklich altes Buch -- dies ging mit einigen Unix-Varianten tatsächlich, ist aber heute nicht mehr üblich, weil damit unter anderem Quota-Regelungen (Plattenplatz-Beschränkungen pro Anwender) unterlaufen werden können. Sollte chown wider Erwarten auch für Nicht-root-Anwender funktionieren, dann schauen Sie mal, ob /bin/chown ein s-Bit hat... (hge)
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.
Druckerfreundliche Version |
Feedback zu dieser Seite
|
Datenschutz |
© 2010 Linux New Media AG |
Last modified: 2008-04-22 13:57
[Linux-Magazin]
[LinuxUser]
[EasyLinux]
[Linux-Community]
[Ubuntu User]
[Linux Technical Review]
[Linux Magazine]
[Linux Pro Magazine]
[Ubuntu User]
[EasyLinux Poland]
[Linux Magazine Poland]
[Linux Magazine Brasil]
[EasyLinux Brasil]
[Linux Magazine Spain]