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.