Fragen
Wie repariere ich ein ganzes Web-Root sicher?
find /var/www -type d -exec chmod 755 {} + und find /var/www -type f -exec chmod 644 {} +, dann chown -R www-data: /var/www. Niemals chmod -R 777.
Das ganze Rechtesystem passt auf eine Seite. Drucken Sie sie, oder halten Sie den chmod-Rechner für alles Interaktive offen.
| -rwxr-xr-x | Typ, Besitzer rwx, Gruppe r-x, Andere r-x |
| r = 4, w = 2, x = 1 | pro Gruppe addieren → Oktalziffer |
| rwx r-x r-x | = 7 5 5 = 755 |
| d l c b p s | Verzeichnis, Symlink, zeichenorientiertes Gerät, Blockgerät, Pipe, Socket |
| 644 | Dateien: Besitzer rw, alle r |
| 755 | Verzeichnisse, Skripte, Binaries |
| 600 / 700 | private Datei / Verzeichnis (SSH-Keys, .env, ~/.ssh) |
| 664 / 775 | gruppenbeschreibbare Datei / Verzeichnis |
| 2775 | gemeinsames Verzeichnis: neue Dateien erben die Gruppe (setgid) |
| 1777 | /tmp: jeder schreibt, nur Besitzer löschen (sticky) |
| 4755 | setuid-Binary (passwd, sudo) |
| 777 | fast immer falsch |
| u g o a | user (Besitzer), group, others, all |
| + - = | hinzufügen, entfernen, exakt setzen |
| chmod u+x f | Besitzer darf ausführen |
| chmod go-w f | Gruppe und Andere verlieren Schreiben |
| chmod a=r f | alle nur lesen |
| chmod u=rwx,g=rx,o= f | = 750 |
| chmod -R u=rwX,go=rX dir | rekursiv; X = Ausführen nur für Verzeichnisse und bereits ausführbare Dateien |
| chmod g+s dir | setgid auf einem Verzeichnis |
| chmod +t dir | Sticky-Bit |
| chmod --reference=a b | Modus von a auf b kopieren |
| 4 setuid | als Besitzer der Datei ausführen; zeigt s im Besitzer-x |
| 2 setgid | als Gruppe ausführen; auf Verzeichnissen: Gruppe vererben; s im Gruppen-x |
| 1 sticky | in Verzeichnissen: nur Besitzer darf löschen; t im Andere-x |
| S / T | groß = Sonderbit ohne Ausführen gesetzt (meist ein Fehler) |
| chown user file | Besitzer ändern (nur root) |
| chown user:group file | Besitzer und Gruppe |
| chown -R www-data: /var/www | rekursiv; leere Gruppe = Login-Gruppe des Benutzers |
| chgrp group file | nur Gruppe (Mitglied darf das) |
| chown -h | den Symlink selbst ändern, nicht das Ziel |
| umask 022 | Dateien 644, Verzeichnisse 755 (Standard) |
| umask 077 | Dateien 600, Verzeichnisse 700 (privat) |
| umask 002 | Dateien 664, Verzeichnisse 775 (Gruppenarbeit) |
| UMask=0077 | in einem systemd-[Service] |
| find . -type f -perm -o+w | weltbeschreibbare Dateien |
| find / -perm -4000 -type f | setuid-Binaries |
| find . -type d -exec chmod 755 {} + | nur Verzeichnisse reparieren |
| find . -type f -exec chmod 644 {} + | nur Dateien reparieren |
| stat -c '%a %U %G %n' * | Oktalmodus, Besitzer, Gruppe, Name |
| ls -ld dir | das Verzeichnis selbst, nicht sein Inhalt |
| getfacl file | anzeigen; ein + in ls -l heißt, eine existiert |
| setfacl -m u:alice:rw file | alice rw geben |
| setfacl -m d:g:dev:rwx dir | Standard-ACL für neue Dateien in dir |
| setfacl -b file | alle ACLs entfernen |
x = darf betreten; r = darf auflisten; w = darf Einträge erstellen/löschen.w auf dem Verzeichnis, nicht auf der Datei.ls -l, bevor Sie chmod 777 machen.Die Ergebnisse und Meldungen dieses Tools werden auf Englisch angezeigt.
find /var/www -type d -exec chmod 755 {} + und find /var/www -type f -exec chmod 644 {} +, dann chown -R www-data: /var/www. Niemals chmod -R 777.