Ich habe bei der Arbeit eine Codeänderung gesehen, bei der die Moduswerte von 777 auf 0777 geändert wurden, damit nfs setattr funktioniert. Was ist der Unterschied zwischen den beiden Werten?
permissions
user1071840
quelle
quelle
mkdir()
. 0777 gegen 777Antworten:
Wenn Sie sie an
chmod
(das Befehlszeilenprogramm) übergeben, gibt es keinen Unterschied. Aber in einem C-Programm oder ähnlichem0777
ist es oktal (drei Sätze von drei 1-Bits, wie Sie es beabsichtigen), während777
es dezimal ist und es ein ganz anderes Bitmuster ist. (chmod
interpretiert jedes numerische Argument als oktal, daher ist keine führende Null erforderlich.)0777 (oktal) == binär
0b 111 111 111
== Berechtigungenrwxrwxrwx
(== dezimal511
)777 (dezimal) == binär
0b 1 100 001 001
== Berechtigungensr----x--x
(== oktal1411
)quelle
chmod
Befehl übergeben, wird immer als oktal interpretiert. Bei Verwendungchmod 888
wird ein Fehler ausgegeben.chmod
interpretiert ein numerisches Argument unabhängig vom Präfix als oktal. (Aber eigentlich hat die Zahl selbst keine Funktion; nur die Ziffern oder vielmehr die Bits.)1777
, müssen Sie schreiben01777
?1777
ist01777
in C geschrieben . (Oder Sie könnten schreiben1023
, was die gleiche Zahl in Dezimalzahl ist. Aber nicht :-)Das erste Bit wird für das Sticky-Bit http://en.wikipedia.org/wiki/Sticky_bit verwendet
Wenn Sie die Berechtigung mit 4 Ziffern festlegen, wird das erste Bit gesetzt oder entfernt.
quelle
Die interessante Antwort lautet:
0700
und700
, wie in den anderen Antworten erläutert00700
und0700
(für Verzeichnisse)Zumindest ist das bei der chmod-Version von GNU coreutils der Fall, die unter Linux der Standard ist.
Siehe dieses Beispiel:
Dies soll ein versehentliches Löschen von setuid / setgid-Bits für Verzeichnisse verhindern. Einzelheiten finden Sie in der chmod- Dokumentation.
quelle
In Linux-Systemen sind zwei Arten von Berechtigungen verfügbar:
In Dateiberechtigung legen wir die Berechtigung für Dateien und Ordner fest:
Die Berechtigungen sind:
Während der Sondergenehmigung gibt es drei Arten von Genehmigungen:
In Ihrer Frage fragen Sie, was ein Unterschied ist, sodass es keinen Unterschied zwischen
chmod 777 and 0777
gibt, da esno any octal value
einen Anzeigewert von (0) Null gibt.quelle