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 0777ist es oktal (drei Sätze von drei 1-Bits, wie Sie es beabsichtigen), während 777es dezimal ist und es ein ganz anderes Bitmuster ist. ( chmodinterpretiert 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)
chmodBefehl übergeben, wird immer als oktal interpretiert. Bei Verwendung chmod 888wird ein Fehler ausgegeben.
chmodinterpretiert 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?
1777ist 01777in 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:
0700und 700, wie in den anderen Antworten erläutert00700und 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 0777gibt, da es no any octal valueeinen Anzeigewert von (0) Null gibt.