Rechteverwaltung unter Linux

Aus LinuxUser 06/2009

Rechteverwaltung unter Linux

© sxc.hu

Zugangskontrolle

Linux ist simpel: Alles ist eine Datei – und wer was damit tun darf, legt man einfach über die Dateiberechtigungen fest.

Wer zum ersten Mal von Windows auf Linux umsteigt, muss sich zunächst daran gewöhnen, dass er nicht mehr alles darf. Es gibt Verzeichnisse und Programme, die nur der Systemadministrator lesen und ausführen darf, andere Verzeichnisse und Dateien dürfen normale Nutzer zwar lesen und kopieren, aber das Original nicht verändern oder löschen.

Wer darf was?

Das Linux-Rechtesystem stammt noch aus den Anfängen der Unix-Zeit und beschränkt sich auf drei verschiedene Handlungsrechte:

  • lesen (read, r)
  • schreiben (write, w)
  • ausführen (execute, x)

Da sich über diese drei Rechte zwar die Frage des “was” klären lässt, aber nicht “wer”, unterscheidet Linux zudem zwischen drei Besitzerrechten:

  • Eigentümer (user, u)
  • Gruppe (group, g)
  • Alle anderen (others, o)

Für jedes Besitzerrecht lässt sich individuell festlegen, welche Handlungsrechte dazugehören. Die Tabelle “Zugriffsrechte” verdeutlicht dies anhand einer Matrix.

Zugriffsrechte

  lesen schreiben ausführen
Eigentümer r– — — -w- — — –x — —
Gruppe — r– — — -w- — — –x —
Alle Anderen — — -r- — — -w- — — –x

Aus der Kombination der sechs Eigenschaften und verschiedenen Nutzergruppen lassen sich praktisch beliebig viele Zugriffsrechte festlegen. Öffnen Sie zum Beispiel über [Alt]+[F2] und den Befehl konsole das KDE-Terminalfenster und geben hier den Befehl ls -l ein, dann sehen Sie eine Ausgabe aller Dateien und Ordner Ihres Home-Verzeichnisses.

Zu Beginn jeder Zeile stehen die Rechte. Der Eintrag -rw-rw-r-- bedeutet zum Beispiel, dass der Eigentümer und alle Mitglieder der Gruppe, zu der die Datei gehört, die Datei lesen und (über-)schreiben dürfen, alle anderen dürfen die Datei nur lesen. Auch in den meisten grafischen Dateimangern können Sie sich die Rechte anzeigen lassen. In Dolphin (Abbildung 1) finden Sie die passenden Einstellungen unter AnsichtZusatzinformationen.

Abbildung 1: Der Eigentümer     <code srcset=

marcel und alle Angehörigen der Gruppe users dürfen die Datei lesen und verändern. Andere Nutzer dürfen die Datei nur lesen.” width=”300″ height=”188″ /> Abbildung 1: Der Eigentümer marcel und alle Angehörigen der Gruppe users dürfen die Datei lesen und verändern. Andere Nutzer dürfen die Datei nur lesen.

Eine kleine Ausnahme im Rechteschema nehmen die Verzeichnisse ein: Hier steht das x für die Erlaubnis, das Verzeichnis betreten zu dürfen und sich die Inhalte des Verzeichnisses anzuschauen. Verzeichnisse erkennen Sie zudem am führenden d bei der Ausgabe von ls -l, zum Beispiel drwxr-xr-x.

Rechte vergeben

Wie die meisten Linux-Aufgaben lässt sich auch das Rechtemanagement auf der Kommandozeile oder mit grafischen Tools vornehmen. Möchten Sie zum Beispiel Ihr Home-Verzeichnis so einrichten, dass sich darin außer Ihnen (und root) niemand umschauen darf, klicken Sie zum Beispiel in Konqueror oder Dolphin mit der rechten Maustaste auf das Home-Verzeichnis und wählen Eigenschaften. Auf dem Reiter Berechtigungen richten Sie dann über die Dropdown-Liste für Gruppe und Sonstige den Eintrag Unzulässig ein (Abbildung 2).

Abbildung 2: Per Rechtsklick legen Sie in den meisten grafischen Dateimanagern die Zugriffsrechte auf Dateien und Verzeichnisse fest.

Abbildung 2: Per Rechtsklick legen Sie in den meisten grafischen Dateimanagern die Zugriffsrechte auf Dateien und Verzeichnisse fest.

Auf der Kommandozeile hilft der Befehl chmod beim Einrichten der Benutzerrechte. Möchte der Benutzer marcel wie in obigem Beispiel dem Home-Verzeichnis sämtliche Rechte (außer den eigenen) entziehen, genügt dazu folgender Befehl:

$ chmod go-rx /home/marcel

Ein ls -ld /home/marcel zeigt daraufhin die Ausgabe drwx------ an. Um allen Nutzern Schreibrechte auf die Datei wichtig.txt zuzuteilen, müssten Sie folglich den Befehl chmod ugo+w wichtig.txt aufrufen. Dafür gibt es eine abgekürzte Schreibweise:

$ chmod a+w wichtig.txt

Achten Sie darauf, dass sich der Chmod-Befehl ohne Angabe der Nutzergruppe (zum Beispiel chmod +w datei.txt) nur auf den Eigentümer bezieht. Ein chmod -w geheim.txt entzieht somit nur Ihnen selbst die Schreibrechte. Um eine Datei in den Read-only-Modus zu versetzen, nutzen Sie besser chmod a-w geheim.txt.

Computer arbeiten bekanntlich nicht mit Buchstaben, sondern mit Zahlen. Anstelle der Buchstaben rwx können Sie auch die Zahlen 4, 2, 1 und 0 verwenden. Null bedeutet keine Rechte, 1 setzt das Ausführrecht, 2 das Schreibrecht und 4 das Leserecht. Der Befehl

$ chmod 444 wichtig.txt

setzt somit die Datei wichtig.txt in den Read-only-Modus, ein chmod 644 datei.txt erlaubt dem Besitzer das Lesen und Schreiben, der Gruppe und den übrigen Nutzern nur das Lesen und so weiter. Möchten Sie die Rechte rekursive also in sämtlichen Unterverzeichnissen ändern, rufen Sie chmod mit der Option -R auf.

Wenn Sie sich in Ihrem Home-Verzeichnis etwas umschauen, stellen Sie fest, dass die meisten Dateien auf den Wert 644 eingestellt sind, bei Verzeichnissen zeigt ein ls -ld in der Regel drwxr-xr-x, was dem Wert 755 entspricht. Bei beiden Einstellungen handelt es sich um die Standardwerte für die so genannte User File-Creation Mask, kurz Umask. Sie legt fest, welche Rechte neu angelegte Dateien und Verzeichnisse aufweisen.

Die meisten Distribution setzen die Umask beim Login automatisch über ein entsprechendes PAM-Modul (pam_umask.so), alternativ bietet sich das Setup über die Dateien /etc/profile (global) beziehungsweise ~/.profile (benutzerspezifisch) an. Welchen Wert Ihr Linux-System gerade nutzt, erfahren Sie über den Befehl umask. Er zeigt allerdings nicht die eingestellten Rechte an, sondern welche Rechte von allen möglichen Rechten abgezogen werden sollen.

Die Tabelle “Umask bestimmen” zeigt das an drei Beispielen. Sollen zum Beispiel der Eigentümer und die Gruppe vollen Zugriff auf eine Datei bekommen, die übrigen Nutzer jedoch nicht einmal Leserechte (Modus 660), lautet der passende Befehl

$ umask 006

Bei Verzeichnissen und ausführbaren Dateien beträgt der Wert der Summe aller Rechte 777. Die traditionelle Umask 022 richtet somit den Werte 755 ein. Aktuelle Distributionen zeigen bei der Ausgabe des Umask-Befehls eine vierstellige Zahl an. Das hängt damit zusammen, dass sich die Möglichkeiten der File-Creation Mask durch die erweiterten Attribute (Extended Attributes) erweitert haben. An der grundlegenden Nutzung der Umask hat sich aber nichts geändert.

Umask bestimmen

  Nur ich Standard Alle dürfen
Dateien
Modus 600 644 666
Alle Rechte 666 666 666
Umask 066 022 000
Verzeichnisse
Modus 700 755 777
Alle Rechte 777 777 777
Umask 077 022 000

Besitzer ändern

Arbeiten Sie oft auf der Konsole, haben Sie vielleicht schon einmal aus Versehen mit Root-Rechten ein Verzeichnis angelegt und darin auch schon gearbeitet. Möchten Sie nun Dateien aus diesem Verzeichnis ohne Root-Rechte öffnen, erhalten Sie eine Fehlermeldung. Als Lösung bieten sich zwei Wege an: Sie stellen die Dateirechte so ein, dass alle Nutzer die Datei bearbeiten dürfen, oder Sie ändern den Besitzer der Datei.

Den ersten Weg kennen Sie bereits, der zweite führt über chown. Mit chown marcel:users Datei stellt Root die gewünschten Rechte wieder her. Auch hier erspart ein -R Fleißarbeit und ändert die Werte für sämtliche Verzeichnisse und Dateien in Unterverzeichnissen. Übergeben Sie dem Befehl nur eine Option, dann bezeichnet diese den Benutzernamen; die Gruppe nach dem Doppelpunkt dürfen Sie weglassen.

Suid und Sticky

Um gemeinsam an einer Datei zu arbeiten, müssen alle Nutzer, die die Datei bearbeiten möchten, über Schreibrechte an der Datei verfügen. Da das Schreiben aber auch das Löschen enthält, kann es vorkommen, dass der Nutzer marcel eine Datei löscht, die eigentlich joerg gehört. Um solche Probleme zu verhindern, gibt es das so genannte Sticky Bit (t). Ist es für ein Verzeichnis gesetzt, darf nur noch der Eigentümer einer Datei diese löschen oder umbenennen. Das Schreiben in die Datei funktioniert aber weiterhin:

$ chmod +t doku.txt

Die meisten Distributionen nutzen das Sticky-Bit für das Verzeichnis /tmp. Früher kam das Sticky-Bit auch bei ausführbaren Dateien zum Einsatz, um Programme permanent im Arbeitsspeicher zu halten (daher der Begriff “sticky”). Diese Funktion wird heute aber nicht mehr genutzt.

Ebenfalls einen speziellen Platz nehmen das Setuid- und das Setgid-Bit (s) ein. Das Bit setzt die Benutzer- beziehungsweise Gruppen-ID für Programme und Verzeichnisse. Bei ausführbaren Dateien bedeutet das, dass ein Programm nicht mit den Rechten des Nutzers arbeitet, der das Programm gestartet hat, sondern mit den Rechten des Benutzers, dem die Datei gehört (in der Regel Root). Das Suid-Bit kommt bei zahlreichen Linux-Programmen zum Einsatz, die mehr Rechte benötigen, als dem normalen Nutzer zustehen, zum Beispiel mount, passwd und sudo. Da es generell ein Sicherheitsrisiko in sich birgt, sollte man es so wenig wie möglich einsetzen; eine Alternative bieten zum Beispiel die Posix File Capabilities [1].

Access Control Lists

Das bekannteste unter den erweiterten Attributen sind die Access Control Lists, kurz ACLs. Über ACLs lassen sich Zugriffsrechte für jeden einzelnen Nutzer individuell festlegen.

Angenommen, die drei Nutzer joerg, kristian und marcel arbeiten an einem Projekt, auf dessen Dokumente alle drei vollen Zugriff haben sollen. Die übrigen Nutzer sollen diese aber nicht einmal lesen dürfen. In traditioneller Unix-Manier würde der Administrator zu diesem Zweck eine neue Gruppe anlegen, joerg, kristian und marcel dieser Gruppe zuteilen und die Rechte auf das Arbeitsverzeichnis entsprechend setzen. Mit Access-Control-Listen reicht es, sämtlichen Nutzern den Zugriff zu verbieten und anschließend den gewünschten Anwendern den Zugriff zu gewähren.

Für das Nutzen von ACLs muss das Dateisystem über die Optionen user_xattr und acl eingehängt sein. Die genutzten Programme müssen zudem mit den erweiterten Attributen klar kommen, da diese sonst beim Speichern verlorengehen und unter Umständen dann die Rechte zu locker vergeben sind. Bei aktuellen Distributionen sollte der ACL-Support allerdings problemlos funktionieren.

Um einer Datei wie im obigen Beispiel nur per ACL Zugriff zu erlauben, wählen Sie diese zum Beispiel in Dolphin per Rechtklick aus und entziehen zunächst der Gruppe und allen anderen über EigenschaftenBerechtigungen sämtliche Zugriffsrechte. Danach klicken Sie auf Erweiterte Berechtigungen und wählen über Eintrag hinzufügen die gewünschte Gruppe oder den gewünschten Nutzer aus (Abbildung 3). Schneller erledigen Sie die Arbeit auf der Konsole. Hier richtet der Befehl

$ setfacl -m u:mona:rw datei.txt

den Lese- und Schreibzugriff für Mona ein. Analog dazu lassen sich auch Gruppen Rechte zuteilen. Gehört das Verzeichnis Bilder beispielsweise zur Gruppe kunst, gewähren Sie zusätzlich allen Mitgliedern der Gruppe arbeit den vollen Zugriff, ohne diese dazu in die Gruppe kunst aufnehmen zu müssen:

$ setfacl -m g:arbeit:rwx bilder
Abbildung 3: Außer dem Eigentümer selbst hat nur die Benutzerin     <code srcset=

lisa Zugriff auf dieses Verzeichnis.” width=”300″ height=”216″ /> Abbildung 3: Außer dem Eigentümer selbst hat nur die Benutzerin lisa Zugriff auf dieses Verzeichnis.

Das Auslesen der Access Control Lists erfolgt analog über den Befehl getfacl Datei. Ob eine Datei über erweiterte Attribute verfügt, zeigt auf der Konsole das Pluszeichen hinter der Rechteausgabe an (Abbildung 4).

Abbildung 4: Einzig das Pluszeichen hinter der Rechteangabe weist darauf hin, dass das Verzeichnis     <code srcset=

geheim über besondere Rechte verfügt.” width=”300″ height=”200″ /> Abbildung 4: Einzig das Pluszeichen hinter der Rechteangabe weist darauf hin, dass das Verzeichnis geheim über besondere Rechte verfügt.

Während Distributionen in der Anfangszeit der ACLs oft die zusätzlichen Rechte unterschlugen, geht man heute den umgekehrten Weg. Haben Sie zum Beispiel ein Verzeichnis mit chmod 700 auf restriktiven Zugriff gesetzt und erlauben danach über setfacl -m u:mona:rwx der Benutzerin Mona den Zugriff, zeigt ein ls -l zu den Rechten drwxrwx---+ als Information an.

Fazit

Die Rechtevergabe unter Linux funktioniert über die traditionelle Methode mit Lese-, Schreib- und Ausführungsrechten weitgehend problemlos. Die meisten Distributionen richten die Dateirechte in den Home-Verzeichnissen relativ locker ein: Hier lohnt es sich, auf Mehrbenutzerrechnern den Zugriff auf das Home-Verzeichnis einzuschränken. Über ACLs lässt sich der Zugriff für einzelne Nutzer im Nachhinein problemlos wieder erweitern.

Glossar

Extended Attributes

Neben den Standardattributen r, w und x bieten moderne Distributionen über die Extended Attributes ein deutlich feingliedrigeres Rechtemodell und weitere Features an. Die dazu nötigen Informationen speichert das Dateisystem in den Extended Attributes. Die nötige Mount-Option lautet in der Regel user_xattr.

Infos

[1] Posix File Capabilities: Marcel Hilzinger, “Grenzen setzen”, LinuxUser 06/2009, S. 36, http://www.linuxcommunity.de/artikel/18253

LinuxUser 06/2009 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
Nach oben