Tutoriel Linux

Einen Ordner unter Linux mit den richtigen Rechten erstellen

Débutant4 min de lecture

Ein Verzeichnis, das am falschen Ort oder mit zu offenen Rechten erstellt wurde, führt oft später zu Problemen. Der Befehl mkdir reicht aus, um zu beginnen, ersetzt jedoch nicht die Kontrolle über den Eigentümer, die Gruppe und die Berechtigungen.

Für ein persönliches Verzeichnis erstellen Sie es in Ihrem Benutzerordner. Für ein gemeinsames oder von einem Dienst genutztes Verzeichnis identifizieren Sie zunächst das Konto, das darin schreiben soll. Ein chmod 777 maskiert manchmal ein echtes Problem mit dem Eigentümer und erlaubt allen lokalen Konten, den Inhalt zu ändern.

Erstellen Sie das Verzeichnis am richtigen Ort

Vom aktuellen Verzeichnis aus erstellt der folgende Befehl ein einzelnes Verzeichnis:

mkdir backups

Mit einem absoluten Pfad wissen Sie genau, wo das Verzeichnis erstellt wird. Fügen Sie -p hinzu, wenn die übergeordneten Verzeichnisse fehlen können:

mkdir -p ~/projekte/site-test/logs

Ohne -p stoppt mkdir, wenn ~/projekte/site-test nicht existiert. Die Option verhindert auch einen Fehler, wenn das letzte Verzeichnis bereits vorhanden ist. Sie verwandelt keinen falschen Pfad in einen richtigen: Überprüfen Sie ihn mit pwd, bevor Sie den Befehl ausführen.

Um einen Bereich vorzubereiten, der Ihrem Konto gehören soll, bleiben Sie in Ihrem persönlichen Verzeichnis. So vermeiden Sie sudo, also ein Verzeichnis, das von root erstellt wurde, das Ihr Benutzer nicht mehr füllen kann:

mkdir -p ~/archive/2026
stat -c '%A %U:%G %n' ~/archive ~/archive/2026

Wählen Sie die geeigneten Rechte für die Nutzung

Ein Verzeichnis benötigt das Recht x, um durchquert zu werden. Bei einem Verzeichnis erlaubt r die Auflistung der Namen und w erlaubt das Hinzufügen, Umbenennen oder Löschen von Einträgen. Die tatsächlich angewandten Rechte hängen auch von Ihrer umask ab.

Für ein privates Verzeichnis erstellen Sie es mit einem expliziten Modus:

mkdir -m 700 ~/private-archive
stat -c '%A %a %U:%G %n' ~/private-archive

Der Modus 700 gewährt den Zugriff auf den Eigentümer und schließt das Verzeichnis für andere Benutzer aus. Für ein Verzeichnis, in dem eine Arbeitsgruppe lesen und schreiben muss, wählen Sie besser eine bekannte Gruppe und den Modus 2770:

sudo install -d -o alice -g team-web -m 2770 /srv/team-web
stat -c '%A %a %U:%G %n' /srv/team-web

Die 2 am Anfang aktiviert das setgid-Bit des Verzeichnisses. Neue Dateien und Unterverzeichnisse erben dann die Gruppe team-web. Diese Lösung verhindert, dass das Schreiben für alle Konten des Servers geöffnet wird. Überprüfen Sie, ob die erwarteten Mitglieder tatsächlich in dieser Gruppe sind mit id benutzername.

mkdir -m 777 erstellt ein Verzeichnis, das von jedem bearbeitet werden kann, danach kann die umask diesen Modus noch weiter einschränken. Verwenden Sie dies nicht, um einen Permission denied Fehler zu beheben. Überprüfen Sie stattdessen den vollständigen Pfad, seinen Eigentümer und die Rechte jedes übergeordneten Verzeichnisses:

namei -l /srv/team-web
ls -ld /srv /srv/team-web
id

Überprüfen Sie, bevor Sie das Verzeichnis einem Dienst übergeben

Ein Dienst, der unter www-data, postgres oder einem bestimmten Konto ausgeführt wird, sieht möglicherweise nicht die gleichen Rechte wie Ihre Sitzung. Konsultieren Sie dessen Benutzer, bevor Sie etwas ändern. Für systemd gibt dieses Kommando die für die Einheit konfigurierten Konten an:

systemctl show mein-dienst 
  -p User -p Group -p DynamicUser

Erstellen Sie dann das Verzeichnis mit dem erwarteten Eigentümer und testen Sie eine Datei von diesem Konto. Auf einer Testmaschine:

sudo install -d -o www-data -g www-data -m 750 /var/lib/mein-dienst
sudo -u www-data touch /var/lib/mein-dienst/test-schreiben
ls -l /var/lib/mein-dienst/test-schreiben
sudo rm /var/lib/mein-dienst/test-schreiben

Diese Überprüfung sagt Ihnen, ob das Konto des Dienstes tatsächlich schreiben kann. Wenn sie fehlschlägt, fügen Sie nicht willkürlich Berechtigungen hinzu. Überprüfen Sie zunächst den Eigentümer, die Gruppe, die eventuell vorhandenen ACLs mit getfacl und die Rechte der übergeordneten Verzeichnisse.

  • Verwenden Sie mkdir -p, für einen Pfad, dessen übergeordnete Verzeichnisse fehlen können.
  • Verwenden Sie stat oder ls -ld sofort nach der Erstellung.
  • Für ein gemeinsames Verzeichnis legen Sie Eigentümer, Gruppe und Modus fest, bevor Sie den Dienst starten.
  • Reservieren Sie chmod für gezielte Korrekturen, nachdem Sie das blockierte Konto identifiziert haben.

Der Leitfaden zu setfacl unter Linux hilft, wenn nur ein Benutzer zusätzlichen Zugriff benötigt. Wenn Sie Berechtigungen in einer bestehenden Struktur ändern müssen, verwenden Sie besser das Verfahren für rekursives chmod: das Ändern aller Dateien und Verzeichnisse mit demselben Modus bricht leicht die Ausführungsrechte der Verzeichnisse.

Die Handbuchseite mkdir(1) beschreibt die Optionen, und mkdir(2) erklärt die Auswirkungen der umask und die Gruppenvererbung. Behalten Sie diese beiden Punkte im Hinterkopf, bevor Sie ein Verzeichnis erstellen, das von einem Dienst verwendet wird.

Ein Linux-Administrator, der ein blaues Verzeichnis in ein Serverregal mit einem offenen Vorhängeschloss einsortiert
Der Eigentümer, die Gruppe und die Berechtigungen des Verzeichnisses müssen dem Verwendungszweck entsprechen.