Jan Novak <
rep...@gmail.com>:
> Am 07.11.22 um 22:38 schrieb Helmut Waitzmann:
>> Mit «chmod» aus den coreutils unter Debian 10:
>>
>>
>> ( umask -- u=,go=rx && chmod -R -- =u )
>>
>> Das Umask «go=rx» beschränkt die Wirksamkeit des «chmod» für
>> group und others auf read und execute.
>>
>> Kurze Erklärung: Wenn vor einem der Operatoren «=», «-» oder «+»
>> keine der Kategorien «u» (user), «g» (group), «o» (others) oder
>> «a» (all) steht, wendet «chmod» den Operator nur auf die Bits an,
>> die für die betreffende Kategorie im Umask nicht gesetzt sind.
>>
>
> Das "=" soll die Rechte ja setzen, egal wie sie sind oder waren.
> Das scheint aber nicht immer zu klappen.
>
> Wenn ich zum Beispiel
>
>
> chmod -R ug=rwX *
>
> setze, dann wird das x (nicht X) Flag einer Datei "nicht"
> entfernt, sofern es vorhanden war.
Ja, das Verhalten entspricht der Beschreibung von «X» (s. u.).
> Ich hatte das so verstanden, dass mit eine rwX die Rechte "660"
> auf eine Datei gesetzt werden.
Um «660» zu erreichen, funktioniert der Zugriffsrechte‐Parameter
«ug=rw,o=».
Das «X» im Zugriffsrechte‐Parameter des «chmod»‐Kommandos hat (im
Gegensatz zu «r», «w» und «x») keine direkte Entsprechung im
«chmod»‐Systemaufruf. Es ist vielmehr eine Berechnungsanweisung
für «x»: «X» hat im Zugriffsrechte‐Parameter dieselbe Wirkung
wie «x», wenn wenigstens eine der folgenden Bedingungen erfüllt
ist:
Bei der Datei, deren Zugriffsrechte bearbeitet werden sollen,
handelt es sich um ein Verzeichnis.
Die Datei, deren Zugriffsrechte bearbeitet werden sollen, gewährt
bislang das «x»‐Zugriffsrecht einer oder mehreren der
Zugreifer‐Kategorien «user», «group» oder «other».
Ist keine dieser beiden Bedingungen erfüllt, hat «X» keine
Wirkung.