dscl — Verzeichnisdienste und Benutzer verwalten

Praxis-Guide zu dscl — lokale Nutzer und Gruppen unter macOS über die Directory-Service-Kommandozeile abfragen, anlegen, ändern und löschen.

dscl ist das Kommandozeilenwerkzeug für den Directory Service unter macOS – damit fragst du lokale Nutzer, Gruppen und deren Attribute ab und verwaltest sie direkt im Terminal. Der erste Parameter benennt den Verzeichnisknoten; der Punkt . steht dabei für den lokalen Knoten deines Macs. Anders als useradd/usermod unter Linux arbeitet dscl auf der Verzeichnisdatenbank von macOS und ist das richtige Werkzeug, um Konten skriptgesteuert anzulegen oder zu reparieren. Dieser Guide zeigt dir die wichtigsten Befehle vom reinen Abfragen bis zum vollständigen Anlegen eines neuen Benutzers.

Auflisten & Auslesen

dscl . -list /Users — Listet alle lokalen Nutzer auf.

dscl . -list /Users

dscl . -list /Users UniqueID — Listet alle Nutzer mit ihren UIDs auf.

dscl . -list /Users UniqueID

dscl . -list /Groups — Listet alle lokalen Gruppen auf.

dscl . -list /Groups

dscl . -read /Users/<user> — Zeigt alle Attribute eines Nutzers an.

dscl . -read /Users/admin

dscl . -read /Users/<user> UserShell — Zeigt ein einzelnes Nutzer-Attribut an.

dscl . -read /Users/admin UserShell

dscl . -read /Groups/<group> GroupMembership — Zeigt die Mitglieder einer Gruppe an.

dscl . -read /Groups/admin GroupMembership

Nutzer anlegen

dscl . -create /Users/<user> — Legt einen neuen Nutzer-Datensatz an.

sudo dscl . -create /Users/newuser

dscl . -create /Users/<user> UserShell /bin/zsh — Setzt die Login-Shell des Nutzers.

sudo dscl . -create /Users/newuser UserShell /bin/zsh

dscl . -create /Users/<user> RealName '<name>' — Setzt den vollständigen Namen des Nutzers.

sudo dscl . -create /Users/newuser RealName 'John Doe'

dscl . -create /Users/<user> UniqueID <uid> — Setzt die UID des Nutzers.

sudo dscl . -create /Users/newuser UniqueID 550

dscl . -create /Users/<user> PrimaryGroupID <gid> — Setzt die primäre Gruppen-ID des Nutzers.

sudo dscl . -create /Users/newuser PrimaryGroupID 20

dscl . -create /Users/<user> NFSHomeDirectory /Users/<user> — Setzt den Pfad zum Home-Verzeichnis.

sudo dscl . -create /Users/newuser NFSHomeDirectory /Users/newuser

dscl . -passwd /Users/<user> '<password>' — Setzt das Passwort des Nutzers.

sudo dscl . -passwd /Users/newuser 'secretpass'

Ändern & Löschen

dscl . -change /Users/<user> UserShell <old> <new> — Ändert ein Nutzer-Attribut.

sudo dscl . -change /Users/admin UserShell /bin/bash /bin/zsh

dscl . -append /Groups/<group> GroupMembership <user> — Fügt einen Nutzer zu einer Gruppe hinzu.

sudo dscl . -append /Groups/admin GroupMembership newuser

dscl . -delete /Groups/<group> GroupMembership <user> — Entfernt einen Nutzer aus einer Gruppe.

sudo dscl . -delete /Groups/admin GroupMembership newuser

dscl . -delete /Users/<user> — Löscht ein Nutzerkonto.

sudo dscl . -delete /Users/olduser

Gruppen

dscl . -create /Groups/<group> — Legt eine neue Gruppe an.

sudo dscl . -create /Groups/developers

dscl . -create /Groups/<group> PrimaryGroupID <gid> — Setzt die GID der Gruppe.

sudo dscl . -create /Groups/developers PrimaryGroupID 600

dscl . -delete /Groups/<group> — Löscht eine Gruppe.

sudo dscl . -delete /Groups/developers

Häufige Muster

dscl . -list /Users | grep -v '^_' — Listet nur echte Nutzer auf (System-Nutzer mit _ am Anfang ausgeschlossen).

dscl . -list /Users | grep -v '^_'

dscl . -list /Users UniqueID | sort -nk2 — Listet Nutzer nach UID sortiert auf.

dscl . -list /Users UniqueID | sort -nk2

id <user> — Schneller Weg, UID, GID und Gruppen eines Nutzers zu prüfen.

id admin

dscacheutil -flushcache — Leert den Cache des Directory Service.

sudo dscacheutil -flushcache

Fazit

dscl ist unter macOS das direkteste Werkzeug, um lokale Konten skriptgesteuert zu inspizieren und zu pflegen – vom schnellen -read bis zum vollständigen Anlegen eines Nutzers mit UID, Shell, Gruppe und Home-Verzeichnis. Sei dir bewusst, dass jeder schreibende Aufruf (-create, -change, -append, -delete, -passwd) sudo benötigt und die Verzeichnisdatenbank unmittelbar verändert. Gerade -delete und -passwd solltest du mit Bedacht einsetzen: Ein falscher Pfad oder eine vergessene Pflicht-Eigenschaft (etwa eine UID) kann Logins sperren oder ein Konto unbrauchbar machen. Teste neue Befehle nach Möglichkeit zuerst an einem Wegwerf-Konto, bevor du sie auf produktive Nutzer loslässt.

Verwandte Kommandos

  • caffeinate – verhindert, dass der Mac in den Ruhezustand wechselt
  • defaults – liest und schreibt Einstellungen in macOS-Property-Lists
  • diskutil – verwaltet Festplatten, Volumes und Partitionen