Warum verwendet umask dieses komplizierte numerische System?

372
Pithikos

Ich versuche, umask zu lernen, aber es scheint so kompliziert.

Abgesehen von all den Abzügen, die ich in meinem Kopf jedes Mal, wenn ich einen Maskenwert sehe, separat für Verzeichnisse und Dateien vornehmen muss, scheint die umask zu verschiedenen Zeitpunkten unterschiedlich zu sein (siehe unten).

Zum Beispiel wenn ich eine Maske habe

umask 0002 

es kann auch als gesehen werden

umask -S u=rwx,g=rwx,o=rx 

Warum gibt der umask rwxrwxr-xund -------w-in diesem Fall nicht? Wenn ich 0002 bekomme, soll ich die Berechtigungen für Dateien mit 666-002 und Verzeichnisse mit 777-002 berechnen. Sollte umask -Smir dann nicht eine ähnliche Sache geben, damit ich damit rechnen kann. Zum Beispiel negation-of(-------w-). In einem Fall fungiert es also als Maske für die Negation und im zweiten Fall gibt es nur das Ergebnis an, was ich verstehe. Warum dieses zweideutige Verhalten?

3

1 Antwort auf die Frage

1
jjlin

Genau so ist das Verhalten von umaskdefiniert:

Wenn -S angegeben wird, muss die Nachricht das folgende Format haben:

"u =% s, g =% s, o =% s \ n",,,

wobei die drei Werte Kombinationen von Buchstaben aus der Menge sein sollen; Das Vorhandensein eines Buchstabens soll anzeigen, dass das entsprechende Bit in der Erstellungsmaske für den Dateimodus frei ist.

(von http://pubs.opengroup.org/onlinepubs/9699919799/utilities/umask.html )

Es erscheint logisch, dass es nützlich sein könnte, die Maske in beiden Formen anzuzeigen. Allerdings ist der umask(1)Manpage nicht ganz klar, was die -SOption bewirkt.