Linux-Benutzer, Gruppen und Rechte verstehen (chmod, chown, sudo)
Linux-Rechte mit chmod, chown und sudo richtig setzen: Schritt-für-Schritt-Anleitung für Admins zu User/Group/Other, Oktal-Notation und sudoers-Konfiguration.

Linux-Benutzer, Gruppen und Rechte bilden das Fundament jeder sicheren Linux-Installation. Das klassische User/Group/Other-Modell mit den Befehlen chmod, chown und sudo bestimmt, wer Dateien lesen, schreiben und ausführen darf. Diese Anleitung zeigt dir, wie du ls -l-Ausgaben korrekt liest, Oktal- und Symbolnotation anwendest, Benutzer und Gruppen anlegst sowie sudo-Rechte sicher über visudo verwaltest – alles mit copy-paste-fertigen Befehlen für den Produktiveinsatz.
Kurzfassung: Dateiberechtigungen liest du mit ls -l; ändern geht mit chmod 644 datei (oktal) oder chmod u+x datei (symbolisch). Besitzer tauschst du mit chown user:gruppe datei. Benutzer verwaltest du mit useradd/adduser und usermod -aG. sudo-Rechte pflegst du ausschließlich über sudo visudo.
Voraussetzungen
- Zugang zu einem Linux-System (Debian/Ubuntu oder RHEL/Fedora/Rocky)
- Root-Zugang oder ein Benutzer mit sudo-Rechten
- Grundlegendes Terminal-Wissen (Befehle eingeben, Verzeichnisse wechseln)
- Kein grafisches Tool erforderlich – alles läuft auf der Kommandozeile
Schritt 1: Das Rechtemodell – ls -l lesen und verstehen
Jede Datei und jedes Verzeichnis unter Linux hat genau einen Besitzer (User), eine zugehörige Gruppe (Group) und Rechte für alle anderen (Other). Die Ausgabe von ls -l zeigt diese Informationen kompakt:
ls -l /etc/passwdBeispielausgabe:
-rw-r--r-- 1 root root 2847 Jun 2 10:30 /etc/passwdDie Spalten bedeuten:
ZeichenBedeutung
- (1. Zeichen)
Dateityp: -=reguläre Datei, d=Verzeichnis, l=Symlink
rw- (Pos. 2-4)
Rechte des Besitzers (User): Lesen, Schreiben, kein Ausführen
r-- (Pos. 5-7)
Rechte der Gruppe (Group): nur Lesen
r-- (Pos. 8-10)
Rechte für alle anderen (Other): nur Lesen
1
Anzahl Hardlinks
root root
Besitzer und Gruppe
2847
Dateigröße in Bytes
Die drei Rechte-Buchstaben stehen für: r = Lesen (4), w = Schreiben (2), x = Ausführen (1). Ein Bindestrich (-) bedeutet: Recht nicht gesetzt.
# Detailinfos zu einer Datei anzeigen (Rechte, Owner, Zeiten)
stat /etc/passwdSchritt 2: chmod – Rechte mit Oktal-Notation setzen
Die Oktal-Notation ist die schnellste Methode für chmod. Jede der drei Stellen steht für User, Group, Other. Die Werte addierst du: r=4, w=2, x=1.
ModusOktalRechteTypischer Einsatz
rw-r--r--
644
Owner liest/schreibt, Group+Other nur Lesen
Textdateien, Configs
rwxr-xr-x
755
Owner voll, Group+Other lesen+ausführen
Skripte, Verzeichnisse
rw-------
600
Nur Owner liest/schreibt
SSH-Keys, private Configs
rwx------
700
Nur Owner betritt/liest/schreibt
Private Verzeichnisse
rwxrwxrwx
777
Alle Rechte für alle
Nur für temporäre Verzeichnisse, Sicherheitsrisiko!
# Standardrechte für eine Konfigurationsdatei
chmod 644 /etc/myapp/config.conf
# Skript ausführbar machen (Owner voll, andere lesen+ausführen)
chmod 755 /usr/local/bin/myscript.sh
# Private Datei (z. B. SSH-Schlüssel) – nur Owner
chmod 600 ~/.ssh/id_rsa
# Privates Verzeichnis
chmod 700 ~/.ssh
# Rekursiv alle Dateien in einem Verzeichnis anpassen
chmod -R 644 /var/www/html/uploadsSchritt 3: chmod – symbolische Notation für gezielte Änderungen
Die symbolische Notation ist besser lesbar und eignet sich für gezielte Anpassungen, ohne alle drei Ebenen neu setzen zu müssen. Schema: ziel operator recht.
KürzelBedeutung
u
User (Besitzer)
g
Group (Gruppe)
o
Other (alle anderen)
a
All (alle drei Ebenen gleichzeitig)
+
Recht hinzufügen
-
Recht entfernen
=
Recht exakt setzen (andere löschen)
# Execute-Bit für den Besitzer hinzufügen
chmod u+x /usr/local/bin/deploy.sh
# Schreibrecht der Gruppe entfernen
chmod g-w /var/log/app.log
# Allen Benutzer Leserecht geben
chmod a+r /var/www/html/index.html
# Exakt setzen: Owner rwx, Group rx, Other nichts
chmod u=rwx,g=rx,o= /opt/myapp/bin/server
# Mehrere Änderungen in einem Aufruf
chmod u+x,g-w,o-w /opt/scripts/maintenance.shSchritt 4: chown und chgrp – Besitzer und Gruppe ändern
chown ändert den Besitzer und optional die Gruppe einer Datei oder eines Verzeichnisses. chgrp ändert nur die Gruppe. Für rekursive Änderungen verwendest du das Flag -R.
# Nur Besitzer ändern
chown webadmin /var/www/html/index.html
# Besitzer und Gruppe gleichzeitig ändern
chown www-data:www-data /var/www/html
# Nur Gruppe ändern (Besitzer bleibt)
chown :www-data /var/www/html/uploads
# Rekursiv: gesamtes Verzeichnis
chown -R www-data:www-data /var/www/mysite
# Alternativ: nur Gruppe ändern mit chgrp
chgrp docker /var/run/docker.sockHinweis zu Symlinks: chown ohne weitere Optionen folgt Symlinks und ändert das Ziel. Verwende chown -h, um den Symlink selbst zu ändern.
Schritt 5: Benutzer und Gruppen anlegen und verwalten
Für die Benutzerverwaltung stehen useradd (Low-Level, skriptgeeignet) und adduser (Debian/Ubuntu-Wrapper mit interaktivem Setup) zur Verfügung. Gruppen verwaltest du mit groupadd und usermod.
# Neuen Benutzer mit Home-Verzeichnis und Shell anlegen (alle Distros)
useradd -m -s /bin/bash newuser
# Direkt mit zusätzlichen Gruppen anlegen
useradd -m -G sudo,docker deploy
# Interaktiver Benutzer-Wizard (Debian/Ubuntu)
adduser newuser
# Existierenden Benutzer zu Gruppen hinzufügen (IMMER -a verwenden!)
usermod -aG sudo,docker newuser
# Shell eines Benutzers ändern
usermod -s /bin/zsh newuser
# Benutzer umbenennen
usermod -l neuername altername
# Neue Gruppe anlegen
groupadd mygroup
# Benutzer zu Gruppe hinzufügen (Debian/Ubuntu-Wrapper)
adduser newuser mygroupNach dem Hinzufügen zu einer Gruppe muss sich der Benutzer ab- und wieder anmelden, damit die neue Gruppenmitgliedschaft gilt.
Schritt 6: Benutzer und Gruppen prüfen – id, getent, groups
Mit diesen Befehlen kontrollierst du Benutzer, UIDs, GIDs und Gruppenzugehörigkeiten:
# Eigene Benutzer-Infos anzeigen
id
# Infos zu einem bestimmten Benutzer
id newuser
# Ausgabe: uid=1001(newuser) gid=1001(newuser) groups=1001(newuser),27(sudo),999(docker)
# Gruppen eines Benutzers anzeigen
groups newuser
# Alle lokalen Benutzer auflisten (inkl. LDAP/NSS-Quellen)
getent passwd
# Bestimmten Benutzer nachschlagen
getent passwd newuser
# Ausgabe: newuser:x:1001:1001::/home/newuser:/bin/bash
# Alle Gruppen auflisten
getent group
# Bestimmte Gruppe prüfen
getent group sudo
# Ausgabe: sudo:x:27:newuser,anotheruserDas Format von /etc/passwd lautet: user:x:uid:gid:gecos:home:shell – das x bedeutet, das Passwort liegt gehashed in /etc/shadow. getent liest im Gegensatz zu cat /etc/passwd auch LDAP- und NSS-Quellen ein.
Schritt 7: sudo und /etc/sudoers mit visudo konfigurieren
sudo erlaubt Benutzern, Befehle mit erhöhten Rechten auszuführen. Die Konfiguration liegt in /etc/sudoers und darf ausschließlich über visudo bearbeitet werden – dieses Tool sperrt die Datei und prüft die Syntax vor dem Speichern.
# sudoers-Datei sicher öffnen
sudo visudo
# Eigene sudoers-Datei im Include-Verzeichnis anlegen (empfohlen)
sudo visudo -f /etc/sudoers.d/myteam
# Eigene sudo-Rechte anzeigen
sudo -lDas Format einer sudoers-Zeile lautet:
user|%gruppe host=(als_wen) [NOPASSWD:] befehlWichtige Beispiele für die /etc/sudoers-Datei oder eine Datei in /etc/sudoers.d/:
# Gruppe sudo (Debian/Ubuntu) – alle Befehle mit Passwortabfrage
%sudo ALL=(ALL:ALL) ALL
# Gruppe wheel (RHEL/Fedora/Rocky) – alle Befehle ohne Passwort
%wheel ALL=(ALL) NOPASSWD: ALL
# Nur apt ohne Passwort erlauben (exakter Pfad!)
%sudo ALL=(ALL:ALL) NOPASSWD: /usr/bin/apt
# Einzelnen Benutzer ohne Passwort
deploy ALL=(ALL) NOPASSWD: ALLDie sudoers-Datei muss die Rechte 0440 (r--r-----) haben – visudo stellt das automatisch sicher. Setze niemals andere Rechte manuell.
Schritt 8: Spezialbits – setuid, setgid und Sticky Bit
Über die normalen rwx-Rechte hinaus gibt es drei Spezialbits, die du als Admin kennen musst:
BitOktalSymbolischWirkung
setuid
4xxx
u+s
Programm läuft mit Rechten des Datei-Owners (z. B. /usr/bin/sudo)
setgid
2xxx
g+s
Programm läuft mit Gruppenrechten; neue Dateien erben die Gruppe des Verzeichnisses
Sticky Bit
1xxx
o+t
In Verzeichnissen: nur der Datei-Owner kann löschen (z. B. /tmp)
# setuid setzen (Programm läuft als Owner)
chmod 4755 /usr/local/bin/myhelper
# oder symbolisch
chmod u+s /usr/local/bin/myhelper
# setgid auf Verzeichnis (neue Dateien erben Gruppe)
chmod 2755 /srv/shared
# oder symbolisch
chmod g+s /srv/shared
# Sticky Bit auf /tmp (nur Owner kann eigene Dateien löschen)
chmod 1777 /tmp
# oder symbolisch
chmod o+t /tmp
# ls -l zeigt Spezialbits:
# -rwsr-xr-x = setuid (s statt x bei User)
# drwxrwsr-x = setgid (s statt x bei Group)
# drwxrwxrwt = Sticky Bit (t statt x bei Other)
ls -l /usr/bin/sudo /tmpWichtig: setuid auf Shell-Skripte hat aus Sicherheitsgründen keine Wirkung – Linux ignoriert das Bit für interpretierte Skripte. Es funktioniert nur bei kompilierten Binaries.
Troubleshooting
- Problem: usermod hat alle Gruppen des Benutzers entfernt. Du hast
usermod -G gruppe userohne-averwendet. Das ersetzt alle bestehenden Gruppen. Lösung: immerusermod -aG gruppe userbenutzen. Zur Wiederherstellung: alle Gruppen mitid userprüfen und mitusermod -aG gruppe1,gruppe2 userneu hinzufügen. - Problem: sudo funktioniert nach einer Änderung in /etc/sudoers nicht mehr. Syntaxfehler in der Datei. Falls du noch eine Root-Session offen hast:
visudoöffnen und Fehler korrigieren. Präventiv immersudo visudostatt direktem Editieren verwenden. - Problem: Gruppe ist dem Benutzer zugewiesen, aber Zugriff wird verweigert. Die Gruppenmitgliedschaft gilt erst nach erneutem Anmelden. Lösung:
newgrp gruppennameoder komplett aus- und einloggen. - Problem: chmod auf einen Symlink hat keine Wirkung. chmod folgt Symlinks und ändert das Ziel. Das ist in den meisten Fällen das gewünschte Verhalten. Willst du den Symlink selbst ändern (selten sinnvoll), verwende
chown -h. - Problem: setuid-Bit auf Shell-Skript funktioniert nicht. Shell-Skripte ignorieren setuid – das ist kein Fehler, sondern eine Sicherheitsfunktion des Kernels. Nur kompilierte Binaries unterstützen setuid.
- Problem: /etc/sudoers hat falsche Rechte, visudo warnt. Die Datei muss exakt
0440haben. Korrigieren mit:chmod 0440 /etc/sudoers(als Root). - Problem: NOPASSWD greift nicht, obwohl korrekt eingetragen. Überprüfe, ob der exakte Pfad des Befehls angegeben ist (z. B.
/usr/bin/apt, nichtapt).which aptzeigt den korrekten Pfad.
Häufige Fragen
Was ist der Unterschied zwischen useradd und adduser?
useradd ist das Low-Level-Werkzeug, das auf allen Linux-Distributionen verfügbar ist und sich gut für Skripte eignet. Ohne Flags erstellt es kein Home-Verzeichnis und setzt keine Shell. adduser ist ein Debian/Ubuntu-spezifischer Wrapper, der interaktiv nach Passwort und weiteren Infos fragt, ein Home-Verzeichnis anlegt und Defaults aus /etc/adduser.conf verwendet. Für Skripte: useradd -m -s /bin/bash username. Im Terminal auf Debian/Ubuntu: adduser username.
Warum darf ich /etc/sudoers nie direkt mit nano oder vim öffnen?
Ein Syntaxfehler in /etc/sudoers deaktiviert sudo für alle Benutzer – auch für root, wenn root sudo verwendet. visudo sperrt die Datei (verhindert gleichzeitige Bearbeitung), prüft die Syntax vor dem Speichern und verweigert das Schreiben bei Fehlern. Ohne visudo kannst du dich selbst aus dem System aussperren.
Was bedeutet die primäre Gruppe und wie unterscheidet sie sich von sekundären Gruppen?
Jeder Benutzer hat genau eine primäre Gruppe, die in /etc/passwd als GID gespeichert ist. Neu erstellte Dateien erhalten automatisch diese Gruppe. Sekundäre Gruppen stehen in /etc/group und erweitern die Zugriffsrechte des Benutzers. id username zeigt alle Gruppen. Die primäre Gruppe änderst du mit usermod -g neue-gruppe username (ohne -a).
Wann verwende ich chmod 755 und wann 644?
644 ist der Standard für Dateien, die andere lesen aber nicht ausführen sollen (Texte, Configs, Webseiten). 755 ist der Standard für ausführbare Dateien (Skripte, Programme) und Verzeichnisse, auf die andere zugreifen dürfen. Verzeichnisse brauchen das Execute-Bit, damit man mit cd hineinwechseln kann – deshalb 755 statt 644 für Verzeichnisse.
Was genau bewirkt das Sticky Bit auf /tmp?
In /tmp haben alle Benutzer Schreibrecht (777). Ohne Sticky Bit könnte jeder Benutzer Dateien anderer löschen. Mit Sticky Bit (1777) kann nur der jeweilige Datei-Owner seine eigene Datei löschen – root ausgenommen. Das t am Ende von drwxrwxrwt zeigt das Sticky Bit an. Auf reguläre Dateien hat das Sticky Bit keine Wirkung.
Wie kann ich prüfen, welche sudo-Rechte ein Benutzer hat?
Mit sudo -l zeigt sudo alle Rechte des aktuell angemeldeten Benutzers an. Als Root oder mit sudo-Rechten kannst du sudo -l -U username verwenden, um die Rechte eines anderen Benutzers einzusehen.
Fazit
Das Linux-Rechtesystem mit chmod, chown und sudo ist klar strukturiert und mächtig, sobald du das User/Group/Other-Modell verstanden hast. Für den Alltag reichen dir die Oktal-Werte 644, 755, 600 und 700 sowie die symbolische Notation für gezielte Anpassungen. Benutzer und Gruppen verwaltest du mit useradd/adduser und usermod -aG – das -a-Flag ist dabei kritisch. sudo-Rechte pflegst du immer über visudo, um Syntaxfehler zu vermeiden, die das gesamte System sperren können. Die Spezialbits setuid, setgid und Sticky Bit ergänzen das System für spezielle Anwendungsfälle.
Weiterführende Anleitungen und Quellen
- SSH-Key-Authentifizierung einrichten (Linux und Windows) – Benutzer und Rechte spielen auch bei SSH-Keys eine zentrale Rolle (Dateirechte 600 für private Schlüssel).
- systemd-Service erstellen und verwalten – Dienste laufen oft unter einem dedizierten System-Benutzer; hier lernst du, wie du das richtig konfigurierst.
- Cron und crontab – Grundlagen unter Linux – Cronjobs werden im Kontext des aufrufenden Benutzers und seiner Rechte ausgeführt.
- Alle Linux-Anleitungen auf s-edv.com
Quellen: Linux man-pages chmod(1) (man7.org), chown(1) (man7.org), sudoers(5) (linux.die.net), Ubuntu adduser(8) (manpages.ubuntu.com).