bitlvl
DE

Spickzettel chmod & Rechte

Das ganze Rechtesystem passt auf eine Seite. Drucken Sie sie, oder halten Sie den chmod-Rechner für alles Interaktive offen.

Passt auf eine A4-/Letter-Seite im Hochformat; mit „Als PDF speichern“ im Druckdialog behalten Sie eine Kopie.

Rechte lesen

-rwxr-xr-xTyp, Besitzer rwx, Gruppe r-x, Andere r-x
r = 4, w = 2, x = 1pro Gruppe addieren → Oktalziffer
rwx r-x r-x= 7 5 5 = 755
d l c b p sVerzeichnis, Symlink, zeichenorientiertes Gerät, Blockgerät, Pipe, Socket

Gängige Modi

644Dateien: Besitzer rw, alle r
755Verzeichnisse, Skripte, Binaries
600 / 700private Datei / Verzeichnis (SSH-Keys, .env, ~/.ssh)
664 / 775gruppenbeschreibbare Datei / Verzeichnis
2775gemeinsames Verzeichnis: neue Dateien erben die Gruppe (setgid)
1777/tmp: jeder schreibt, nur Besitzer löschen (sticky)
4755setuid-Binary (passwd, sudo)
777fast immer falsch

Symbolisches chmod

u g o auser (Besitzer), group, others, all
+ - =hinzufügen, entfernen, exakt setzen
chmod u+x fBesitzer darf ausführen
chmod go-w fGruppe und Andere verlieren Schreiben
chmod a=r falle nur lesen
chmod u=rwx,g=rx,o= f= 750
chmod -R u=rwX,go=rX dirrekursiv; X = Ausführen nur für Verzeichnisse und bereits ausführbare Dateien
chmod g+s dirsetgid auf einem Verzeichnis
chmod +t dirSticky-Bit
chmod --reference=a bModus von a auf b kopieren

Sonderbits (führende Oktalziffer)

4 setuidals Besitzer der Datei ausführen; zeigt s im Besitzer-x
2 setgidals Gruppe ausführen; auf Verzeichnissen: Gruppe vererben; s im Gruppen-x
1 stickyin Verzeichnissen: nur Besitzer darf löschen; t im Andere-x
S / Tgroß = Sonderbit ohne Ausführen gesetzt (meist ein Fehler)

Besitz

chown user fileBesitzer ändern (nur root)
chown user:group fileBesitzer und Gruppe
chown -R www-data: /var/wwwrekursiv; leere Gruppe = Login-Gruppe des Benutzers
chgrp group filenur Gruppe (Mitglied darf das)
chown -hden Symlink selbst ändern, nicht das Ziel

umask

umask 022Dateien 644, Verzeichnisse 755 (Standard)
umask 077Dateien 600, Verzeichnisse 700 (privat)
umask 002Dateien 664, Verzeichnisse 775 (Gruppenarbeit)
UMask=0077in einem systemd-[Service]

Finden und beheben

find . -type f -perm -o+wweltbeschreibbare Dateien
find / -perm -4000 -type fsetuid-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 dirdas Verzeichnis selbst, nicht sein Inhalt

ACLs (wenn rwx nicht reicht)

getfacl fileanzeigen; ein + in ls -l heißt, eine existiert
setfacl -m u:alice:rw filealice rw geben
setfacl -m d:g:dev:rwx dirStandard-ACL für neue Dateien in dir
setfacl -b filealle ACLs entfernen

Merken

  • Verzeichnis x = darf betreten; r = darf auflisten; w = darf Einträge erstellen/löschen.
  • Eine Datei zu löschen braucht w auf dem Verzeichnis, nicht auf der Datei.
  • root ignoriert rwx (aber nicht das Ausführen-Bit zum Starten).
  • „Permission denied“ ist oft Besitz; prüfen Sie ls -l, bevor Sie chmod 777 machen.

Die Ergebnisse und Meldungen dieses Tools werden auf Englisch angezeigt.

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.