Die Benutzer- und Gruppenverwaltung ist fundamental für die Linux-Administration. Sie regelt, wer was auf dem System darf.

Grundkonzept

Linux unterscheidet zwischen:

  • Benutzern (Users): Einzelne Konten
  • Gruppen (Groups): Zusammenfassung von Benutzern

Jeder Benutzer hat:

  • Eine User-ID (UID)
  • Eine primäre Gruppe
  • Optional weitere Gruppen

Benutzer anzeigen

Aktuellen Benutzer

whoami
id

Alle Benutzer

cat /etc/passwd

Format: benutzername:x:UID:GID:Kommentar:Home:Shell

Nur Benutzernamen

cut -d: -f1 /etc/passwd

Benutzer mit Login-Shell

grep -v '/nologin\|/false' /etc/passwd

Benutzer erstellen

useradd

useradd max

Mit Home-Verzeichnis

useradd -m max

Mit allen Optionen

useradd -m -s /bin/bash -c "Max Mustermann" -G sudo,www-data max

| Option | Beschreibung | |--------|--------------| | -m | Home-Verzeichnis erstellen | | -s | Shell festlegen | | -c | Kommentar/Vollständiger Name | | -G | Zusätzliche Gruppen | | -g | Primäre Gruppe | | -d | Home-Verzeichnis Pfad | | -e | Ablaufdatum (YYYY-MM-DD) |

adduser (Debian/Ubuntu)

Interaktiver und benutzerfreundlicher:

adduser max

Fragt automatisch nach Passwort und Details.

Passwort setzen

Für anderen Benutzer

passwd max

Eigenes Passwort

passwd

Passwort-Ablauf setzen

# Ablauf nach 90 Tagen
chage -M 90 max

# Passwort-Info anzeigen
chage -l max

Benutzer ändern

Shell ändern

usermod -s /bin/zsh max

Zu Gruppen hinzufügen

# Zusätzliche Gruppen (bestehende bleiben)
usermod -aG sudo max
usermod -aG docker max

Wichtig: -a nicht vergessen, sonst werden bestehende Gruppen überschrieben!

Home-Verzeichnis ändern

usermod -d /home/neues-home -m max

Benutzer umbenennen

usermod -l neuer_name alter_name

Benutzer deaktivieren

# Shell auf nologin setzen
usermod -s /usr/sbin/nologin max

# Konto sperren
usermod -L max

# Konto entsperren
usermod -U max

Benutzer löschen

Nur Benutzer

userdel max

Mit Home-Verzeichnis

userdel -r max

Mit Debian/Ubuntu

deluser max
deluser --remove-home max

Gruppen verwalten

Gruppen anzeigen

# Alle Gruppen
cat /etc/group

# Gruppen eines Benutzers
groups max
id max

Gruppe erstellen

groupadd entwickler

Mit GID

groupadd -g 1500 entwickler

Gruppe löschen

groupdel entwickler

Benutzer zu Gruppe hinzufügen

# Methode 1: usermod
usermod -aG entwickler max

# Methode 2: gpasswd
gpasswd -a max entwickler

Benutzer aus Gruppe entfernen

gpasswd -d max entwickler

Wichtige Systemdateien

/etc/passwd

Benutzerinformationen:

max:x:1001:1001:Max Mustermann:/home/max:/bin/bash

| Feld | Bedeutung | |------|-----------| | 1 | Benutzername | | 2 | x (Passwort in /etc/shadow) | | 3 | UID | | 4 | GID (primäre Gruppe) | | 5 | Kommentar (GECOS) | | 6 | Home-Verzeichnis | | 7 | Shell |

/etc/shadow

Passwörter (gehashed):

max:$6$...:19000:0:99999:7:::

/etc/group

Gruppeninformationen:

entwickler:x:1500:max,anna

System-Benutzer

Dienste laufen oft unter eigenen Benutzern ohne Login:

# System-Benutzer erstellen
useradd -r -s /usr/sbin/nologin meindienst

| Option | Beschreibung | |--------|--------------| | -r | System-Benutzer (UID < 1000) | | -s /usr/sbin/nologin | Kein Login möglich |

Sudo-Rechte verwalten

Benutzer zur sudo-Gruppe

usermod -aG sudo max      # Debian/Ubuntu
usermod -aG wheel max     # CentOS/RHEL

Individuelle sudo-Rechte

visudo
# Volle Rechte
max ALL=(ALL:ALL) ALL

# Nur bestimmte Befehle
max ALL=(ALL) /usr/bin/apt, /usr/bin/systemctl

# Ohne Passwort (Vorsicht!)
max ALL=(ALL) NOPASSWD: ALL

Praktische Beispiele

Web-Entwickler einrichten

# Benutzer erstellen
useradd -m -s /bin/bash -c "Web Developer" webdev

# Passwort setzen
passwd webdev

# Zu www-data Gruppe hinzufügen
usermod -aG www-data webdev

# SSH-Key einrichten
mkdir -p /home/webdev/.ssh
chmod 700 /home/webdev/.ssh
touch /home/webdev/.ssh/authorized_keys
chmod 600 /home/webdev/.ssh/authorized_keys
chown -R webdev:webdev /home/webdev/.ssh

SFTP-Only-Benutzer

# Benutzer erstellen
useradd -m -s /usr/sbin/nologin sftpuser
passwd sftpuser

# Gruppe
groupadd sftponly
usermod -aG sftponly sftpuser

# SSH-Konfiguration anpassen
# In /etc/ssh/sshd_config:
Match Group sftponly
    ChrootDirectory /home/%u
    ForceCommand internal-sftp
    AllowTcpForwarding no

Shared-Verzeichnis für Gruppe

# Gruppe erstellen
groupadd projekt

# Benutzer hinzufügen
usermod -aG projekt max
usermod -aG projekt anna

# Verzeichnis erstellen
mkdir /srv/projekt
chown root:projekt /srv/projekt
chmod 2775 /srv/projekt

Das Setgid-Bit (2) sorgt dafür, dass neue Dateien automatisch der Gruppe gehören.

ACLs (Access Control Lists)

Für feinere Berechtigungen:

# ACL setzen
setfacl -m u:max:rwx /srv/projekt

# ACL anzeigen
getfacl /srv/projekt

# ACL entfernen
setfacl -x u:max /srv/projekt

Benutzer-Limits

/etc/security/limits.conf

# Max. offene Dateien
max hard nofile 65535

# Max. Prozesse
max hard nproc 4096

Befehls-Übersicht

| Aufgabe | Befehl | |---------|--------| | Benutzer erstellen | useradd -m username | | Passwort setzen | passwd username | | Benutzer ändern | usermod [Optionen] username | | Benutzer löschen | userdel -r username | | Gruppe erstellen | groupadd groupname | | Zur Gruppe hinzufügen | usermod -aG groupname username | | Gruppen anzeigen | groups username | | Benutzer-Info | id username |

Fazit

Die Benutzer- und Gruppenverwaltung ist essenziell für Sicherheit und Organisation. Verwenden Sie immer usermod -aG für Gruppen (nicht -G ohne -a), und erstellen Sie für Dienste eigene System-Benutzer ohne Login-Shell.