'chmod -644' würde die Dateiberechtigung auf 000 setzen

12

Ich hatte eine Datei mit 644 ( -rw-r--r--) und wollte sie -rw-rw-r--nach dem Ausführen in 664 ( ) ändern :

sudo chmod -664 my_file

Dateiberechtigungen wurden auf 000 ( ----------) festgelegt.

Der Versuch, die Berechtigungen auf einen anderen Wert als 000 zu ändern, scheint nicht zu funktionieren. Was vermisse ich hier?

illgoforit
quelle
11
Warum hast du ein -644 vor? Versuchen Sie es sudo chmod 644 my_file. -644entfernt die Rechte.
Soren A

Antworten:

34

Sie verwenden -664, verwenden Sie 664stattdessen einfach . Und nie verwenden, sudowenn Sie nicht brauchen. Wenn das deine Datei ist, brauchst du nicht sudo:

chmod 644 my_file

Wenn Sie chmodmit einem -vor dem Modus ausführen , entfernen Sie diesen Modus. Siehe man chmod(Hervorhebung meiner):

Der Operator + bewirkt, dass die ausgewählten Dateimodusbits zu den vorhandenen Dateimodusbits jeder Datei hinzugefügt werden. - bewirkt, dass sie entfernt werden ; und = bewirkt, dass sie hinzugefügt und nicht erwähnte Bits entfernt werden, mit der Ausnahme, dass die nicht erwähnten gesetzten Benutzer- und Gruppen-ID-Bits eines Verzeichnisses nicht betroffen sind.

Die Zahlen sind:

  • 1: ausführen
  • 2: schreibe
  • 4: lesen

Eine Datei mit 777Berechtigungen bedeutet also, dass jeder das Recht hat, alle drei Aktionen auszuführen, da 1 + 2 + 4 = 7. Wenn Sie also die Berechtigungen auf 7 setzen, können Sie lesen, schreiben und ausführen.

Wenn Sie mit einer Datei beginnen, deren Modus wie folgt lautet 777:

$ ls -l my_file 
-rwxrwxrwx 1 terdon terdon 0 May 28 13:45 my_file

Und jetzt führen chmod -644Sie aus, Sie werden die Bits entfernen 644und mit einer Datei enden, deren Modus ist 133:

$ chmod -644 my_file; ls -l my_file 
---x-wx-wx 1 terdon terdon 0 May 28 13:45 my_file

Das liegt daran, dass Sie 6 (Lesen (4) + Schreiben (2)) aus den Berechtigungen des Besitzers entfernt haben und nur 1 (Ausführen) und 4 (Lesen) aus der Gruppe und anderen Berechtigungen übrig gelassen haben. Das Ergebnis ist eine Datei mit nur (1) Ausführungsberechtigungen für den Eigentümer und Schreib- und Ausführungsberechtigungen (Sie deaktivieren 4, wobei 1 und 3 übrig bleiben) für den Rest.

Da die Dateien die Standardberechtigungen für neue Dateien vermutlich hatte, so 644, wenn Sie lief chmod -644 my_file, entfernt man alle gesetzten Berechtigungs - Bits und bekam eine Datei ohne Berechtigungen für jedermann.

$ ls -l my_file 
-rw-r--r-- 1 terdon terdon 0 May 28 13:45 my_file
$ chmod -644 my_file
$ ls -l my_file 
---------- 1 terdon terdon 0 May 28 13:45 my_file
terdon
quelle