Was ist das Ergebnis, wenn „chmod 7“ auf einer Datei ausgeführt wird?

Was ist das Ergebnis, wenn „chmod 7“ auf einer Datei ausgeführt wird?

Ich weiß chmod 777erlaubtlesen,schreiben, UndausführenfürBenutzer,Gruppe, UndAndere

aber was ist, wenn ich es einfach tue chmod 7?

Gilt das nur rwxfü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 755und 777besonders 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 755ist einfach eine Zahl und entspricht 493in Dezimalzahlen.
Sie können eine Oktalzahl von jeder anderen Basis dadurch unterscheiden, dass Oktalzahlen mit einem vorangestellt sind 0. Wenn Sie also sagen, 755dass es oktal ist, sollten Sie es eigentlich als bezeichnen 0755. Der chmodBefehl 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 111ist 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 7ist 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 rwxdie 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 47ergibt sich mit auf einer DateilesenErlaubnis fürGruppeUndlesen,schreibenUndausführenErlaubnis fürAndere.

verwandte Informationen