Benutzer, Gruppen und Dateirechte
Unter Ubuntu und Linux allgemein besitzt ein Standardbenutzer nur begrenzte Zugriffsrechte. Das kann bei einigen Funktionen zu Einschränkungen führen, die sich mit der richtigen Konfiguration jedoch beseitigen lassen.
Unter Ubuntu besitzt ein Standardbenutzer nur begrenzte Zugriffsrechte. Die lassen sich jedoch erweitern
Linux ist als Mehrbenutzersystem konzipiert und bietet ein ausgefeiltes Rechtesystem. Ein Standardbenutzerkonto bekommt vollen Zugriff auf das eigene Home-verzeichnis, aber sonst nur auf wenige andere Ordner. Das Systemverwalterkonto „root“hat dagegen alle Rechte im gesamten Dateisystem. Zwischen diesen Extremen liegen jedoch zahlreiche Abstufungen. Obwohl das Linux-rechtesystem nicht besonders kompliziert ist, kommt es immer wieder zu Problemen aufgrund mangelnder Benutzerrechte. Dann ist beispielsweise kein Zugriff auf eine zweite Festplatte oder auf die Dateien einer Netzwerkfreigabe möglich.
Die Aussagen in diesem Artikel gelten für Ubuntu 18.04. Bei anderen Distributionen funktioniert es entsprechend, es gibt allerdings punktuelle Abweichungen bei der Benutzung einzelner Tools oder der Beschriftung von Menüpunkten.
1. Systematik der Benutzerrechte
Jedes Element im Dateisystem hat unter Linux einen Eigentümer und es gehört einer Gruppe. Die Zugriffsrechte werden getrennt für Eigentümer und Gruppe über die Modi „Lesen“, „Schreiben“und „Ausführen/ Suchen“bestimmt. Letzterer bezieht sich bei Ordnern auf das fundamentale Recht, den Ordner zu öffnen, bei Dateien dagegen auf das Ausführungsrecht. Fehlt dieses, so lässt sich eine Datei nicht als Programm starten. Ist ein Benutzer weder Eigentümer noch Mitglied der definierten Gruppe, gehört er zu „Andere“. Auch für ihn können Sie die drei genannten Modi einstellen. Es lassen sich daher insgesamt neun Zugriffsrechte
vergeben: „Lesen“, „Schreiben“und „Ausführen/suchen“jeweils für den Eigentümer, die Gruppe und für andere Benutzer. Die Rechte für Ordner wirken sich indirekt auch auf die darin liegenden Ordner aus. Wenn Sie „Ausführen/suchen“verbieten, gilt dies ebenfalls für die darunterliegenden Ordner. Es gibt eine Besonderheit: Ist dieses Recht bei einem Ordner erlaubt, aber „Lesen“nicht, so kann ein anderer Benutzer eine darin befindliche Datei öffnen, wenn ihm der Pfad beziehungsweise Dateiname bekannt ist.
2. Rechte im Dateimanager
Welche Rechte für einen Ordner oder eine Datei gelten, ermitteln Sie unter Ubuntu im Dateimanager Nautilus („Dateien“). Wählen Sie eine Datei oder einen Ordner mit der rechten Maustaste aus, gehen Sie im Menü auf „Eigenschaften“und daraufhin auf die Registerkarte „Zugriffsrechte“. Hinter „Zugriff“
können Sie die Rechte für „Besitzer“, „Gruppe“sowie „Andere“festlegen, außerdem lässt sich die Gruppe ändern. Standardmäßig sind Gruppe und Benutzer im Home-verzeichnis identisch. Mittels Klick auf die Schaltfläche „Zugriffsrechte der enthaltenen Dateien ändern“lassen sich bei Ordnern die Rechte rekursiv für alle enthaltenen Elemente setzen.
Sie werden bemerken, dass bei Ubuntu die Rechte für „Andere“mit „Auf Dateien zugreifen“eingestellt ist. Andere Benutzer können deshalb den Inhalt fremder Homeverzeichnisse einsehen und Dateien darin öffnen, jedoch nicht ändern. Wenn Sie das nicht möchten, setzen Sie für Ihr Benutzerverzeichnis unter „/home“die Rechte für „Andere“hinter Zugriff auf „Keiner“. Das gilt dann auch für alle Unterverzeichnisse. Rechte in fremden Ordnern setzen: Die Rechte lassen sich über den Dateimanager nur bei Elementen ändern, deren Eigentü
mer Sie sind. Für andere Dateiobjekte benötigen Sie deshalb den Dateimanager mit erhöhten Rechten. Das geht am einfachsten, indem Sie das Paket „nautilus-admin“installieren und sich ab- und wieder anmelden. Das Kontextmenü von Ordnern zeigt nun die Option „Als Administrator öffnen“. Tippen Sie Ihr Passwort ein und klicken Sie auf „Anmelden“. Im Anschluss daran öffnet sich ein neues Nautilus-fenster mit uneingeschränkten administrativen Rechten. Wenn Sie den Ordner über die Seitenleiste wechseln, gehen die Admin-rechte wieder verloren. Verwenden Sie zur Navigation daher einen Klick auf den Pfad-bestandteil „/“in der Adressleiste. Mit Strg-l lässt sich die Eingabezeile einblenden. Sie sehen in der Folge, dass vor dem Pfad das Präfix „ad min://“steht. Tragen Sie einfach den gewünschten Pfad ein, beispielsweise „ad min:///etc“(drei Slashes), um den Ordner als Administrator zu öffnen.
3. Benutzerrechte auf der Kommandozeile verwalten
Im Terminal-fenster lassen sich Zugriffsrechte flexibler kontrollieren als im Dateimanager. Mit chown ändern Sie den Eigentümer und mit chmod die Zugriffsrechte von Elementen im Dateisystem. Dazu ein Beispiel: Auf Ihrem Rechner läuft der Webserver Apache und Sie haben Wordpress im Ordner „/var/www/wordpress“installiert. Sie haben die Wordpress-dateien mit administrativen Rechten in diesen Ordner kopiert, deshalb gehören alle Elemente erst einmal dem Benutzer „root“. Die Gruppe ist ebenfalls auf „root“gesetzt. Das Beispiel gilt sinngemäß für alle Ordner, die mehrere Benutzer gemeinsam nutzen wollen. Dazu gehören auch Serverdienste, die unter einem eigenen Konto laufen.
Apache wird unter Ubuntu über das Benutzerkonto „www-data“gestartet, das zur gleichnamigen Gruppe gehört.
Die Dateien und Ordner unter „/var/www/ wordpress“müssen jedoch dem Apachenutzer gehören, damit sich über das Wordpress-back-end Updates und Plug-ins installieren lassen. Folglich ist es erforderlich, die Rechte zu ändern:
chown -R www-data:www-data /var/
www/wordpress
Der Parameter „-R“steht für rekursiv. Damit wirkt sich der Befehl auf alle enthaltenen Ordner und Dateien aus. Dahinter stehen der neue Besitzer und die Gruppe. Indem Sie den Besitz aller Ordner und Dateien an „www-data“übertragen, haben der Apache-server und damit auch Wordpress das Recht, hier Konfigurationsdateien zu erzeugen und Dateien zu erstellen. Sensible Dateien sollten Sie nach dem Abschluss der Wordpress-einrichtung schützen, indem Sie Rechte wieder entziehen. Die grundlegende Wordpress-konfigurationsdatei „wp-config.php“beispielsweise sollten mögliche Angreifer nicht manipulieren dürfen.
Dem Server genügt der Lesezugriff, wenn Wordpress fertig eingerichtet ist. Mithilfe der nachfolgenden zwei Zeilen lässt sich dies umsetzen:
chmod a-w /var/www/wordpress/wpconfig.php chmod go-r /var/www/wordpress/wpconfig.php
Der Parameter „a“bezieht sich auf „Alle“, das heißt also auf den Besitzer, die Gruppe sowie andere Benutzer. „-w“entzieht das Schreibrecht. In der zweiten Zeile entfernen Sie das Recht „Lesen“für die Gruppe und andere Benutzer. Es bleibt nur das Leserecht für den Eigentümer übrig. Die
möglichen Angaben bei chmod sind „u“für den Eigentümer, „g“für die Gruppe und „o“für andere. Diese kombinieren Sie mit den Rechten „r“(Lesen), „w“(Schreiben) und „x“(Ausführen/suchen). Ein „-“entfernt das Recht, „+“fügt es hinzu und „=“setzt die Rechte neu.
Damit Sie nicht zwei Befehlszeilen verwenden müssen, empfiehlt sich hier die oktale Schreibweise:
chmod 400 /var/www/wordpress/wpconfig.php
Der Wert „4“steht für „Lesen“und „0“für keine Rechte. Die erste Stelle bezieht sich auf den Eigentümer, die zweite auf die Gruppe und die dritte auf alle anderen Benutzer. Verwenden Sie den Wert „600“, um dem Eigentümer wieder Schreibrechte zu gewähren. Eine Übersicht mit der Bedeutung der nummerischen Werte finden Sie über www.pcwelt.de/8p42pf.
Im Terminal-fenster überprüfen Sie, welche Rechte für Dateien und Ordner gelten. Die gesetzten Rechte in einem Ordner prüfen Sie mittels des Befehls
ls -al /var/www/wordpress
ls zeigt die Rechte in der ersten Spalte mit „r“, „w“und „x“(Lesen, Schreiben, Ausführen) in der Reihenfolge Eigentümer, Gruppe und andere Benutzer an. Um sich die Rechte in oktaler Schreibweise anzeigen zu lassen, verwenden Sie diesen Befehl:
stat -c '%A %a %U %G %n' /var/www/
wordpress/*
Hinweis: Die Beschreibung gilt für den eigenen Ubuntu-rechner zu Hause und für Rootserver im Rechenzentrum. Bei preisgünstigen Hosting-angeboten erfolgt der Upload der Wordpress-dateien per FTP. Die Zugriffsrechte sind dann automatisch so gesetzt, das Wordpress Lese- und Schreibzugriff erhält.
4. Zugriffsrechte mit chmod rekursiv ändern
Mit chmod lassen sich wie bei chown mit der zusätzlichen Option „-R“Zugriffsrechte rekursiv setzen. Dies wirkt sich dann auf Ordner und Dateien gleichermaßen aus. Wenn Sie beispielsweise den oktalen Wert „775“verwenden, erlauben Sie bei Ordnern Lesen, Schreiben und Suchen für Eigentümer, Gruppe sowie andere Benutzer. Bei Dateien setzt „775“allerdings das Recht „Ausführen“.
An sich ist das kein Problem, weil das etwa bei TXT- oder Php-dateien funktional zunächst nichts ändert. Auf einem über das Internet erreichbaren Server kann das jedoch von Hackern ausgenutzt werden. Aus der harmlosen Textdatei wird ein ausführbares Script, über das sich weiterer Schadcode absetzen lässt. Es ist daher sicherer, statt „chmod -R …“diese beiden Befehlszeilen zu verwenden: sudo find /var/www -type d -exec
chmod 775 {} + sudo find /var/www -type f -exec
chmod 664 {} +
Die erste Zeile wirkt sich auf alle Verzeichnisse („d“für Directories) unterhalb von „/var/www“aus und erlaubt Eigentümer und Gruppe den Vollzugriff. „Andere“dürfen den Inhalt der Verzeichnisse sehen. Die zweite Zeile ändert die Rechte von Dateien („f“für Files). Eigentümer und Gruppe erhalten Lese- und Schreibrechte, „Andere“nur die Leseberechtigung.
5. Über Gruppen mehr Rechte einräumen
Standardbenutzer erhalten im Beispiel aus Punkt 4 nur Leserechte im Ordner „/var/ www“. Arbeiten mehrere Nutzer beispielsweise an Template-dateien oder Css-anpassungen, so teilen Sie diesen aus Sicherheitsgründen in der Regel nicht das rootpasswort mit. Eine Möglichkeit ist, Benutzer in die Gruppe des Webservers aufzunehmen und ihnen dann darüber Schreibrechte zu gewähren: sudo usermod -a -G www-data [User] Den Platzhalter „[User]“ersetzen Sie durch die Anmeldekennung des Benutzers, der die Rechte erhalten soll.
Wer zur Verwaltung von Benutzern und Gruppen die grafische Oberfläche bevorzugt, der installiert am besten das Paket gnome-system-tools („Benutzer und Gruppen“). Sie rufen es über eine Suche nach
„Benutzer“auf. Nach einem Klick auf „Gruppen verwalten“erstellen Sie neue Gruppen und fügen Benutzer zur Gruppe hinzu. Optimal ist diese Lösung jedoch nicht. Mitglieder der Gruppe „www-data“haben Vollzugriff auf alle Dateien, die dieser Gruppe gehören. Neu angelegte Dateien gehören dem jeweiligen Benutzer, die Gruppe verliert das Schreibrecht.
6. Rechte für Samba-freigaben
Bei Samba-freigaben wirken zwei Rechtesysteme: Die Zugriffsrechte im Dateisystem gelten weiterhin, sekundär treten nun die Samba-rechte beim Netzzugriff hinzu. Sie können deshalb Benutzern oder Gruppen den Zugriff im Dateisystem erlauben, über Samba aber verhindern (und umgekehrt). Über den Dateimanager Nautilus lässt sich ein Ordner im eigenen Home-verzeichnis über den Kontextmenüpunkt „Freigabe im lokalen Netzwerk“freigeben („usershare“im Unterschied zur administrativen Freigabe über „/etc/samba/smb.conf“). Sollte der Samba-server nicht eingerichtet sein, wird die Installation angefordert. Damit ein Benutzer die Funktion verwenden darf, muss er Mitglied der Gruppe „sambashare“sein. Der bei der Installation eingerichtete Erstbenutzer ist bereits in dieser Gruppe. Andere Benutzer fügen Sie so hinzu: sudo usermod -a -G sambashare [User] Setzen Sie ein Häkchen vor „Diesen Ordner freigeben“. Wenn Sie auch ein Häkchen vor „Anderen erlauben, Dateien in diesem Ordner zu erstellen und zu löschen“setzen, erscheint nach einem Klick auf „Freigabe erstellen“ein Dialog, in dem Sie auf „Die Zugriffsrechte automatisch setzen“klicken. Nautilus ändert dann selbständig die Rechte im Dateisystem, damit andere Benutzer Lese- und Schreibzugriff erhalten.
Bei Samba-freigaben ergibt sich aber das gleiche Problem wie bei Punkt 5 beschrieben. Dateien, die ein anderer Nutzer über das Netzwerk neu erstellt, gehören ihm. Ihnen selbst fehlt dann der Schreibzugriff. Samba bietet aber Einstellungen für die gewünschten Benutzerrechte. Öffnen Sie die Samba-konfigurationsdatei in einem Terminal mit dem Kommando
sudo gedit /etc/samba/smb.conf
Unter „[global]“fügen Sie diese Zeile ein:
usershare template share = vorlage
Fügen Sie am Ende der Datei die zehn Zeilen aus der Abbildung auf der nächsten Seite links oben an. Starten Sie Samba neu:
sudo service smbd restart
In unserem Beispiel erhalten alle Mitglieder der Gruppe „editoren“Schreibrechte über das Netzwerk („write list = @edito ren“). Neue Dateien gehören dem Besitzer des Ordners („inherit owner = yes“) und der Gruppe „editoren“(„force group = edito ren“). Die Zugriffsrechte von Dateien werden auf „664“gesetzt („create mask = 664“), was dem Eigentümer wie auch der Gruppe Schreibrecht einräumt. Bei Ordnern ergibt sich durch „directory mask = 775“Vollzugriff für den Eigentümer und die Gruppe. „-valid = no“sorgt dafür, dass die Vorlage nicht als Freigabe erscheint. Sie wird jedoch von sämtlichen Benutzerfreigaben über Nautilus berücksichtigt.
Globale administrative Freigaben lassen sich nach dem gleichen Schema konfigurieren. Hinter „path=“tragen Sie bitte den Pfad des Ordners ein, den Sie freigeben wollen. „-valid = no“löschen Sie. Dann setzen Sie im Dateisystem die Rechte für diesen Ordner so, dass alle Benutzer zugreifen dürfen (siehe Punkt 4).
7. Rechte bei gemounteten Laufwerken
Usb-laufwerke, die mit dem Dateisystem NTFS oder FAT32 formatiert sind, erscheinen automatisch im Dateimanager. Jeder Nutzer hat Lese- und Schreibzugriff. Wenn Sie eine neue Festplatte einbauen und diese mit dem Dateisystem Ext4 formatieren, bekommen Sie standardmäßig nur Lesezugriff. Das Problem lässt sich über das Tool gnome-disks beheben („Laufwerke“).
Auf der linken Seite des Fensters wählen Sie die neue Festplatte, klicken dann im rechten Bereich des Fensters auf die Schaltfläche mit dem Zahnradsymbol und wählen „Partition formatieren“(eventuell vorhandene Dateien vorher sichern!).
Hinter „Typ“wählen Sie „Interne Disk für die ausschließliche Nutzung mit Linux Systemen (ext4)“und hinter „Name“geben Sie eine aussagekräftige Bezeichnung ein. Klicken Sie auf „Nächstes“und anschließend auf „Formatieren“.
Über die „Play“-schaltfläche neben dem Zahnradsymbol lässt sich die neue Partition in das Dateisystem unterhalb von „/media/ [User]/data“einbinden. Wenn Sie sich die Zugriffsrechte über den Dateimanager ansehen (siehe Punkt 2), dann stellen Sie fest, dass der Ordner Ihnen gehört und nur Sie Vollzugriff haben.
Damit auch andere das Laufwerk verwenden können, hängen Sie die Partition über die „Stop“-schaltfläche wieder aus. Klicken Sie auf das Zahnradsymbol und wählen Sie jetzt „Einhängeoptionen bearbeiten“. Setzen Sie den Schalter hinter „Vorgaben der Benutzersitzung“auf „Aus“. Hinter „Einhängepunkt“geben Sie das gewünschte Verzeichnis an, zum Beispiel „/mnt/data“. Das Verzeichnis muss nicht existieren, es wird automatisch erstellt. Klicken Sie auf „OK“und bestätigen Sie mit Ihrem Passwort. Klicken Sie auf die „Play“-schaltfläche, um das Laufwerk wieder einzubinden. Das allein genügt jedoch noch nicht, denn das Verzeichnis „/mnt/data“gehört auch jetzt dem Nutzer, der es angelegt hat. Damit auch andere Benutzer des Rechners auf die Dateien zugreifen können, gehen Sie nun im Dateimanager auf „/mnt/data“, wählen im Kontextmenü „Eigenschaften“und gehen danach auf die Registerkarte „Zugriffsrechte“. Ändern Sie für „Andere“hinter „Zugriff“die Einstellung in „Auf Dateien zugreifen“. Soll auch der Schreibzugriff möglich sein, so wählen Sie „Dateien erstellen und löschen“. Auch hier ergibt sich ein Problem mit den Zugriffsrechten: Legt ein Benutzer Ordner oder Dateien an, gehören sie ihm, und allen anderen Benutzern fehlt der Schreibzugriff. Die Lösung heißt „Access Control Lists“: sudo setfacl -R -m u::rwx,
g:editoren:rwx,o::rx /mnt/data sudo setfacl -R -d -m u::rwx,
g:editoren:rwx,o::rx /mnt/data
Der Besitzer und die Gruppe „editoren“bekommen Lese- wie auch Schreibrechte („u::rwx,g:editoren:rwx“). Andere Benutzer dürfen Dateien nur lesen („o::rx“).
8. Netzwerkressourcen mounten
Netzwerkfreigaben hängt Ubuntu ganz bequem über den Dateimanager in das Dateisystem ein („Andere Orte –› Netzwerk“). In der Adressleiste erscheint sodann ein Pfad in der Form „smb://[server]/[freiga be]“. Im Dateisystem ist das Netzwerklaufwerk unterhalb von „/run/user/[user-id]/ gvfs/[…]“zu finden.
Wem dieser Pfad zu lang ist, beispielsweise für die Verwendung in Scripts, der verwendet alternativ das Tool smbnetfs (mit gleichnamigem Paketnamen). Damit können Sie einen Ordner im eigenen Home-verzeichnis als Mountpunkt verwenden. Das Tool benötigt die Konfigurationsdatei „~/.smb/smb netfs.conf“und einen Mountpunkt:
mkdir ~/.smb mkdir -p ~/mnt/smb gedit ~/.smb/smbnetfs.conf
Fügen Sie im Editor die folgenden drei Zeilen in die „smbnetfs.conf“ein:
auth [Server] "[Benutzer]"
"[Password]" host [Server] visible=true smb_query_browsers "false"
Die Platzhalter ersetzen Sie durch die Daten für Ihren Dateiserver. Um das Passwort vor unbefugten Zugriffen zu schützen, beschränken Sie die Zugriffsrechte:
chmod 0600 ~/.smb/smbnetfs.conf
Danach binden Sie die Freigabe mit
smbnetfs /home/[benutzer]/mnt/smb
ein. Der Pfad ist dann bequem im Terminal erreichbar und das Laufwerk taucht automatisch im Dateimanager auf. Soll die Einbindung beim Systemstart automatisch erfolgen, so erstellen Sie einfach einen Autostarter mit dieser Befehlszeile über das Tool „Startprogramme“.