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?
mkdir()
. 0777 gegen 777
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?
mkdir()
. 0777 gegen 777
Antworten:
Wenn Sie sie an chmod
(das Befehlszeilenprogramm) übergeben, gibt es keinen Unterschied. Aber in einem C-Programm oder ähnlichem 0777
ist es oktal (drei Sätze von drei 1-Bits, wie Sie es beabsichtigen), während 777
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
== Berechtigungen rwxrwxrwx
(== dezimal 511
)
777 (dezimal) == binär 0b 1 100 001 001
== Berechtigungen sr----x--x
(== oktal 1411
)
chmod
Befehl übergeben, wird immer als oktal interpretiert. Bei Verwendung chmod 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 schreiben 01777
?
1777
ist 01777
in C geschrieben . (Oder Sie könnten schreiben 1023
, 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.
Die interessante Antwort lautet:
0700
und 700
, wie in den anderen Antworten erläutert00700
und 0700
(für Verzeichnisse)Zumindest ist das bei der chmod-Version von GNU coreutils der Fall, die unter Linux der Standard ist.
Siehe dieses Beispiel:
$ ls -ld mydir
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 0710 mydir ; ls -ld mydir # surprise ahead -- s-bits remain:
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 00710 mydir ; ls -ld mydir # _now_ they're gone:
drwx--x--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
Dies soll ein versehentliches Löschen von setuid / setgid-Bits für Verzeichnisse verhindern. Einzelheiten finden Sie in der chmod- Dokumentation.
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 es no any octal value
einen Anzeigewert von (0) Null gibt.