Was sind oktale und symbolische chmod-Modi?

chmod legt die Berechtigungen einer Datei unter Linux, macOS und anderen Unix-Systemen fest und akzeptiert dafür zwei Schreibweisen. Ein Oktalmodus wie 755 enthält jeweils eine Ziffer für den Eigentümer, die Gruppe und alle anderen Benutzer; Lesen entspricht 4, Schreiben 2 und Ausführen 1. Ein symbolischer Modus wie u=rwx,g=rx,o=rx benennt stattdessen die Klassen (u Eigentümer, g Gruppe, o andere, a alle) und die Berechtigungen (r, w, x).

Symbolische Modi können Berechtigungen auch ändern, anstatt sie vollständig festzulegen: u+x fügt dem Eigentümer die Ausführungsberechtigung hinzu, go-w entfernt die Schreibberechtigung für Gruppe und andere, und g=u kopiert die Berechtigungen des Eigentümers auf die Gruppe. Ein Oktalmodus legt immer jede Berechtigung fest. Daher hängt das oktale Ergebnis einer Änderung vom vorherigen Modus der Datei ab.

Beschreibung des Tools

Dieses Tool konvertiert chmod-Modi zwischen oktaler und symbolischer Schreibweise. Wählen Sie die Quell- und Zielschreibweise aus oder lassen Sie die Quelle auf automatische Erkennung eingestellt: Geben Sie 755 ein, um u=rwx,g=rx,o=rx zu erhalten, oder geben Sie einen symbolischen Modus ein, um den oktalen Wert zu erhalten. Bei Änderungen wie u+x oder a+X geben Sie den aktuellen Modus der Datei ein und sehen Sie den Modus, den chmod anschließend setzen würde. Sie können auch eine Berechtigungszeichenkette aus ls -l wie -rwxr-xr-x oder einen vollständigen chmod-Befehl einfügen.

Beispiele

Oktal Symbolisch ls -l Typische Verwendung
644 u=rw,go=r -rw-r--r-- Normale Dateien
755 u=rwx,go=rx -rwxr-xr-x Skripte, Programme und Verzeichnisse
600 u=rw,go= -rw------- Private Dateien wie SSH-Schlüssel
2775 u=rwx,g=rwxs,o=rx drwxrwsr-x Gemeinsame Verzeichnisse, die ihre Gruppe behalten
1777 a=rwx,+t drwxrwxrwt /tmp und andere gemeinsam genutzte temporäre Verzeichnisse
4755 u=rwxs,go=rx -rwsr-xr-x Programme wie passwd

Funktionen

  • Konvertiert Oktal- in symbolische Modi und symbolische in oktale Modi; mit einer Schaltfläche zum Tauschen der Richtung
  • Erkennt die Schreibweise des eingegebenen Modus oder konvertiert ausgehend von der ausgewählten Schreibweise
  • Wendet relative Änderungen wie u+x, go-w, a=r,u+w, g=u und a+X auf einen aktuellen Modus an
  • Unterstützt setuid, setgid und das Sticky-Bit (s, t und vierstellige Oktalmodi)
  • Gibt den symbolischen Modus vollständig (u=rwx,g=rx,o=rx) oder kompakt (u=rwx,go=rx) aus
  • Liest und schreibt ls -l-Berechtigungszeichenketten einschließlich s, S, t und T
  • Akzeptiert eingefügte Befehle wie sudo chmod -R 755 dir
  • Zeigt bei einem ungültigen Modus auf das genaue Zeichen

Funktionsweise

Ein Oktalmodus wird als bis zu vier Ziffern gelesen: Die optionale erste Ziffer enthält setuid (4), setgid (2) und das Sticky-Bit (1); die anderen drei enthalten die Berechtigungen für Eigentümer, Gruppe und andere. Ein symbolischer Modus wird Klausel für Klausel gemäß der POSIX-Grammatik gelesen und wie bei GNU chmod unter Linux auf den aktuellen Modus angewendet:

  • + fügt Berechtigungen hinzu, - entfernt sie und = legt sie fest und löscht die übrigen Berechtigungen für die benannten Klassen.
  • X fügt die Ausführungsberechtigung nur Verzeichnissen und Dateien hinzu, bei denen bereits mindestens ein Benutzer über diese Berechtigung verfügt.
  • s setzt setuid mit u und setgid mit g. t setzt das Sticky-Bit mit o, a oder ohne Klassenangabe.
  • Ohne Klassenangabe, wie bei +x, gilt die Änderung für alle, mit Ausnahme der durch die umask blockierten Bits.
  • Bei Verzeichnissen bleiben setuid und setgid unverändert, sofern der Modus sie nicht ausdrücklich benennt, wie bei g-s.

Die symbolische Ausgabe setzt jedes Bit ausdrücklich, sodass sie bei einer Datei unabhängig vom vorherigen Modus immer dasselbe Ergebnis liefert. Das Sticky-Bit wird als separate +t-Klausel geschrieben, da sowohl GNU- als auch BSD-chmod diese Schreibweise akzeptieren.

Tipps

  • Verwenden Sie a+X mit chmod -R, um Verzeichnisse durchsuchbar zu machen, ohne jede Datei ausführbar zu machen.
  • chmod 755 für ein Verzeichnis entfernt setgid mit GNU chmod nicht. Verwenden Sie chmod 00755 oder g-s, um es zu entfernen.
  • Ansible und viele Konfigurationsdateien erwarten eine führende Null, wie bei 0755. Aktivieren Sie „Immer 4 Oktalziffern anzeigen“, um diese Ausgabe zu erhalten.
  • Ein . oder + nach einer ls -l-Zeichenkette kennzeichnet einen SELinux-Kontext oder eine ACL. Verwenden Sie getfacl, um ACL-Einträge anzuzeigen, die im Modus nicht enthalten sind.