Warum kann ich Benutzern mit chmod in Linux keine Schreibberechtigung erteilen?

Warum kann ich Benutzern mit chmod in Linux keine Schreibberechtigung erteilen?

Die aktuellen Dateiberechtigungen sehen folgendermaßen aus:

$ ls -l file
-rwxrwxr-x 1 chiranjitd chiranjitd 0 Oct 30 14:52 file

Jetzt versuche ich, Schreibberechtigungen zu erteilen mit chmod:

$ chmod +x+r+w file

Danach sehen die Dateiberechtigungen immer noch so aus:

$ ls -l file
-rwxrwxr-x 1 chiranjitd chiranjitd 0 Oct 30 14:52 file

Den anderen wird die Schreibberechtigung nicht erteilt. Warum ist das so?

Antwort1

Wenn du rennst chmod +x+r+w file,alle Bits sind gesetzt, außer denen, die von Ihremumask. umaskSie maskieren vermutlich (zumindest) das Schreibbit anderer Benutzer, sodass der +wTeil für sie letztendlich ignoriert wird.

Bei einem typischen umask022-Befehl führt jeder chmodBefehl, der nicht angibt, für wen die Berechtigungen festgelegt werden sollen, dazu, dass alle angegebenen Änderungen an den Schreibbits der Gruppe und anderer ignoriert werden.

Um alle Bits zu setzen und dabei zu ignorieren umask, müssen Sie angebenWHOSie möchten sie festlegen für:

chmod a+rwx file

oder genauer gesagt,

chmod ugo+rwx file

(oder eine beliebige Teilmenge davon ugo, je nach Bedarf für den Benutzer, die Gruppe und/oder andere).

Es ist auch möglich, numerische Berechtigungen anstelle von symbolischen Berechtigungen anzugeben; sieheGrundlegendes zu UNIX-Berechtigungen und Dateitypenfür Details.

Beachten Sie, dass das umaskMaskierungsverhalten auch gilt, wennClearingBits, was zu überraschenden Ergebnissen führen kann: chmod -w fileEs werden nur Schreibbits gelöscht, die von gesetzt würden chmod +w file! Wenn wir mit einem typischen Wert umaskvon 022 fortfahren, bedeutet dies, dass chmod -wdie Schreibbits der Gruppe oder anderer nicht berührt werden und gesetzt bleiben, wenn sie bereits gesetzt sind. (GNU coreutils' chmodwarnt hilfreicherweise davor.)

verwandte Informationen