
Ich weiß chmod 777
erlaubtlesen,schreiben, UndausführenfürBenutzer,Gruppe, UndAndere
aber was ist, wenn ich es einfach tue chmod 7
?
Gilt das nur rwx
für dieBenutzer?
Antwort1
Die Antwort von Ramesh ist vollkommen zutreffend, aber ich wollte meinen Senf dazugeben und eine ausführlichere Erklärung der Dateimodi liefern.
Obwohl Zahlen wie 755
und 777
besonders erscheinen und nur für Dateimodi eine Bedeutung haben, sind sie eigentlich ziemlich grundlegend.
Diese Zahlen sind eigentlich Oktalzahlen. Dezimalzahlen haben die Basis 10, Hexadezimalzahlen haben die Basis 16, Binärzahlen haben die Basis 2 und Oktalzahlen haben die Basis 8. Das bedeutet, dass Sie beim Zählen 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 ...
. Die Zahl 007
, ist also einfach oktal 7
. Die Oktalzahl 755
ist einfach eine Zahl und entspricht 493
in Dezimalzahlen.
Sie können eine Oktalzahl von jeder anderen Basis dadurch unterscheiden, dass Oktalzahlen mit einem vorangestellt sind 0
. Wenn Sie also sagen, 755
dass es oktal ist, sollten Sie es eigentlich als bezeichnen 0755
. Der chmod
Befehl geht einfach davon aus, dass alle Eingabezahlen oktal sind, da dies die gebräuchlichste Art ist, auf Dateimodi zu verweisen.
Warum verwenden Dateimodi nun Oktalzahlen? Zunächst müssen wir verstehen, dass der Modus nur eine Bitmaske ist, die wie folgt aussieht:
111111111111 - 12 binary bits
============
1 - Other execute
1 - Other write
1 - Other read
1 - Group execute
1 - Group write
1 - Group read
1 - User execute
1 - User write
1 - User read
1 - Sticky bit
1 - Set group ID
1 - Set user ID
Beachten Sie, dass es für „andere“, „Gruppe“ und „Benutzer“ jeweils 3 Bits gibt. Binär 111
ist 7
, was der höchste einstellige Oktalwert ist. Durch die Verwendung der Oktalnummerierung erhält also jede der Berechtigungen „andere“, „Gruppe“ und „Benutzer“ eine einzelne Ziffer plus eine zusätzliche Ziffer für Sticky+Setuid+Setgid.
Damit können wir zu Ihrer ursprünglichen Frage „Was ist chmod 7
„“ zurückkehren.
Nun, da wir wissen, dass es nur eine Oktalzahl und nur eine Bitmaske ist, können wir das herausfinden. Oktal 7
ist binär 111
. Anhand der obigen Bitpositionen können wir feststellen, dass hierdurch alle drei „anderen“ Bits gesetzt werden, wodurch „anderen“ Ausführungs-, Lese- und Schreibzugriff gewährt wird. Und da dies nur eine Zahl ist, sind alle anderen Bits 0 und werden aufgehoben.
Antwort2
Es ist umgekehrt. Es wird rwx
die Erlaubnis geben fürAndere.
touch samplefile
ls -l samplefile
-rw-rw-r-- 1 ramesh ramesh 0 Oct 16 22:29 samplefile
Nachdem ich den Befehl ausgeführt habe, erhalte ich die folgende Ausgabe:
chmod 7 samplefile
ls -l samplefile
-------rwx 1 ramesh ramesh 0 Oct 16 22:29 samplefile
Aus der Manpage von chmod
,
Der numerische Modus besteht aus einer bis vier Oktalziffern (0-7), die durch Addition der Bits mit den Werten 4, 2 und 1 abgeleitet werden. Ausgelassene Ziffern werden als führende Nullen betrachtet.
Jetzt können wir dies überprüfen, indem wir den Befehl wie folgt ausführen:
chmod 47 samplefile
ls -l samplefile
----r--rwx 1 ramesh ramesh 0 Oct 16 22:29 samplefile
Wie wir sehen können, chmod 47
ergibt sich mit auf einer DateilesenErlaubnis fürGruppeUndlesen,schreibenUndausführenErlaubnis fürAndere.