Unter macOS erfordern viele Operationen auf Systemebene erhoehte Rechte, die Ihr normales Benutzerkonto nicht besitzt. Der Befehl sudo (Abkuerzung fuer “superuser do”) ermoeglicht es Ihnen, Befehle mit Root-Zugriff vom Terminal aus auszufuehren. Dieser Leitfaden behandelt die grundlegende und erweiterte sudo-Verwendung, die sudoers-Konfigurationsdatei, die Aktivierung von Touch ID fuer die sudo-Authentifizierung und macOS-spezifische Sicherheitsueberlegungen.
Grundlegende sudo-Verwendung
Einen einzelnen Befehl als Root ausfuehren
Stellen Sie jedem Befehl sudo voran, um ihn mit Root-Rechten auszufuehren:
# Install a package with Homebrew (some operations need sudo)
sudo installer -pkg /path/to/package.pkg -target /
# Edit a system configuration file
sudo nano /etc/hosts
# Change file ownership
sudo chown root:wheel /usr/local/bin/myapp
# Restart a system service
sudo launchctl kickstart -k system/com.apple.mDNSResponder
Wenn Sie sudo zum ersten Mal in einer Terminalsitzung ausfuehren, fordert macOS Ihr Benutzerpasswort an. Nach der Authentifizierung merkt sich sudo Ihre Anmeldedaten fuer 5 Minuten (konfigurierbar), sodass nachfolgende sudo-Befehle innerhalb dieses Zeitfensters keine erneute Authentifizierung erfordern.
Eine erhoehte Shell oeffnen
Wenn Sie mehrere Befehle mit Root-Rechten ausfuehren muessen:
# Open a root shell (preserves your environment)
sudo -s
# Open a root login shell (loads root's environment)
sudo -i
# Exit the root shell when done
exit
In einer Root-Shell wird jeder Befehl mit vollen Systemrechten ausgefuehrt. Seien Sie vorsichtig — es gibt keine Sicherheitsnetze fuer Befehle wie rm -rf.
Einen Befehl als anderer Benutzer ausfuehren
# Run a command as a specific user
sudo -u _www /usr/bin/some-command
# Open a shell as a different user
sudo -u another_user -s
Haeufige sudo-Befehle unter macOS
Systemverwaltung
# Flush the DNS cache
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
# Restart networking
sudo ifconfig en0 down
sudo ifconfig en0 up
# Show listening ports
sudo lsof -iTCP -sTCP:LISTEN -P
# Repair disk permissions (macOS El Capitan and earlier)
sudo diskutil repairPermissions /
# Start/stop/restart services via launchctl
sudo launchctl load /Library/LaunchDaemons/com.example.myservice.plist
sudo launchctl unload /Library/LaunchDaemons/com.example.myservice.plist
Dateisystemoperationen
# Write to a protected directory
sudo cp myfile.conf /etc/
# Edit protected files
sudo nano /etc/apache2/httpd.conf
sudo vim /etc/ssh/sshd_config
# Change permissions on system files
sudo chmod 644 /etc/hosts
Paket- und Softwareverwaltung
# Install Xcode command line tools
sudo xcode-select --install
# Accept Xcode license
sudo xcodebuild -license accept
# Install a .pkg file
sudo installer -pkg /path/to/package.pkg -target /
Die sudoers-Datei verstehen
Die Datei /etc/sudoers steuert, wer sudo verwenden kann und was damit getan werden darf. Unter macOS erlaubt die Standardkonfiguration Mitgliedern der Gruppe admin, jeden Befehl ueber sudo auszufuehren.
Die sudoers-Datei anzeigen
# Always use visudo to edit sudoers (validates syntax)
sudo visudo
# View without editing
sudo cat /etc/sudoers
Bearbeiten Sie /etc/sudoers niemals direkt mit einem Texteditor. Verwenden Sie immer visudo, das die Syntax vor dem Speichern validiert. Ein Syntaxfehler in dieser Datei kann Sie vollstaendig von sudo aussperren.
Standard-sudoers-Konfiguration unter macOS
Die Schluesselzeile in der macOS-sudoers-Datei lautet:
%admin ALL=(ALL) ALL
Das bedeutet: Jedes Mitglied der Gruppe admin (%admin) kann jeden Befehl (ALL) als jeder Benutzer (ALL) auf jedem Host (ALL) ausfuehren.
Benutzerdefinierte sudoers-Regeln hinzufuegen
Fuer eine detailliertere Kontrolle fuegen Sie Regeln in /etc/sudoers.d/ hinzu, anstatt die Hauptdatei zu bearbeiten:
# Create a custom sudoers rule file
sudo visudo -f /etc/sudoers.d/custom-rules
Beispielregeln:
# Allow a user to restart Apache without a password
john ALL=(root) NOPASSWD: /usr/sbin/apachectl restart
# Allow a group to run specific commands
%developers ALL=(root) NOPASSWD: /usr/local/bin/deploy.sh
# Allow a user to run any command without a password (use with caution)
jane ALL=(ALL) NOPASSWD: ALL
Das sudo-Timeout aendern
Standardmaessig merkt sich sudo Ihr Passwort fuer 5 Minuten. Um dies zu aendern:
sudo visudo
Fuegen Sie hinzu oder aendern Sie:
Defaults timestamp_timeout=15
Setzen Sie auf 0, um jedes Mal ein Passwort zu verlangen, oder -1, um innerhalb einer Sitzung nie abzulaufen.
Touch ID fuer sudo
Auf Macs mit Touch ID koennen Sie sudo mit Ihrem Fingerabdruck authentifizieren, anstatt Ihr Passwort einzugeben.
macOS Sonoma und spaeter
Ab macOS Sonoma stellt Apple eine dedizierte Datei fuer die Touch-ID-sudo-Konfiguration bereit:
# Create or edit the sudo_local file
sudo nano /etc/pam.d/sudo_local
Fuegen Sie diese Zeile hinzu:
auth sufficient pam_tid.so
Speichern Sie die Datei. Beim naechsten Verwenden von sudo im Terminal werden Sie mit Touch ID aufgefordert.
Aeltere macOS-Versionen
Bei Versionen vor Sonoma bearbeiten Sie die Haupt-PAM-Konfiguration fuer sudo:
sudo nano /etc/pam.d/sudo
Fuegen Sie auth sufficient pam_tid.so als erste Zeile hinzu:
auth sufficient pam_tid.so
auth sufficient pam_smartcard.so
auth required pam_opendirectory.so
account required pam_permit.so
password required pam_deny.so
session required pam_permit.so
Hinweis: Bei aelteren macOS-Versionen koennen Systemupdates /etc/pam.d/sudo ueberschreiben, und Sie muessen die Touch-ID-Zeile erneut hinzufuegen. Der sudo_local-Ansatz unter Sonoma bleibt ueber Updates hinweg bestehen.
Touch ID in iTerm2 und Drittanbieter-Terminals
Einige Terminalemulatoren unterstuetzen Touch ID fuer sudo moeglicherweise nicht standardmaessig. In iTerm2:
- Gehen Sie zu Preferences > Advanced
- Suchen Sie nach “Allow sessions to survive logging out and back in”
- Setzen Sie auf No
Dies stellt sicher, dass die PAM-Sitzung korrekt fuer Touch ID weitergegeben wird.
macOS-spezifische Sicherheitsueberlegungen
System Integrity Protection (SIP)
macOS hat den System Integrity Protection standardmaessig aktiviert. Selbst mit sudo/Root-Zugriff sind bestimmte Verzeichnisse und Operationen geschuetzt:
/System,/usr(ausser/usr/local) und/sbinsind schreibgeschuetzt- Sie koennen Systembinaries oder Kernel-Erweiterungen nicht aendern
- Bestimmte Systemprozesse koennen nicht angehaengt oder geaendert werden
Um den SIP-Status zu pruefen:
csrutil status
Deaktivieren Sie SIP nicht, es sei denn, Sie haben einen bestimmten, voruebergehenden Bedarf und verstehen die Sicherheitsimplikationen.
Gatekeeper und Notarisierung
Das Ausfuehren nicht signierter oder nicht notarisierter Software kann selbst mit sudo zusaetzliche Schritte erfordern:
# Remove quarantine attribute from a downloaded app
sudo xattr -r -d com.apple.quarantine /Applications/SomeApp.app
# Allow apps from identified developers
sudo spctl --master-enable
Das Root-Benutzerkonto
macOS hat ein Root-Benutzerkonto, das standardmaessig deaktiviert ist. Sie koennen es aktivieren, aber dies wird generell nicht empfohlen:
Zum Aktivieren (nicht empfohlen):
- Gehen Sie zu Systemeinstellungen > Benutzer und Gruppen
- Klicken Sie auf Bearbeiten neben dem Netzwerk-Account-Server (oder oeffnen Sie das Verzeichnisdienstprogramm)
- Gehen Sie zum Menue Bearbeiten > Root-Benutzer aktivieren
- Legen Sie ein starkes Passwort fest
Es ist sicherer, sudo zu verwenden, als den Root-Account zu aktivieren und sich als Root anzumelden. Mit sudo haben Sie eine Audit-Spur, welcher Benutzer welchen privilegierten Befehl ausgefuehrt hat.
Admin-Benutzer verwalten
Admin-Gruppenmitgliedschaft pruefen
# Check if a user is in the admin group
dseditgroup -o checkmember -m username admin
# List all admin users
dscl . -read /Groups/admin GroupMembership
Administratorzugriff gewaehren
Ueber die Systemeinstellungen:
- Oeffnen Sie Systemeinstellungen > Benutzer und Gruppen
- Klicken Sie auf die Info-Schaltflaeche (i) neben dem Benutzerkonto
- Aktivieren Sie Benutzer darf diesen Computer verwalten
Ueber die Befehlszeile:
# Add a user to the admin group
sudo dseditgroup -o edit -a username -t user admin
# Remove a user from the admin group
sudo dseditgroup -o edit -d username -t user admin
Zusammenfassung
Der Befehl sudo ist die Standardmethode zum Ausfuehren von Befehlen mit erhoehten Rechten unter macOS. Verwenden Sie sudo fuer einzelne Befehle und sudo -s oder sudo -i fuer interaktive Root-Shells. Konfigurieren Sie die sudoers-Datei mit visudo fuer benutzerdefinierte Zugriffsregeln und aktivieren Sie Touch ID fuer sudo auf unterstuetzten Macs durch Bearbeitung von /etc/pam.d/sudo_local. Denken Sie daran, dass der System Integrity Protection von macOS einschraenkt, was selbst Root tun kann, was fuer die Sicherheit beabsichtigt ist. Bevorzugen Sie immer sudo gegenueber der Aktivierung des Root-Kontos, da es Nachverfolgbarkeit bietet und mit feinkoernigen Berechtigungen konfiguriert werden kann.