Ich habe eine Anwendung, die sich über die Berechtigungen ihres Verzeichnisses innerhalb von /Applications beschwert. Es möchte auf 040775 eingestellt werden. Ich kann es beheben, indem ich ausführe chmod 040775
, aber ich verstehe nicht, was die ersten beiden Ziffern bedeuten. Einfach laufen chmod 775
geht nicht, also sind anscheinend diese ersten 2 Ziffern falsch. Was sind diese 2 Ziffern und wie kann ich sie in macOS anzeigen? Ich suche sowas wie ls -l
. Ich arbeite mit High Sierra.
Die kurze Antwort ist stat und fragen Sie nach dem Berechtigungsfeld:
stat -f "%p" file
Diese Anwendung oder Anweisungen oder Speicher sind wahrscheinlich falsch. Auf der Handbuchseite gibt es 4 Ziffern in der oktalen Darstellung für Modi unter macOS:
Modes may be absolute or symbolic. An absolute mode is an octal number constructed from the sum of one or more of the following values: 4000 (the set-user-ID-on-execution bit) Executable files with this bit set will run with effective uid set to the uid of the file owner. Directories with the set-user-id bit set will force all files and sub-directories created in them to be owned by the directory owner and not by the uid of the creating process, if the underlying file system supports this feature: see chmod(2) and the suiddir option to mount(8). 2000 (the set-group-ID-on-execution bit) Executable files with this bit set will run with effective gid set to the gid of the file owner. 1000 (the sticky bit) See chmod(2) and sticky(8). 0400 Allow read by owner. 0200 Allow write by owner. 0100 For files, allow execution by owner. For directories, allow the owner to search in the directory. 0040 Allow read by group members. 0020 Allow write by group members. 0010 For files, allow execution by group members. For directo- ries, allow group members to search in the directory. 0004 Allow read by others. 0002 Allow write by others. 0001 For files, allow execution by others. For directories allow others to search in the directory. For example, the absolute mode that permits read, write and execute by the owner, read and execute by group members, read and execute by others, and no set-uid or set-gid behaviour is 755 (400+200+100+040+010+004+001).
Ich habe eine Datei mit dem praktischen Namen 040775 erstellt und Berechtigungen angewendet - Sie können sehen, dass 040 alle Sticky-Dateien löscht (da es auf den 0775-Teil ankommt), setUID- und setGID-Bits, sodass Sie 0775 erhalten, wenn Sie versuchen, 040775 zu setzen.
mac:foo me$ touch 040775
mac:foo me$ stat -f "%p" 040775
100644
mac:foo me$ chmod 040775 040775
mac:foo me$ stat -f "%p" 040775
100775
mac:foo me$ chmod 4775 040775
mac:foo me$ ls -l
-rwsrwxr-x 1 me wheel 0 May 10 20:30 040775
mac:foo me$ chmod 040775 040775
mac:foo me$ ls -l
-rwxrwxr-x 1 me wheel 0 May 10 20:30 040775
Ich habe das Obige ein wenig bearbeitet und nicht alles getan, stat
aber ls
es sollte Ihnen helfen, in vorhandenen Dateien herumzustöbern und zu testen, ob meine Erfahrung, dass nur die letzten 4 Ziffern als oktale Bitmaske interpretiert werden, um Berechtigungen wie dokumentiert festzulegen in der chmod-Manpage.
0
alles 0775
klebrig löscht. 04
of 040775
wird ignoriert, und ich sage das, denn wenn Sie zuerst eg setzen 4775
und dann verwenden 010775
, macht es dasselbe wie 040775
does und 01
of 010775
wird genauso ignoriert wie 04
of 040775
wird ignoriert und es wird einfach wie in beiden Beispielen
chmod
verarbeitet .0775
stat -f %p filename
. "04" bedeutet, dass es sich um ein Verzeichnis handelt. Vielleicht chmod 0775
würde in diesem Fall die gleiche Wirkung haben. Aber chmod scheint sich dessen etwas bewusst zu sein, weil chmod 240775
es einen Fehler gibt, während chmod 140775
dies nicht der Fall ist. systutorials.com/docs/linux/man/2-stat240775
generiert einen Fehler, da dieser Wert nicht in einer 16-Bit-Ganzzahl gespeichert werden kann, wo als 140775
gespeichert werden kann.
Benutzer3439894
040775
es sichchmod 040775
um gültige Berechtigungen handelt.MODES
Ich würde vorschlagen, dass Sie den Abschnitt derman page
for lesenchmod
. Sie möchten wahrscheinlich:chmod 4775
Elliot
Benutzer3439894
chmod
Befehl ausgeführt haben , kann ich es nicht genau sagen, aber04
of040775
wird ignoriert und0775
setzt die Berechtigungen aufrwxrwxr-x
und normale Anwendungspakete und normale ausführbare Dateien werden normalerweise auf gesetztrwxr-xr-x
.fd0