Chmod nach Buchstaben vs. Zahlen

Chmod nach Buchstaben vs. Zahlen

Kürzlich wurde ich von einem Kollegen gebeten, chmodBuchstaben statt Zahlen zu verwenden. Gibt es außer dem offensichtlichen Vorteil der Lesbarkeit noch einen besonderen Grund, Buchstaben statt Zahlen zu verwenden?

Antwort1

Die chmodsymbolische Notation ist im Vergleich zur Oktalnotation feinkörniger und ermöglicht die Änderung bestimmter Modusbits, während andere Modusbits unberührt bleiben.

Die symbolische Notation besteht aus drei Komponenten:

chmod [references][operator][modes] file

Das referencesbesteht aus einer Kombination der Buchstaben ugoa, die angeben, welcher Benutzerzugriff auf die filegeändert wird: der Benutzer, dem sie gehört ( u), andere Benutzer in der Gruppe der Datei ( g), andere Benutzer, die nicht in der Gruppe der Datei sind ( o), oder alle Benutzer ( a). Wenn die referencesKomponente weggelassen wird, wird standardmäßig auf alle Benutzer gesetzt, aber nur die von der zugelassenen Berechtigungen umaskwerden geändert.

Dies + operatorbewirkt, dass die angegebenen Dateimodusbits zu den vorhandenen Dateimodusbits jeder Datei hinzugefügt werden, -bewirkt, dass sie entfernt werden, und =bewirkt, dass sie hinzugefügt und nicht angegebene Bits entfernt werden, mit Ausnahme setuidvon setgidfür Verzeichnisse festgelegten Bits, sofern nicht ausdrücklich angegeben.

Das Zeichen modebesteht aus einer Kombination der Buchstaben rwxXst, die dem Lesen ( r), Schreiben ( w), Ausführen (oder Suchen nach Verzeichnissen) ( x), Ausführen/Suchen nur, wenn die Datei ein Verzeichnis ist oder bereits Ausführungsberechtigung für einen Benutzer hat ( X), setuidoder setgid(je nach angegebenen Referenzen) ( s) und eingeschränktem Löschflag oder Sticky Bit ( t) entsprechen. Alternativ modekann das Zeichen aus einem der Buchstaben bestehen ugo, in welchem ​​Fall das modeZeichen den aktuell dem Eigentümer ( u), Mitgliedern der Gruppe der Datei ( g) oder Berechtigungen von Benutzern in keiner der vorhergehenden Kategorien ( o) erteilten Berechtigungen entspricht.

Beispiele

Vorausgesetzt, der Berechtigungssatz für fileist0764/-rwxrw-r--

Entfernen Sie die Berechtigung von anderen Benutzern, die nicht zur Dateigruppe gehören:

  • Oktal:chmod 760 file

    Beachten Sie, dass die unveränderten vorhandenen Berechtigungen bei Verwendung der Oktalnotation wiederholt werden müssen.

  • Symbolisch:chmod o-rwx file

    Bei der symbolischen Notation spielen die vorhandenen Dateiberechtigungen keine Rolle.

Satz setuid:

  • Oktal:chmod 4764 file

  • Symbolisch:chmod u+s file

Satz setgid:

  • Oktal:chmod 2764 file
  • Symbolischchmod g+s file

Antwort2

Mit Hilfe der Buchstaben können Sie einzelne Bits ein- und ausschalten, ohne die anderen Bits zu verändern.

Angenommen, ich habe das folgende Verzeichnis:

drwxrwsr-x   6 f261-01a  g261-01a  4096 Sep 12 17:51 /home/teams/261/f261-01a

Wenn ich die Leseberechtigung für andere deaktivieren und Zahlen verwenden möchte, mache ich vielleicht schnell Folgendes chmod 751. Allerdings habe ich gerade das Setgid-Bit im Verzeichnis deaktiviert. Ups.

Wenn ich jedoch verwende chmod o-r, schalte ich nur das gewünschte Lese-Bit aus und das Setgid-Bit im Verzeichnis bleibt gesetzt.

Dies ist auch nützlich, wenn Sie Setuid-, Setgid- oder Sticky-Bits für eine Datei oder ein Verzeichnis aktivieren möchten. Insbesondere wenn Sie dies so selten tun, haben Sie Probleme, sich zu merken, welches Bit im 4. Oktett welches ist.

Es kommt also darauf an, was Sie tun. Ich bevorzuge immer noch die Verwendung von Zahlen, wenn ich nur Berechtigungen einstelle und es mir egal ist, was da anfangs steht. Wenn Sie jedoch einzelne Bits umschalten, ist die Buchstabennotation viel einfacher.

verwandte Informationen