Ist es möglich, die symbolische Berechtigung +X durch einen Oktalwert darzustellen?

Ist es möglich, die symbolische Berechtigung +X durch einen Oktalwert darzustellen?

Ist es möglich, die symbolische Berechtigung +X durch einen Oktalwert darzustellen? Auf der Manpage chmod(1) steht:

nur ausführen/suchen, wenn die Datei ein Verzeichnis ist oder bereits über die Ausführungsberechtigung eines Benutzers verfügt

Das bedeutet, dass chmod -R g+Xdie Gruppenausführungsberechtigung nur dann hinzugefügt wird, wenn bereits ein Ausführungsbit für Benutzer, Gruppe oder andere festgelegt ist. Sie können dies natürlich auch auf die harte Tour mit find tun:

find . -perm /ugo=x -exec chmod g+x {} \;

Es ist jedoch nicht offensichtlich, wie man dasselbe mit einem Oktalmodus erreichen könnte, ohnefindenoderprüfenzuerst die Dateiberechtigungen zu überprüfen. Ist das möglich oder gibt es Bereiche, in denen sich symbolische und oktale Berechtigungen einfach nicht überschneiden?

Antwort1

Kurz gesagt: Nein, es ist nicht möglich.

Die längere Geschichte: Oktalberechtigungen sind Zustände. Die [+-][rwxXst]Notation stellt dar operations, dass sie in sich ändernden Zuständen gipfeln. Beachten Sie, nicht die =[rwxXst]eine, dieSätzeZustand und ist äquivalent zu den Oktalmodi, wie Gilles sagte. Das Xeine ist die einzige bedingte Operation, die anderen sind alle unbedingt.

Wenn Sie chmodeine Datei mit oktalen Berechtigungen verwenden, geben Sie die endgültigeZustandder Berechtigungsbits wörtlich. Wenn Sie die Operationen verwenden, wählen Sie aus, was Sie möchtenErledigtzu den Berechtigungsbits.

Ihre Frage ist gleichbedeutend mit der Frage, ob es eine einzige Zahl gibt, die alle Quadratwurzeln repräsentiert. Die Antwort ist offensichtlich „nein“: jede QuadratwurzelErträgeeine Zahl (Pedanten: obwohl sie imaginär/irrational sein könnte), aber ohne den AnfangsZustand(die Nummer), Sie können nicht sagen, welche.

Antwort2

Symbolische Modi sind ausdrucksstärker als Oktalmodi, da Oktalmodi nur absolute Änderungen ausdrücken können. Relative Änderungen, also nicht nur, +Xsondern alle Modi, die nicht alle neuen Bits angeben (wie g+x— oder sogar a+rwx, die kein Setuid/Setgid-Bit entfernen), können mit Oktalmodi nicht ausgedrückt werden.

Umgekehrt kann jeder Oktalmodus als symbolischer Modus ausgedrückt werden, im Allgemeinen durch die Verwendung von =, z. B. 4750= u+rwxs,g=rx,o-rwxt(oder u=rwxs,g=rx,o=oder viele andere Kombinationen).

verwandte Informationen