claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 12/2005

Zugriffsrechte: chmod, chgrp und chown

Zutritt verboten!

von Heike Jurzik


Die eigenen Daten zum Lesen oder Schreiben freigeben bzw. vor den Blicken neugieriger Benutzer schützen -- Linux gibt sich bei diesen Aufgaben gewohnt flexibel. Wir zeigen einen Weg durch den "Rechtedschungel".

Hände weg von fremden Daten -- dank eines ausgefeilten Rechtesystems ist auf Linux-Systemen genau geregelt, wer etwas lesen, verändern oder ein Programm starten darf. Damit aber nicht genug: Linux unterscheidet noch genauer zwischen den Rechten des Dateieigentümers, der Gruppenmitglieder und aller anderen Benutzer; nur der Administrator root darf alles.

Wir stellen die Kommandos chmod, chgrp und chown vor: Als Eigentümer bestimmen Sie für Ihre eigenen Daten, wer Zutritt zu welchen Bereichen hat, und als Administrator regeln Sie den Zugriff systemweit. Darüber hinaus darf Root Dateien einen neuen Besitzer geben -- Zutritt für Unbefugte verboten.

Alles geregelt

Linux als Mehrbenutzersystem bietet gleich mehrere Sicherheitsmechanismen, um Daten vor unberechtigtem Zugriff zu schützen. Zunächst hat jeder Benutzer seinen eigenen Arbeitsbereich für die persönlichen Dateien (das Home-Verzeichnis) und muss sich in der Regel mit Login-Namen und dem richtigen Passwort authentifizieren, um Zugang zum System zu erhalten. Darüber hinaus gibt es eine weitere Sicherheitsstufe, die so genannten Zugriffsrechte für Dateien und Verzeichnisse, die sich wie folgt aufschlüsseln lassen:

Die drei Rechte vergibt man weiterhin differenziert für den Dateieigentümer, für Mitglieder einer bestimmten Gruppe und für alle anderen Benutzer des Systems, die nicht in eine der beiden ersten Kategorien passen.

Im Auge des Betrachters

Etwas anschaulicher wird das, wenn Sie z. B. auf der Kommandozeile

ls -l

eingeben oder im Konqueror über Ansicht / Anzeigemodus auf die Detaillierte Ordner-Ansicht umschalten (Abbildung 1).

Abb. 1: KDEs Datei-Manager zeigt auch die Zugriffsrechte detailliert an.

In der Spalte Berechtigungen sehen Sie Dreiergruppen bestehend aus r ("read"), w ("write") und x ("execute"); wo Rechte nicht gesetzt sind, steht ein Bindestrich -. Die erste der Buchstabengruppen definiert die Rechte für den Besitzer, die zweite für die Gruppe und die dritte für alle anderen. Weiterhin zeigt Konqueror in dieser Ansicht auch den Namen des Besitzers und der Gruppe. Abbildung 1 verrät also, dass beispielsweise die Datei diff.diff lediglich für den Eigentümer huhnix les- und schreibbar ist. Der Ordner musik hingegen hat r, w und x für den Besitzer und Mitglieder der Gruppe audio gesetzt.

Die Vorteile liegen auf der Hand: Weil ein einfacher Benutzer normalerweise nur Schreibrechte im eigenen Home-Verzeichnis hat, sind die systemweiten Daten sicher vor unabsichtlichen Missgeschicken. Auf der anderen Seite sorgen ausführbare Programmdateien dafür, dass die Anwendungen unter einer normalen Benutzerkennung und nicht mit Administratorrechten laufen. Zudem ist es durch das Zusammenfassen von Benutzern in Gruppen möglich, noch gezielter Rechte zu vergeben: So richten viele Distributionen eine Gruppe namens audio ein, deren Mitglieder dann über /dev/dsp auf die Sound-Karte zugreifen dürfen. Es ist auch üblich, eine Gruppe von Benutzern einzurichten, die Zugriff auf CD/DVD-ROM-Laufwerke haben (meist disk oder cdrom).

Spezialrechte

Außer Lesen, Schreiben und Ausführen kennt Linux noch zwei Spezialfälle, die so genannten s- und t-Bits. Das Setuid-Bit (s-Bit) ist eine Zusatzangabe für ausführbare Dateien und ersetzt für den Eigentümer und/oder die Gruppe das x. Ist es gesetzt, läuft das Programm immer mit den Rechten des Dateieigentümers oder der Gruppe -- egal, wer es ausführt. Vorsicht ist allerdings geboten, wenn Sie als Administrator das Setuid-Bit für Programme setzen, die root gehören. Das stellt ein Sicherheitsrisiko dar, da alle Benutzer diese Programme mit Superuser-Rechten ausführen dürfen.

Das t-Bit (auch sticky-Bit genannt) ist zum Beispiel beim /tmp-Verzeichnis der temporären Dateien gesetzt (Abbildung 2). In diesem Ordner sammeln sich für gewöhnlich Daten von mehreren Benutzern an, darum haben alle Anwender Lese-, Schreib- und Ausführrechte, so dass auch jeder dort Dateien löschen darf. Das sticky-Bit sorgt nun dafür, dass Benutzer nur noch ihre eigenen Dateien entfernen dürfen. Sind Sie Eigentümer eines Ordners mit t-Bit, betrifft Sie diese Einschränkung nicht, und Sie dürfen in jedem Fall dort "aufräumen".

Abb. 2: Für das Verzeichnis "/tmp" ist normalerweise das Sticky-Bit gesetzt.

Rechte ändern mit "chmod"

Mit dem Kommando chmod verändern Sie die Zugriffsrechte von Dateien und Verzeichnissen. Aus Sicherheitsgründen dürfen Sie natürlich nur eigene Daten modifizieren; lediglich der Administrator rändert Rechte systemweit -- hier ist also Vorsicht geboten.

Als Parameter übergeben Sie chmod die neuen Rechte und die Namen der Dateien, die Sie ändern wollen. Dabei spezifizieren Sie durch Buchstaben, auf welche Benutzergruppen sich die Änderungen beziehen sollen. So steht u für den Eigentümer (englisch "user"), g für die Gruppe (englisch "group") und o für alle anderen (englisch "others"). Die neuen Rechte setzen Sie aus den schon bekannten Buchstaben r, w und x zusammen. Um einer Gruppe Leserechte für eine Datei zu geben, die bislang nur für den eigenen Benutzer les- und schreibbar ist, tippen Sie beispielsweise:

chmod g+r datei

Das Pluszeichen bedeutet, dass Rechte hinzukommen; entsprechend nehmen Sie die Leseberechtigung weg, indem Sie ein Minuszeichen einsetzen:

chmod g-r datei

Mit dem Gleichheitszeichen hingegen setzen Sie genau die Rechte, die im Aufruf angegeben sind. Eine Kombination aus u, g und o ist möglich: So geben Sie mit

chmod ug=rw datei

dem Besitzer und Mitgliedern der Gruppe Lese- und Schreibrechte, während alle Anderen außen vor bleiben. Eine praktische Abkürzung gibt es: Statt ugo schreiben Sie einfach a, wenn Sie "alle" meinen.

Auch das Sticky- und das Setuid-Bit setzen Sie über Buchstaben; die Abkürzungen sind t und s. So setzen Sie das s-Bit für die Gruppe beispielsweise mit:

chmod g=s datei

Kombination und Rekursion

Abgetrennt durch Kommata fassen Sie mehrere Arbeitsschritte zu einem zusammen. Der Befehl

chmod ug=rx,u+s datei

setzt für den Eigentümer und die Gruppe Lese- und Ausführrechte und zusätzlich das Setuid-Bit für den Eigentümer.

chmod arbeitet auf Wunsch ganze Verzeichnishierarchien rekursiv durch. Dazu setzen Sie einfach zusätzlich die Option -R ein. Um einem Verzeichnis und allen darin enthaltenen Dateien und Unterverzeichnissen die Lese-, Schreib- und Ausführrechte für alle anderen Benutzer auf dem System zu entziehen, tippen Sie:

chmod -R o-rwx verzeichnis

Im Zusammenhang mit dem Parameter -R und Verzeichnissen gilt es aufzupassen. Wollen Sie rekursiv das x-Flag nehmen und starten chmod mit chmod -R a-x, entzieht das Kommando natürlich auch den Verzeichnissen selbst das Ausführrecht. Das bedeutet aber, dass man nicht mehr hineinwechseln kann, und führt zum Abbruch der Aktion mit einer Fehlermeldung:

$ chmod -R a-x ordner/
chmod: ,,ordner/": Keine Berechtigung

Um einfach nur die Dateien des Ordners und aller Unterverzeichnisse zu erwischen, nehmen Sie das Kommando find [1] zur Hilfe. Suchen Sie mit diesem Programm (über die Option -type f) zunächst im Ordner und allen Unterverzeichnissen nach Dateien und wenden Sie auf diese anschließend das chmod-Kommando an:

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

Gruppenzugehörigkeit mit "chgrp" ändern

Das Kommando chgrp verändert die Gruppenzugehörigkeit von Dateien und Verzeichnissen -- auch hier hat Linux wieder eine Sicherheitsmaßnahme eingebaut und erlaubt Ihnen derartige Änderungen lediglich, wenn Sie selbst Mitglied dieser Gruppe sind. (Der Systemverwalter darf natürlich wieder alles.)

Standardmäßig gehört jeder Benutzer mindestens einer Gruppe an; die Verwaltungs-Tools der Distributionen achten beim Anlegen neuer Accounts darauf und bieten in der Regel an, den Benutzer in weitere Gruppen einzutragen (Abbildung 3).

Abb. 3: Per Mausklick fügen Sie in YaST neue Accounts nicht nur der Standardgruppe "users", sondern auch anderen Gruppen hinzu.

In welchen Gruppen Sie Mitglied sind, erfahren Sie schnell auf der Kommandozeile, indem Sie den Befehl groups eintippen:

$ groups
users dialout audio video

Dieser Benutzer darf also eigene Dateien den Gruppen users, dialout, audio und video zur Verfügung stellen. Auch hier folgen dem chgrp-Kommando zunächst die Angabe der neuen Gruppe und dann die Datei(en), z. B.:

chgrp audio datei

Auch dieses Programm bringt den Parameter -R mit, der rekursiv bis in den letzten Winkel arbeitet.

Besitzer ändern mit "chown"

Als Administrator root können Sie Dateien einen neuen Besitzer geben, dafür verwendet er den Befehl chown:

chown benutzer datei

Praktisch ist, dass Sie gleich in einem Aufruf eine neue Gruppenzugehörigkeit setzen können. Dazu setzen Sie hinter den Benutzernamen -- abgetrennt durch einen Doppelpunkt -- einfach den Namen der Gruppe:

chown benutzer:gruppe datei

Um rekursiv zu arbeiten, setzen Sie auch hier wieder die Option -R ein.

Alternative Konqueror

Die im Artikel vorgestellten Veränderungen können Sie statt in der Shell auch im Konqueror vornehmen, indem Sie mit der rechten Maustaste auf eine Datei oder ein Verzeichnis klicken und aus dem Kontextmenü Eigenschaften wählen. Auf dem Reiter Berechtigungen setzen Sie anschließend die gewünschten Rechte. In den Pull-down-Menüs hinter Eigentümer, Gruppe und Sonstige finden Sie jeweils Einträge, die r, w und x entsprechen (Abbildung 4).

Abb. 4: Es geht auch grafisch: KDEs Datei-Manager ermöglicht ebenfalls, neue Rechte zu setzen.

Die Checkbox Ausführbar setzt das x-Flag gleich für Eigentümer, Gruppe und alle anderen. Wer genauer zwischen den Zugangsberechtigungen unterscheiden möchte, klickt auf die Schaltfläche Erweiterte Berechtigungen und findet dort Checkboxen für alle Flags. Das s-Bit für den Eigentümer (Benutzer-ID setzen) und die Gruppe (Gruppen-ID setzen) bzw. das t-Bit (Sticky Bit) passen Sie in diesem Dialogfenster ebenfalls an.

Ist Ihnen das Hantieren mit den Buchstaben u, g, o, r, w, x, s und t auf der Shell zu unübersichtlich, bietet der Datei-Manager eine grafische Alternative. Da Sie den Konqueror über [Alt-F2] und Eingabe von kdesu konqueror auch im Administrator-Modus starten können, regeln Sie Zugriffsrechte so auch systemweit. Schneller geht es allerdings auf der Kommandozeile, und die Kombination aus find und chmod/chgrp ist unschlagbar, wenn es ums Automatisieren der Rechtevergabe geht. (hge)

Infos
[1] find-Artikel: Elisabeth Bauer, "Meisterdetektive -- Dateisuche mit find", EasyLinux 01/2004, S. 72 ff., http://www.easylinux.de/2004/01/072-find

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 | © 2014 Medialinx AG | Last modified: 2007-04-05 11:10

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]