Chmod, Chgrp und Chown

Aus LinuxUser 03/2007

Chmod, Chgrp und Chown

Zutritt erlaubt!

Ein ausgefeiltes Benutzer- und Rechtesystem regelt unter Linux präzise, wer Zugriff worauf erhält. Die Besitzverhältnisse regeln Sie auf der Kommandozeile mit den Werkzeugen Chmod, Chgrp und Chown an.

Detailliert geregelte Zugriffsrechte für Dateien und Verzeichnisse machen Linux zu einem besonders sicheren Betriebssystem: Wenn genau festgelegt ist, wer Daten lesen, verändern oder bestimmte Programme ausführen darf, bietet das einen guten Schutz vor neugierigen Augen und versehentlich (oder absichtlich) herbeigeführten Fehlkonfigurationen.

Der Administrator root darf alles und verteilt die Rechte zum Lesen, Schreiben und Ausführen an die anderen Benutzer – systemweit. Sind Sie Eigentümer von Dateien oder Verzeichnissen, dann geben Sie diese bei Bedarf für andere Accounts frei. Gehören Sie als Mitglied zu einer bestimmten Benutzergruppe, dürfen Sie darüber hinaus die Gruppenzugehörigkeit von eigenen Dateien und Ordnern setzen und damit noch gezielter Dateien freigeben.

Von Rechten und Pflichten

Für jede Datei (und damit auch für Verzeichnisse, Gerätedateien und so weiter) ist unter Linux genau festgelegt, wer sie lesen, schreiben und ausführen darf. Jede Datei gehört darüber hinaus einem Benutzer sowie zu einer Gruppe. Für diese beiden Kategorien – sowie für Benutzer, die in keine der beiden fallen – werden die drei Rechte gesondert verteilt:

  • Leserecht: Benutzer dürfen den Inhalt einer Datei oder eines Ordners am Bildschirm anzeigen, kopieren und anderes mehr.
  • Schreibrecht: Dateien und Verzeichnisse dürfen verändert und die Änderungen gespeichert werden. Außerdem ist das Löschen erlaubt.
  • Ausführrecht: Für Programme heißt das, dass man sie ausführen darf. Das Ausführrecht für Verzeichnisse hingegen bedeutet, dass Benutzer in diese hineinwechseln dürfen. (Zusätzlich muss hier Leseerlaubnis bestehen, damit Benutzer den Inhalt des Ordners betrachten dürfen.)

Welche Zugriffsrechte für eine Datei gelten, erfahren Sie entweder in grafischen Dateimanagern wie Konqueror oder Nautilus, wenn Sie auf die detaillierte Ordner- bzw. Listenansicht umschalten, oder auf der Kommandozeile, indem Sie dem Befehl ls die Option -l mit auf den Weg geben (Abbildung 1).

Bei beiden Varianten sehen Sie die Rechte jeweils durch die Buchstaben r (“read” = lesen), w (“write” = schreiben) und x (“execute” = ausführen) repräsentiert: Die erste Dreiergruppe zeigt die Rechte des Eigentümers, die zweite die der Gruppe und die dritte die für alle anderen Benutzer. Ordner erkennen Sie durch ein vorangestelltes d (“directory” = Verzeichnis).

Darüber hinaus zeigen sowohl das Shellkommando als auch der Dateimanager den Besitzer und die Gruppenzugehörigkeit der Daten an: Die meisten Dateien in Abbildung 1 gehören dem Benutzer und der Gruppe petronella. Lediglich das Verzeichnis musik gehört zur Gruppe audio und lässt sich von Mitgliedern dieser Gruppe nicht nur lesen, sondern auch schreiben.

Abbildung 1: Die Zugriffsrechte können Sie sowohl mit Dateimanagern als auch auf der Shell mit     <code srcset=

ls -l einblenden.” width=”300″ height=”195″ /> Abbildung 1: Die Zugriffsrechte können Sie sowohl mit Dateimanagern als auch auf der Shell mit ls -l einblenden.

Spezialrechte: s- und t-Bits

Unter Linux gibt es zudem zwei Spezialrechte, das s-Bit (auch Setuid/Setgid-Bit genannt) und das t-Bit (auch Sticky-Bit genannt). Beide ersetzen in der Dreiergruppe rwx das x: Das s-Bit taucht in der Regel bei ausführbaren Dateien auf, das t-Bit kommt hingegen meistens bei Verzeichnissen zum Einsatz.

Wie der Name Setuid/Setgid-Bit (Set User ID respektive Set Group ID) vermuten lässt, sorgt dieses Zugriffsbit dafür, dass das Programm mit den Rechten des Benutzers oder der Gruppe läuft – egal, wer das Programm ausführt. Auf diese Weise erhalten unprivilegierte Benutzer Zugriff auf Dinge, die ihnen normalerweise verwehrt blieben. Das stellt zwar ein potenzielles Sicherheitsrisiko dar, dennoch hat das s-Bit aber durchaus seine Berechtigung; Viele Programme, darunter su, sudo, mount oder wie im folgenden Beispiel passwd benötigen das s-Bit:

$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 27132 Jul 11 20:06 /usr/bin/passwd*

Das Programm passwd ändert Kennwörter und greift dabei schreibend auf die Datei /etc/shadow zu, um dort das neue Passwort einzutragen. Standardmäßig ist diese Datei vor Schreibzugriffen unprivilegierter Nutzer geschützt und darf lediglich vom Administrator geschrieben werden, da sonst jeder User sämtliche Benutzerkennwörter manipulieren könnte. Das s-Bit sorgt nun dafür, dass das Programm passwd mit der Benutzerkennung root läuft und im “Auftrag des Administrators” das neue Kennwort in /etc/shadow einträgt.

Das andere Sonderrecht, das t-Bit, taucht in der Regel bei gemeinsam genutzten Verzeichnissen (lesen, schreiben und ausführen für alle) anstelle des Execute-Flags auf und sorgt in diesem Fall dafür, dass Benutzer nur eigene Daten verändern und damit auch löschen dürfen. In der Regel ist das Sticky-Bit für /tmp gesetzt:

$ ls -ld /tmp
drwxrwxrwt 16 root root 4096 Jan 28 19:51 /tmp/

Der Ordner /tmp beherbergt temporäre Dateien mehrerer Benutzer. Ließen sich diese von jedermann lesen, schreiben und ausführen, dürfte theoretisch jeder andere Benutzer des Systems dort gründlich aufräumen und beliebige Daten löschen. Das t-Bit verhindert das und stellt sicher, dass Benutzer nur ihre eigenen Dateien (oder solche, für die sie eine Schreiberlaubnis haben) entfernen können. Einzige Ausnahme: Wenn Sie der Besitzer eines Ordners mit Sticky-Bit sind, dürfen Sie dort auch löschen.

Rechte anpassen – <C>chmod<C>

Mit dem Programm chmod verändern Sie die Zugriffsrechte von Dateien und Verzeichnissen – vorausgesetzt Sie sind der Eigentümer oder der Administrator des Systems. Chmod versteht zwei verschiedene Arten von Befehlen.

Zum einen können Sie die Rechte über Buchstaben definieren. Dabei stehen u für “user” (Eigentümer), g für “group” (Gruppe), o für “others” (alle anderen) sowie r für “read” (lesen), w für “write” (schreiben), x für “execute” (ausführen), s für das Setuid-/Setgid-Bit und schließlich t für das Sticky-Bit zur Verfügung.

Weiterhin verwenden Sie Plus-, Minus- und Gleichheitszeichen, um chmod mitzuteilen, dass Rechte hinzukommen, entfallen oder genau diese gesetzt werden. Um beispielsweise einer Gruppe das Lese- und Schreibrecht für eine Datei hinzuzufügen, tippen Sie chmod g+rw Datei. Auf ähnliche Art und Weise entziehen Sie Berechtigungen: Der Aufruf chmod o-rwx Datei nimmt allen Benutzern, die nicht Eigentümer oder Mitglieder der Gruppe sind, auf einen Schlag alle Rechte. Beide Kommandos lassen sich auch kombinieren:

chmod g+rw,o-rwx datei

Um genau die im Aufruf definierten Rechte zu setzen, verwenden Sie, wie bereits erwähnt, das Gleichheitszeichen. So räumt der Befehl

chmod ugo=rxw Verzeichnis

für das angegebene Verzeichnis dem Eigentümer, den Gruppenmitglieder sowie auch allen anderen Lese-, Schreib- und Ausführrechte ein.

TIPP

Statt ugo dürfen Sie beim Aufruf von chmod auch a für “alle” schreiben.

Zum anderen versteht chmod auch Ziffern: Im Programmaufruf verwenden Sie anstelle der Buchstabenkombinationen drei- oder vierstellige Oktalzahlen. Die Zahlen errechnen Sie folgendermaßen: 4 steht für Leserechte, 2 für Schreibrechte und 1 für Ausführrechte; die erste Ziffer meint den Eigentümer, die zweite die Gruppe und die dritte alle anderen.

Daraus ergibt sich beispielsweise 644 für u=rw,go=r (Ergebnis: rw-r--r--) oder 777 für a=rwx (Ergebnis: rwxrwxrwx); die Tabelle “Übersicht Zugriffsrechte” schlüsselt dazu die Einzelheiten auf.

Übersicht Zugriffsrechte

Oktalziffern Buchstaben
0
1 –x
2 -w-
3 (= 2+1) -wx
4 r–
5 (= 4+1) r-x
6 (= 4+2) rw-
7 (= 4+2+1) rwx

Wollen Sie das s- oder t-Bit über Ziffern definieren, schreiben Sie diese als vierte Zahl vor die Dreiergruppe. Dabei steht 4 für das s-Bit des Eigentümers (Setuid), 2 für das s-Bit der Gruppe (Setgid) und 1 für das t-Bit. Ein Beispiel dazu finden Sie in Listing 1.

Listing 1
$ ls -l skript.sh
-rw-r--r-- 1 huhn huhn 3191789 Oct  6 05:01 skript.sh
$ chmod 4755 skript.sh
$ ls -l skript.sh
-rwsr-xr-x 1 huhn huhn 3191789 Oct  6 05:01 skript.sh

Gruppenzugehörigkeit ändern

Als “normaler” Benutzer dürfen Sie eigene Dateien bestimmten Gruppen zuweisen. Das setzt allerdings voraus, dass Sie selbst dort Mitglied sind. Zu welchen Gruppen Sie gehören, erfahren Sie über das folgende Kommando:

$ groups
huhn dialout cdrom floppy audio video

Um eine Datei der Gruppe audio zuzuordnen, tippen Sie beispielsweise: chgrp audio Datei.

Besitzer- und Gruppenwechsel

Der Systemverwalter darf unter Linux Dateien und Verzeichnissen einen neuen Eigentümer und eine neue Gruppe zuweisen. Haben Sie beispielsweise von Hand einen neuen Account namens mike angelegt, diesem ein Home-Verzeichnis und die wichtigsten Konfigurationsdateien aus /etc/skel verpasst [2], dann sorgen Sie zu guter Letzt noch dafür, dass der Benutzer sich häuslich einrichten kann und das neue Zuhause samt aller Unterverzeichnisse auch wirklich ihm gehört.

Der folgende Befehl “schenkt” das Home-Verzeichnis samt allen Dateien (auch den versteckten Konfigurationsdateien) dem Benutzer mike:

chown -R mike /home/mike

Die Option -R, die hier zum Einsatz kommt, sorgt dafür, dass chown rekursiv arbeitet (siehe nächster Abschnitt). Praktischerweise können Sie im selben Aufruf auch eine neue Gruppenzugehörigkeit der Daten definieren:

chown -R mike:mike /home/mike

Sie hängen also einfach den Namen der Gruppe (bei einigen Distributionen gibt es eine Standardgruppe users, andere Systeme wählen den Benutzernamen als Standardgruppe) getrennt durch einen Doppelpunkt an den Accountnamen an.

Bis in den letzten Winkel

Alle drei Tools chmod, chgrp und chown, kennen den Parameter -R, der rekursiv arbeitet. Möchten Sie beispielsweise ein Verzeichnis samt den darin enthaltenen Dateien und Unterverzeichnissen für Mitglieder der Gruppe video freigeben, so tippen Sie:

chgrp -R video Verzeichnis

Auch im Zusammenhang mit dem Befehl chmod spart die Option -R jede Menge Tipparbeit: Um diesem Ordner mit allen enthaltenen Daten das Lese-, Schreib- und Ausführrecht für alle Benutzer, die nicht Eigentümer oder Mitglied der Gruppe video sind, wieder zu nehmen, tippen Sie einfach:

chmod -R o-rwx Verzeichnis

Vorsicht ist bei solchen rekursiven Aktionen geboten, in denen Sie das Execute-Flag entziehen: Der Vertipper a-x statt o-x genügt, und Sie haben sich selbst gleich mit ausgesperrt – chmod entzieht zunächst dem übergeordneten Verzeichnis die Ausführrechte und nimmt damit die Möglichkeit, hineinzuwechseln und so die Dateien zu bearbeiten. Mit dem Einsatz von find[3] vermeiden Sie solche Missgeschicke:

find Verzeichnis -type f -exec chmod a-x "{}" ";"

Hier spürt der find-Aufruf zunächst einmal alle Dateien (-type f) auf und lässt erst dann chmod auf sie los – das Verzeichnis bleibt außen vor.

Von Anfang an

Welche Zugriffsrechte neu angelegte Dateien und Verzeichnisse erhalten, regelt die so genannte Umask. Der gleichnamige Befehl ohne weitere Angaben verrät die Voreinstellung:

$ umask
0022

Hier sehen Sie wiederum eine vierstellige Oktalzahl, die anzeigt, welche Rechte von den Standardwerten (für Dateien 0666, bei Verzeichnissen 0777) abgezogen werden. Das bedeutet im Klartext, dass neue Dateien 0644 erhalten (rw-r--r--) und neue Ordner mit 0755 (rwxr-xr-x) ausgestattet sind.

Um die Umask zu verändern, geben Sie den gleichnamigen Befehl und den neuen Wert auf der Kommandozeile ein:

umask 0077

Das führt dazu, dass neue Dateien und Verzeichnisse nur noch für den eigenen Besitzer zur Verfügung stehen. Die so definierte Umask gilt nur für die aktuelle Shell. Dauerhaft setzen Sie sie für Ihr Benutzerkonto über einen Eintrag in der Bash-Konfigurationsdatei ~/.bashrc. Als Administrator fügen Sie den Eintrag dagegen der Datei /etc/profile hinzu, um die Umask systemweit einzurichten. 

Glossar

Oktalzahlen

Im oktalen Zahlensystem ist 8 die Basis, d. h. es werden nur die acht Ziffern 0 bis 7 verwendet. Nach der 7 folgt direkt die 10, nach der 17 die 20 usw. Jede Ziffer einer Oktalzahl wird durch drei Bits repräsentiert; bei der Darstellung der Zugriffsrechte stellen drei Bit die Rechte einer Benutzerklasse dar [1].

Infos

[1] Oktalzahlen: http://de.wikipedia.org/wiki/Oktales_Zahlensystem

[2] Benutzerverwaltung: Heike Jurzik, “Zugang erlaubt!”, LinuxUser 05/2005, S. 90, http://www.linux-user.de/ausgabe/2005/05/090-zubefehl/

[3] Find und Locate: Christian Baun, “Spürnasen”, LinuxUser 05/2005, S. 88, http://www.linux-user.de/ausgabe/2005/05/088-find/

LinuxUser 03/2007 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben