So wird gerechnet
Jede Datei hat drei Rechtegruppen: für ihren Besitzer, für ihre Gruppe und für alle anderen. Jede Gruppe hat drei Bits, Lesen (4), Schreiben (2) und Ausführen (1), und eine oktale Ziffer ist ihre Summe.
Ziffer = Lesen 4 + Schreiben 2 + Ausführen 1 Modus = Besitzer, Gruppe, Andere 755 = rwx (4+2+1) r-x (4+1) r-x (4+1) 644 = rw- (4+2) r-- (4) r-- (4)
Eine vierte Ziffer davor enthält die speziellen Bits: Setuid 4, Setgid 2 und Sticky 1. ls zeigt sie an den Stellen des Ausführungsrechts an, s für Setuid oder Setgid und t für Sticky, als Großbuchstabe, wenn das Ausführungsbit darunter nicht gesetzt ist. Bei einem Ordner bedeutet Ausführen das Recht, ihn zu betreten, daher brauchen Ordner ein x, wo einfache Dateien keins brauchen.
Beispiel
chmod 640 wp-config.php: Der Besitzer liest und schreibt (6 = 4 + 2), die Gruppe liest (4) und andere haben keinen Zugriff (0). ls -l zeigt dann -rw-r-----, und der Webserver kann die Datei nur lesen, wenn er in der Gruppe der Datei ist.
Fragen
Was bedeutet chmod 755?
Der Besitzer darf lesen, schreiben und ausführen (7), die Gruppe und alle anderen dürfen lesen und ausführen (je 5). ls -l zeigt es als rwxr-xr-x. Es ist der übliche Modus für Ordner sowie für Skripte und Programme, die andere ausführen müssen.
Was ist der Unterschied zwischen 644 und 755?
Nur das Ausführungsbit. 644 (rw-r--r--) lässt den Besitzer schreiben und alle lesen; 755 lässt zusätzlich alle ausführen. Einfache Dateien wie HTML, Bilder und PHP-Dateien brauchen 644, Ordner und Skripte, die selbst laufen, brauchen 755.
Warum sollte ich chmod 777 nicht verwenden?
777 erlaubt jedem Benutzer und Prozess auf dem Server, die Datei zu ändern. Wird eine Website oder ein Plugin gehackt, kann der Angreifer alles überschreiben, was 777 hat. Einen Rechtefehler behebt man besser, indem man die Datei mit chown dem richtigen Benutzer zuweist oder den Webserver zur Gruppe der Datei hinzufügt.
Wie ändere ich die Rechte aller Dateien in einem Ordner?
chmod -R 755 folder ändert alles darin, Dateien eingeschlossen, und macht damit jede Datei ausführbar. Um Ordner und Dateien zu trennen, nutzen Sie find: find folder -type d -exec chmod 755 {} + für Ordner und find folder -type f -exec chmod 644 {} + für Dateien.