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
OptionBeschreibung
-mHome-Verzeichnis erstellen
-sShell festlegen
-cKommentar/Vollständiger Name
-GZusätzliche Gruppen
-gPrimäre Gruppe
-dHome-Verzeichnis Pfad
-eAblaufdatum (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
FeldBedeutung
1Benutzername
2x (Passwort in /etc/shadow)
3UID
4GID (primäre Gruppe)
5Kommentar (GECOS)
6Home-Verzeichnis
7Shell

/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
OptionBeschreibung
-rSystem-Benutzer (UID < 1000)
-s /usr/sbin/nologinKein 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

AufgabeBefehl
Benutzer erstellenuseradd -m username
Passwort setzenpasswd username
Benutzer ändernusermod [Optionen] username
Benutzer löschenuserdel -r username
Gruppe erstellengroupadd groupname
Zur Gruppe hinzufügenusermod -aG groupname username
Gruppen anzeigengroups username
Benutzer-Infoid 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.