Kürzlich wurde ich von einem Kollegen gebeten, chmod
Buchstaben statt Zahlen zu verwenden. Gibt es außer dem offensichtlichen Vorteil der Lesbarkeit noch einen besonderen Grund, Buchstaben statt Zahlen zu verwenden?
Antwort1
Die chmod
symbolische 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 references
besteht aus einer Kombination der Buchstaben ugoa
, die angeben, welcher Benutzerzugriff auf die file
geä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 references
Komponente weggelassen wird, wird standardmäßig auf alle Benutzer gesetzt, aber nur die von der zugelassenen Berechtigungen umask
werden geändert.
Dies +
operator
bewirkt, 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 setuid
von setgid
für Verzeichnisse festgelegten Bits, sofern nicht ausdrücklich angegeben.
Das Zeichen mode
besteht 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
), setuid
oder setgid
(je nach angegebenen Referenzen) ( s
) und eingeschränktem Löschflag oder Sticky Bit ( t
) entsprechen. Alternativ mode
kann das Zeichen aus einem der Buchstaben bestehen ugo
, in welchem Fall das mode
Zeichen 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 file
ist0764/-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
- Symbolisch
chmod 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.