Linux-Benutzer, Gruppen und Rechte verstehen (chmod, chown, sudo)
Linux-Benutzer, Gruppen und Rechte sauber verstehen: ls -l lesen, chmod, chown, Gruppen, sudo und jeden Schritt direkt verifizieren, ohne dich mit falschen Rechten auszusperren.

Linux-Benutzer, Gruppen und Rechte sind eine der Grundlagen, auf denen fast jede spätere Linux-Anleitung aufbaut. Ob SSH-Schlüssel, Webserver, Cronjob, systemd-Service oder Docker-Verzeichnis: Am Ende entscheidet fast immer das Rechtemodell darüber, wer etwas lesen, schreiben oder ausfühhren darf. Genau deshalb lohnt es sich, dieses Thema einmal sauber zu verstehen, statt nur einzelne Befehle auswendig zu lernen.
Das Grundmodell ist einfach: Jede Datei und jedes Verzeichnis gehört einem Benutzer, einer Gruppe und hat Rechte für alle anderen. Mit chmod änderst du Rechte, mit chown Besitzer und Gruppen, und mit sudo führst du Befehle mit erhöhten Rechten aus. In dieser Anleitung gehen wir Schritt für Schritt vor und prüfen nach jedem wichtigen Punkt, ob das Ergebnis wirklich zu dem passt, was du erwartest.
Voraussetzungen
- Zugang zu einem Linux-System mit Terminal
- Ein Benutzerkonto mit sudo-Rechten oder direkter Root-Zugang
- Ein Testverzeichnis, in dem du gefahrlos Üben kannst
- Keine Arbeit direkt in produktiven Systempfaden, solange du die Wirkung eines Befehls noch nicht sicher einschätzzen kannst
Wichtig vorab: Übe neue Rechte- oder Benutzerbefehle zuerst in einem eigenen Testverzeichnis. So lernst du die Wirkung, ohne dir versehentlich SSH-Zugriff, Webserver-Dateien oder sudo-Rechte kaputtzumachen.
Schritt 1: Eine kleine Testumgebung anlegen
Bevor du echte Systemdateien anfasst, legst du dir eine kleine Spielwiese an. Damit kannst du Rechte, Besitzer und Gruppen ohne Risiko ausprobieren.
mkdir -p ~/rechte-labor
cd ~/rechte-labor
printf 'Hallo Linux
' > datei.txt
printf '#!/bin/bash
echo Test
' > script.sh
mkdir projektordner
ls -l
Du solltest jetzt mindestens eine normale Datei, ein kleines Skript und ein Verzeichnis sehen. An diesen drei Typen lassen sich die meisten Unterschiede gut erklären.
Verifizieren: Der Schritt ist erfolgreich, wenn ls -l eine Datei datei.txt, eine Datei script.sh und ein Verzeichnis projektordner anzeigt. Wenn du die Objekte nicht siehst, bist du entweder nicht im richtigen Verzeichnis oder der Befehl wurde nicht vollständig ausgefährt.
Schritt 2: ls -l lesen und das Rechtemodell verstehen
Jetzt lesen wir, was Linux dir über Dateien überhaupt anzeigt. Der wichtigste Befehl dafür ist ls -l.
ls -l datei.txt script.sh
ls -ld projektordner
Typische Ausgabe:
-rw-r--r-- 1 marcel marcel 12 Jun 12 10:30 datei.txt
-rw-r--r-- 1 marcel marcel 22 Jun 12 10:30 script.sh
drwxr-xr-x 2 marcel marcel 4096 Jun 12 10:30 projektordner
Die ersten zehn Zeichen sind der wichtigste Teil:
| Teil | Bedeutung |
|---|---|
- oder d | Dateityp: - für Datei, d für Verzeichnis, l für Symlink |
rw- | Rechte des Besitzers |
r-- | Rechte der Gruppe |
r-- | Rechte für alle anderen |
Die einzelnen Buchstaben bedeuten:
r= lesenw= schreibenx= ausfühhren-= dieses Recht ist nicht gesetzt
Bei Verzeichnissen ist x besonders wichtig: Es bedeutet nicht "Programm ausführen", sondern vereinfacht gesagt "dieses Verzeichnis betreten und darin auflösen dürfen".
stat datei.txt
Verifizieren: Du hast den Schritt verstanden, wenn du an einer Ausgabe wie -rw-r--r-- sagen kannst: Besitzer darf lesen und schreiben, Gruppe nur lesen, alle anderen nur lesen. Bei einem Verzeichnis wie drwxr-xr-x erkennst du zusätzlich, dass das erste Zeichen d für Verzeichnis steht.
Schritt 3: chmod mit 644, 755, 600 und 700 sauber einsetzen
Mit chmod setzt du Rechte. Die gebräuchlichste Schreibweise ist die Oktal-Notation. Dahinter steckt immer dieselbe Rechnung:
r = 4w = 2x = 1
Die drei Ziffern stehen immer für Besitzer, Gruppe, andere. Ein paar typische Werte:
| Oktal | Symbolisch | Typischer Einsatz |
|---|---|---|
644 | rw-r--r-- | Normale Dateien wie Text- oder Konfigurationsdateien |
755 | rwxr-xr-x | Viele Verzeichnisse und ausfühhrbare Skripte |
600 | rw------- | Private Dateien, zum Beispiel SSH-Private-Keys |
700 | rwx------ | Private Verzeichnisse, zum Beispiel ~/.ssh |
chmod 644 datei.txt
chmod 755 script.sh
chmod 700 projektordner
ls -l datei.txt script.sh
ls -ld projektordner
Wichtiger Praxispunkt: Ein pauschales chmod -R 644 verzeichnis ist als allgemeiner Tipp falsch. Dateien können mit 644 oft sinnvoll sein, Verzeichnisse aber brauchen in vielen Fällen das Execute-Bit, damit du sie überhaupt betreten kannst. Wenn du rekursiv sauber arbeiten musst, behandelst du Dateien und Verzeichnisse getrennt.
find projektordner -type d -exec chmod 755 {} \;
find projektordner -type f -exec chmod 644 {} \;
Verifizieren: Nach chmod 755 script.sh sollte ls -l bei der Datei mit -rwxr-xr-x beginnen. Nach chmod 700 projektordner sollte die Verzeichniszeile mit drwx------ beginnen. Wenn ein Verzeichnis stattdessen auf drw-r--r-- steht, fehlt das entscheidende Execute-Bit.
Schritt 4: chmod mit symbolischer Notation gezielt ändern
Die symbolische Notation ist dann praktisch, wenn du nicht alles neu setzen willst, sondern nur ein bestimmtes Recht ergänzen oder entfernen möchtest.
| Kürzel | Bedeutung |
|---|---|
u | User, also der Besitzer |
g | Group, also die Gruppe |
o | Other, also alle anderen |
a | Alle drei zusammen |
+ | Recht hinzufügen |
- | Recht entfernen |
= | Genau dieses Recht setzen |
chmod u+x script.sh
chmod g-w datei.txt
chmod o-r datei.txt
ls -l datei.txt script.sh
Das ist oft lesbarer als Zahlen, vor allem wenn du nur eine kleine Änderung vornehmen willst.
Verifizieren: Wenn du chmod u+x script.sh ausfühhrst, muss beim Besitzer ein x auftauchen. Wenn du chmod o-r datei.txt ausfühhrst, darf im letzten Dreierblock kein r mehr stehen.
Schritt 5: Besitzer und Gruppen mit chown und chgrp ändern
Rechte allein reichen nicht immer. Sehr oft liegt ein Problem daran, dass die Datei dem falschen Benutzer oder der falschen Gruppe gehört. Dafür nutzt du chown und chgrp.
# Nur Besitzer ändern
sudo chown newuser datei.txt
# Besitzer und Gruppe zusammen ändern
sudo chown newuser:newuser script.sh
# Nur Gruppe ändern
sudo chgrp newuser projektordner
# Ergebnis prüfen
ls -l datei.txt script.sh
ls -ld projektordner
Der Doppelpunkt in user:gruppe ist wichtig. Links steht der Besitzer, rechts die Gruppe.
Verifizieren: Der Schritt ist erfolgreich, wenn in der Ausgabe von ls -l an der Stelle für Besitzer und Gruppe wirklich die neuen Namen stehen. Wenn weiterhin dein alter Benutzer erscheint, wurde der Befehl nicht mit ausreichenden Rechten ausgefährt oder der angegebene Benutzer existiert nicht.
Schritt 6: Benutzer und Gruppen anlegen und erweitern
Jetzt geht es um die eigentliche Benutzerverwaltung. Dabei ist wichtig zu verstehen: Ein Benutzer kann in mehreren Gruppen sein. Diese Gruppen entscheiden oft darüber, ob er zum Beispiel Docker, sudo oder ein gemeinsames Verzeichnis nutzen darf.
Auf Debian und Ubuntu ist adduser für Einsteiger meist angenehmer. Auf vielen Distributionen steht zusätzlich useradd zur Verfügung.
# Debian/Ubuntu: interaktiv und einsteigerfreundlich
sudo adduser newuser
# Gruppen anlegen
sudo groupadd projektteam
# Benutzer zu einer zusätzlichen Gruppe hinzufügen
sudo usermod -aG projektteam newuser
Wichtig: Bei usermod ist das -a entscheidend. Ohne dieses Flag überschreibst du bestehende Zusatzgruppen, statt sie zu ergänzen.
Für sudo-Rechte gilt im Alltag meist:
- Debian/Ubuntu: Gruppe
sudo - RHEL/Fedora/Rocky: Gruppe
wheel
# Debian/Ubuntu
sudo usermod -aG sudo newuser
# RHEL/Fedora/Rocky
sudo usermod -aG wheel newuser
Verifizieren: Direkt nach usermod -aG ist die Änderung oft noch nicht in deiner aktuellen Sitzung aktiv. Der Benutzer muss sich in der Regel einmal neu anmelden. Wenn der Schritt erfolgreich war, taucht die neue Gruppe nach dem nächsten Login in id newuser oder groups newuser auf.
Schritt 7: Benutzer, UID, GID und Gruppenmitgliedschaften prüfen
Bevor du an Dateien, sudo oder Diensten weiterarbeitest, solltest du immer kontrollieren, wie Linux den Benutzer gerade wirklich sieht.
id
id newuser
groups newuser
getent passwd newuser
getent group projektteam
Wichtige Begriffe:
- UID = numerische Benutzer-ID
- GID = numerische Gruppen-ID
- primöre Gruppe = die Hauptgruppe des Benutzers
- sekundäre Gruppen = zusätzliche Gruppenmitgliedschaften
getent ist besonders nötzlich, weil es nicht nur lokale Dateien wie /etc/passwd berücksichtigt, sondern auch andere NSS-Quellen.
Verifizieren: Der Schritt ist erfolgreich, wenn id newuser und groups newuser die Gruppen anzeigen, die du in Schritt 6 gesetzt hast. Wenn eine Gruppe fehlt, war meist entweder der Gruppenname falsch oder der Benutzer hat sich seit der Änderung noch nicht neu angemeldet.
Schritt 8: sudo sicher nutzen und nur bei Bedarf sudoers anfassen
sudo bedeutet nicht "ich bin jetzt dauerhaft root", sondern "dieser einzelne Befehl wird mit erhöhten Rechten ausgeführt". Für den Alltag ist das genau der richtige Weg.
sudo apt update
sudo -l
Für die meisten Systeme reicht es, Benutzer über die passende Admin-Gruppe zu berechtigen:
sudoauf Debian/Ubuntuwheelauf RHEL/Fedora/Rocky
Erst wenn du Sonderregeln brauchst, etwa einen ganz bestimmten Befehl ohne Passwort, arbeitest du mit visudo.
sudo visudo
sudo visudo -f /etc/sudoers.d/myteam
Beispiel für eine gezielte Regel:
%sudo ALL=(ALL:ALL) ALL
%deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
Wichtig: Bearbeite /etc/sudoers niemals direkt mit nano oder vim, wenn du die Syntax nicht zusätzlich prüfen lässt. Ein Fehler an dieser Stelle kann sudo unbrauchbar machen.
Verifizieren: Mit sudo -l siehst du, welche sudo-Rechte der aktuell angemeldete Benutzer wirklich hat. Wenn ein Benutzer Mitglied der Gruppe sudo oder wheel ist, aber sudo -l trotzdem nicht funktioniert, ist meist die neue Gruppenmitgliedschaft in der aktuellen Sitzung noch nicht aktiv.
Schritt 9: Spezialbits einordnen, ohne sie unnötig zu verwenden
Neben den normalen Rechten gibt es drei Spezialbits. Du musst sie als Linux-Grundlage kennen, aber du solltest sie nicht leichtfertig einsetzen.
| Bit | Beispiel | Bedeutung |
|---|---|---|
| setuid | 4755 | Ein Programm läuft mit den Rechten des Besitzers |
| setgid | 2755 | Neue Dateien in einem Verzeichnis erben oft die Gruppe des Verzeichnisses |
| Sticky Bit | 1777 | In gemeinsam beschreibbaren Verzeichnissen darf nicht jeder fremde Dateien löschen |
ls -ld /tmp
ls -l /usr/bin/sudo
Typische Beispiele sind /tmp mit Sticky Bit und /usr/bin/sudo mit setuid. Eigene Experimente mit setuid solltest du nur dann machen, wenn du genau weißt, warum du das brauchst.
Verifizieren: Bei /tmp solltest du am Ende typischerweise ein t sehen, also etwa drwxrwxrwt. Bei Programmen mit setuid erscheint häufig ein s anstelle des normalen x im Benutzer-Block.
Troubleshooting
- Problem: Ich habe Rechte gesetzt, aber komme trotzdem nicht in ein Verzeichnis. Meist fehlt auf dem Verzeichnis das Execute-Bit. Prüfe mit
ls -ld verzeichnis, ob dort einxgesetzt ist. - Problem: Nach
usermod -Gsind alte Gruppen verschwunden. Dann wurde-avergessen. Verwende für Ergänzungen immerusermod -aG gruppe benutzer. - Problem: sudo funktioniert nicht, obwohl der Benutzer in der richtigen Gruppe ist. Oft ist die aktuelle Sitzung noch alt. Neu anmelden und danach
idodersudo -lprüfen. - Problem: Ein Webserver oder Dienst kann Dateien nicht lesen. Prüfe immer in dieser Reihenfolge: Besitzer, Gruppe, Dateirechte, Verzeichnisrechte der übergeordneten Ordner.
- Problem: Eine Datei ist mit
644gesetzt, ein Skript startet aber nicht. Für ausfühhrbare Skripte braucht der Besitzer oder der jeweilige Benutzer ein Execute-Bit, häufig also755oder gezieltu+x. - Problem: Ich habe rekursiv Rechte gesetzt und jetzt geht etwas kaputt. Dann wurden wahrscheinlich Dateien und Verzeichnisse nicht getrennt behandelt. Prüfe, ob Verzeichnisse noch ein Execute-Bit haben.
Häufige Fragen
Wann nehme ich 644 und wann 755?
644 ist typisch für normale Dateien, die gelesen, aber nicht ausgefährt werden sollen. 755 ist typisch für ausfühhrbare Skripte und viele Verzeichnisse. Verzeichnisse brauchen oft das Execute-Bit, damit man sie betreten kann.
Warum ist 777 fast nie eine gute Idee?
Weil damit jeder lesen, schreiben und ausfühhren darf. Das ist fast immer zu offen. Wenn du bei Linux-Rechten nicht weiterweißt, ist 777 keine saubere Lösung, sondern meist nur ein Zeichen dafür, dass Besitzer, Gruppe oder Verzeichnisstruktur noch nicht richtig verstanden sind.
Was ist der Unterschied zwischen primörer und sekundärer Gruppe?
Die primöre Gruppe ist die Hauptgruppe des Benutzers. Sekundäre Gruppen sind zusätzliche Mitgliedschaften, die weitere Berechtigungen geben. Mit id benutzername siehst du beides zusammen.
Warum soll ich sudoers nur mit visudo bearbeiten?
Weil visudo die Syntax prüft und die Datei sperrt. Ein Fehler in /etc/sudoers kann dazu führen, dass sudo nicht mehr funktioniert.
Warum funktioniert eine neue Gruppenmitgliedschaft nicht sofort?
Weil die aktuelle Sitzung die alten Gruppeninformationen behalten kann. Nach einer neuen Anmeldung gelten die neuen Gruppen in der Regel korrekt.
Fazit
Wenn du Linux-Benutzer, Gruppen und Rechte einmal wirklich verstehst, werden viele andere Themen deutlich einfacher. Du erkennst dann schneller, ob ein Problem an einer fehlenden Datei-Berechtigung, einer falschen Gruppe, einem ungeeigneten Besitzer oder an fehlenden sudo-Rechten liegt. Für den Alltag reichen dir oft schon ein sauber gelesener ls -l-Block, die Standardwerte 644, 755, 600 und 700 sowie die sichere Regel: erst prüfen, dann ändern, danach direkt verifizieren.
Als nächster passender Baustein eignet sich unsere Anleitung zur SSH-Key-Authentifizierung, weil dort Rechte auf ~/.ssh und authorized_keys sofort praktisch wichtig werden. Danach passen je nach Ziel zum Beispiel systemd-Services, Cron oder die Anleitung zum Absichern eines Linux-Servers.
Weiterführende Anleitungen und Quellen
- SSH-Key-Authentifizierung einrichten – Linux und Windows
- systemd-Service erstellen und verwalten
- Cron und crontab – Grundlagen unter Linux
- Linux-Server absichern: UFW und Fail2ban
- Alle Linux-Anleitungen auf s-edv.com
Quellen: chmod(1) – man7.org, chown(1) – man7.org, id(1) – man7.org, sudoers(5) – man7.org, adduser(8) – Ubuntu Manpages.