689948

Datei- und Ordnerrechte in Linux im Überblick

06.10.2017 | 10:45 Uhr |

Kein Zugriff auf Dateien und Ordner? Die Rechteverwaltung im Linux-Dateisystem stammt von Unix: root, Benutzer und Gruppen sind einfache Grundlagen. Einige Szenarien verlangen trotzdem trickreiche Lösungen.

Die Systematik der Unix/Linux-Zugriffsrechte im Dateisystem ist einfach gehalten, aber äußerst wirksam. Für Server und Mehrbenutzersysteme ist Linux damit ideal, schließlich wollen systemnahe Dateien wirksam durch Zugriffe durch unprivilegierte Benutzer und deren Prozesse geschützt sein. Bei der Administration des eigenen Linux-Systems kann es nach größeren Konfigurationsänderungen aber immer wieder mal wieder Ärger mit Zugriffsrechten geben. Wenn Dateimanager oder die Kommandozeile „Zugriff verweigert“ beziehungsweise „Permission denied“ bei Dateizugriffen melden oder Editoren geöffnete Dateien nicht speichern wollen, dann fehlen die Rechte auf die Datei oder das Verzeichnis. Auslöser sind meist Nachlässigkeiten bei der Arbeit mit sudo oder mit dem root-Konto. Die typischen Zugriffsprobleme sind aber auch schnell wieder behoben.

Übrigens sind Zugriffsrechte unter Linux nur auf Unix-Dateisystemen relevant und dauerhaft. Externe Datenträger mit den Windows-Dateisystemen FAT, exFAT und NTFS bekommen für alle Dateien die Rechte des aktiven Benutzers zugewiesen.

Tipp: Die 10 wichtigsten Linux-Befehle für Einsteiger

Kein Zugriff: Dateien und Ordner

Um eine Script-Datei oder ein Programm auszuführen, müssen Sie dieses unter Linux ausführbar schalten. Dazu setzen Sie mit chmod das Execute-Bit.
Vergrößern Um eine Script-Datei oder ein Programm auszuführen, müssen Sie dieses unter Linux ausführbar schalten. Dazu setzen Sie mit chmod das Execute-Bit.

Ein häufiges Szenario unzureichender Zugriffsrechte im Dateisystem spielt sich im eigenen Home-Verzeichnis ab: Dort abgelegte Dateien oder Ordner verweigern dem Benutzer wegen fehlender Rechte den Zugriff. Ein Auslöser, der solche Dateien und Verzeichnisse überhaupt erst entstehen lässt, sind meist mit dem root-Account oder über sudo ausgeführte Aktionen oder Scripts, die Ordner und Dateien anlegen. Die Lösung besteht in einer Änderung der Besitzrechte in der Kommandozeile mit dem Befehl chown. Generell dürfen Rechte an Dateien und Ordnern, die anderen Benutzern oder root gehören, auch nur wieder mit root-Privilegien geändert werden, deshalb verlangt dieser Befehl ein vorangestelltes sudo oder einen Wechsel zum root-Konto mit su:

sudo chown [Benutzer] [Datei/Ordner]  

Dies ändert den Besitzer einer angegebenen einzelnen Datei auf den angegebenen Benutzer. Handelt es sich beim Ziel um eine ganze Ordnerstruktur mit Dateien und Unterverzeichnissen, so arbeitet chown mit dem Parameter „-R“ auch rekursiv:

sudo chown -R [Benutzer] [Ordner]

Nicht ausführbar: Scripts und Programme

Zu laxe Zugriffsrechte: Der Befehl find durchsucht das gesamte Dateisystem ausgenommen „/proc“, nach Dateien mit den oktalen Rechten 777, das heißt – für alle beschreibbar.
Vergrößern Zu laxe Zugriffsrechte: Der Befehl find durchsucht das gesamte Dateisystem ausgenommen „/proc“, nach Dateien mit den oktalen Rechten 777, das heißt – für alle beschreibbar.

Ausführbare Dateien unter Linux müssen in ihren Zugriffsrechten als ausführbar gekennzeichnet sein, ansonsten wird sie das System nicht einfach starten. Auch Programmdateien, die von externen Medien stammen, welche mit Windows-Dateisystem formatiert sind, lassen sich zunächst nicht ausführen. In der Kommandozeile fügt der Befehl

chmod +x [Datei]  

das Ausführen-Bit hinzu und anschließend ist die Script- oder Programmdatei im aktuellen Verzeichnis mit dem Aufruf ./[Datei] ausführbar. Linux geht dabei nicht nach der Dateiendung, um den Typ des Scripts oder Programms zu erkennen.

Binaries haben eine typische Bytefolge am Anfang der Datei. Bei Scripts gibt die erste Zeile, beispielsweise „#!/bin/bash“ vor, welcher Script-Interpreter gefragt ist.

Linux-Dateisystem - das bedeuten /bin, /boot, /etc, /opt & Co.

Sicherheitslücke: Unbegrenzter Vollzugriff

Wer keine Gruppen für gemeinsame Zugriffsrechte für Verzeichnisse und Dateien einrichtet, behilft sich oft mit einer simplen, aber potenziell unsicheren Vereinfachung: Dateien bekommen die kurzerhand mit chmod die oktalen Zugriffsrechte 666 oder im Fall von Verzeichnissen gar die Rechte 777 zugewiesen. So hat alle Welt Vollzugriff auf diese Dateisystem-Objekte. Auf externen Datenträgern mit Unix-Dateisystem wie Ext2/3/4, die aber trotzdem überall lesbar und beschreibbar sein sollen, ist das in Ordnung. Aber auf Servern und auf den meisten Desktop-PCs ist dies schlicht ein Konfigurationsfehler und eine Sicherheitslücke. Denn auch unprivilegierte Benutzer und Prozesse könnten diese Dateien und Verzeichnisse manipulieren.

Es gilt deshalb, zunächst Dateien und Verzeichnisse mit unbeschränkten Zugriffsrechten ausfindig zu machen. Das Kommando

sudo find / -path /proc -prune -o -type f -perm 666  

findet alle Dateien im gesamten Dateisystem, ausgenommen „/proc“, die von allen gelesen und beschrieben werden dürfen, und

sudo find / -path /proc -prune -o -type f -perm 777 

listet Dateien auf, die dazu noch ausführbar sind. Genauso findet

sudo find / -path /proc -prune -o -type d -perm 777  

Verzeichnisse, die allen zum Lesen und Schreiben offen stehen.

Ein besserer Weg: Anstatt für Dateien und Verzeichnisse uneingeschränkten Vollzugriff zu setzen, ist es sinnvoll, Gruppen für gemeinsam genutzte Dateien und Verzeichnisse zu verwenden. Der Befehl

chgrp [Gruppe] [Datei/Ordner]  

ändert die Gruppe von Dateisystem-Objekten. Für den Vollzugriff für Besitzer und Gruppe genügen dann bei Verzeichnissen die Rechte 775 sowie bei Dateien 664.

Berechtigungen im Verzeichnis auflisten: Statt der oktalen Berechtigungsbits zeigt der ls-Befehl pro Dateisystemobjekt die Read-Write-Execute-Rechte in Dreiergruppen als „r“, „w“ und „x“.
Vergrößern Berechtigungen im Verzeichnis auflisten: Statt der oktalen Berechtigungsbits zeigt der ls-Befehl pro Dateisystemobjekt die Read-Write-Execute-Rechte in Dreiergruppen als „r“, „w“ und „x“.

Rechte: Dateien oder Ordner

Der Befehl chmod kann nicht zwischen Dateien und Verzeichnissen unterscheiden. Bei einer Anwendung des Befehls auf eine Ordnerstruktur hätte das unerwünschte Auswirkungen, da sich beispielsweise Verzeichnisse nicht mehr öffnen lassen, wenn man ihnen die Berechtigungen zum Ausführen entzieht (das „Ausführen“-Recht bedeutet bei Ordnern das Recht, sie zu öffnen). Stattdessen brauchen Sie ein trickreicheres Kommando, das Verzeichnisse in Ruhe lässt und sich nur um Dateien kümmert. Um alle Dateien in Ordnern und Unterordnern im aktuellen Verzeichnis für Besitzer und Gruppe lesund schreibbar zu machen, ohne dabei Zugriffsrechte für Verzeichnisse zu ändern, dient dieser Befehl:

find . -type f -exec chmod 664 {} \;  

Analog dazu lässt sich find auch nur auf Verzeichnisse anwenden. Dazu ersetzen Sie den Parameter „f“ für „file“ gegen „d“ für „directory“:

find . -type d -exec chmod 775 {} \; 

Dieser Befehl wendet chmod 775 nur auf Ordner und Unterordner an, nicht aber auf Dateien.

Berechtigungen: Auflistung mit ls

Das wichtigste Werkzeug zur Auflistung und Änderung von Zugriffsrechten im Dateisystem bleibt die Kommandozeile: Hier zeigt die Eingabe des Befehls

ls -lha  

links in der Dateiliste die Zugriffsrechten. Lesen ist „r“, Schreiben entspricht „w“ und Öffnen beziehungsweise ausführen ist als „w“ angegeben.

Die erste Dreiergruppe betrifft den Besitzer der Datei, die zweite alle Benutzer seiner Gruppe und die dritte alle anderen Benutzer. Ein vorangestellter Buchstabe „d“ steht für Ordner (Directory).

0 Kommentare zu diesem Artikel

PC-WELT Marktplatz

689948