Chmod durch Buchstaben gegen Zahlen

8

Ich wurde kürzlich von einem Kollegen gebeten, chmodBuchstaben anstelle von Zahlen zu verwenden. Gibt es neben dem offensichtlichen Vorteil der Lesbarkeit einen besonderen Grund, Buchstaben gegenüber Zahlen zu verwenden?

Gautam
quelle

Antworten:

13

Die chmodsymbolische Notation ist im Vergleich zur oktalen Notation feinkörniger und ermöglicht die Modifikation 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 das filegeändert wird: der Benutzer, dem es gehört ( u), andere Benutzer in der Dateigruppe ( g), andere Benutzer, die nicht in der Dateigruppe ( o) sind, oder alle Benutzer ( a). Wenn die referencesKomponente weggelassen wird, werden standardmäßig alle Benutzer verwendet, aber nur die von der Berechtigung 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 spezifizierte Bits entfernt werden, außer setuidund setgidBits, die für Verzeichnisse gesetzt sind, sofern nicht ausdrücklich angegeben.

Das modebesteht aus einer Kombination der Buchstaben rwxXst, die dem Lesen ( r), Schreiben ( w), Ausführen (oder Suchen nach Verzeichnissen) ( x), Ausführen / Suchen nur entsprechen, wenn die Datei ein Verzeichnis ist oder bereits Ausführungsberechtigung für einen Benutzer hat ( X) setuidoder setgid(abhängig von den angegebenen Referenzen) ( s) und eingeschränktes Löschflag oder Sticky Bit ( t). Alternativ kann die modeDose aus einem der Buchstaben bestehen ugo. In diesem Fall modeentspricht sie den Berechtigungen, die derzeit dem Eigentümer ( u), dem Mitglied der Dateigruppe ( g) oder den Berechtigungen von Benutzern in keiner der vorhergehenden Kategorien ( o) erteilt wurden .

Beispiele

Angenommen, 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, wie die vorhandenen Berechtigungen, die unverändert bleiben, bei Verwendung der Oktalschreibweise wiederholt werden müssen.

  • Symbolisch: chmod o-rwx file

    Bei der symbolischen Notation spielen die vorhandenen Dateiberechtigungen keine Rolle.

Set setuid:

  • Oktal: chmod 4764 file

  • Symbolisch: chmod u+s file

Set setgid:

  • Oktal: chmod 2764 file
  • Symbolisch chmod g+s file
Thomas Nyman
quelle
1

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

Angenommen, ich habe das folgende Verzeichnis: drwxrwsr-x 6 f261-01a g261-01a 4096 12. September 17:51 / home / team / 261 / f261-01a

Wenn ich die Leseberechtigung für andere deaktivieren und Zahlen verwenden möchte, kann ich dies möglicherweise schnell tun chmod 751. Außer ich habe gerade das setgid-Bit im Verzeichnis deaktiviert. Hoppla.

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

Dies ist auch nützlich, wenn Sie setuid, setgid oder sticky bits in einer Datei oder einem Verzeichnis aktivieren möchten. Besonders wenn Sie es so selten tun, haben Sie Probleme, sich zu erinnern, welches Bit welches im 4. Oktett ist.

Es kommt also darauf an, was Sie tun. Ich bevorzuge es immer noch, Zahlen zu verwenden, wenn ich nur Berechtigungen einstelle, und es ist mir egal, mit was es anfängt. Wenn Sie jedoch einzelne Bits umschalten, ist die Buchstabennotation viel einfacher.

Kurtm
quelle