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
idAlle Benutzer
cat /etc/passwdFormat: benutzername:x:UID:GID:Kommentar:Home:Shell
Nur Benutzernamen
cut -d: -f1 /etc/passwdBenutzer mit Login-Shell
grep -v '/nologin\|/false' /etc/passwdBenutzer erstellen
useradd
useradd maxMit Home-Verzeichnis
useradd -m maxMit 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 maxFragt automatisch nach Passwort und Details.
Passwort setzen
Für anderen Benutzer
passwd maxEigenes Passwort
passwdPasswort-Ablauf setzen
# Ablauf nach 90 Tagen
chage -M 90 max
# Passwort-Info anzeigen
chage -l maxBenutzer ändern
Shell ändern
usermod -s /bin/zsh maxZu Gruppen hinzufügen
# Zusätzliche Gruppen (bestehende bleiben)
usermod -aG sudo max
usermod -aG docker maxWichtig: -a nicht vergessen, sonst werden bestehende Gruppen überschrieben!
Home-Verzeichnis ändern
usermod -d /home/neues-home -m maxBenutzer umbenennen
usermod -l neuer_name alter_nameBenutzer deaktivieren
# Shell auf nologin setzen
usermod -s /usr/sbin/nologin max
# Konto sperren
usermod -L max
# Konto entsperren
usermod -U maxBenutzer löschen
Nur Benutzer
userdel maxMit Home-Verzeichnis
userdel -r maxMit Debian/Ubuntu
deluser max
deluser --remove-home maxGruppen verwalten
Gruppen anzeigen
# Alle Gruppen
cat /etc/group
# Gruppen eines Benutzers
groups max
id maxGruppe erstellen
groupadd entwicklerMit GID
groupadd -g 1500 entwicklerGruppe löschen
groupdel entwicklerBenutzer zu Gruppe hinzufügen
# Methode 1: usermod
usermod -aG entwickler max
# Methode 2: gpasswd
gpasswd -a max entwicklerBenutzer aus Gruppe entfernen
gpasswd -d max entwicklerWichtige 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,annaSystem-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/RHELIndividuelle 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: ALLPraktische 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/.sshSFTP-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 noShared-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/projektDas 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/projektBenutzer-Limits
/etc/security/limits.conf
# Max. offene Dateien
max hard nofile 65535
# Max. Prozesse
max hard nproc 4096Befehls-Ü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.