Linux su-Befehl
Der Linux-Befehl su (vollständiger englischer Name: switch user) wird verwendet, um die Benutzeridentität zu wechseln. Außer bei root müssen Sie das Passwort dieses Benutzers eingeben.
Berechtigungen: alle Benutzer.
Syntax
su [选项] [用户名]
Zum Beispiel:
su # 切换到root,保持当前环境 su - # 切换到root,加载root的完整环境 su root # 明确指定切换到root用户
Zu einem anderen Benutzer wechseln:
su username su - username su -l username
Parameterbeschreibung:
-oder-loder--login: Bietet eine Umgebung, die einer direkten Anmeldung ähnelt-c command: Den angegebenen Befehl ausführen und dann beenden-s shell: Die zu verwendende Shell angeben-poder--preserve-environment: Aktuelle Umgebungsvariablen beibehalten
Beispiele
Vorübergehend einen Befehl als root ausführen:
su -c "apt update && apt upgrade" root
Zu einem Dienstbenutzer zum Debuggen wechseln:
su - www-data su -s /bin/bash www-data # 如果默认shell是/bin/false
Verwendung in Skripten:
su - postgres -c "psql -c 'SELECT version();'"
su-Sitzung beenden:
exit # 退出当前su会话 Ctrl+D # 同样可以退出
Unterschied zwischen su und su -
su(Nicht-Login-Schalter):
- Behält die Umgebungsvariablen des aktuellen Benutzers bei
- Arbeitsverzeichnis unverändert
- Umgebungsvariablen wie PATH bleiben unverändert
su -(Login-Schalter):
- Lädt die vollständige Umgebung des Zielbenutzers
- Wechselt in das Home-Verzeichnis des Zielbenutzers
- Setzt Umgebungsvariablen wie PATH und HOME zurück
- Führt die Login-Skripte des Zielbenutzers aus
Beispielvergleich
# 当前用户:john,工作目录:/home/john pwd # /home/john echo $HOME # /home/john su root pwd # /home/john (目录未变) echo $HOME # /home/john (环境未变) exit su - root pwd # /root (切换到root家目录) echo $HOME # /root (完整环境) exit
Unterschied zwischen su und sudo
| Merkmal | su | sudo |
|---|---|---|
| Passwort erforderlich | Passwort des Zielbenutzers | Passwort des aktuellen Benutzers |
| Sitzungsdauer | Bis zum manuellen Beenden | Einzelner Befehl oder kurzzeitiges Zwischenspeichern |
| Konfigurationskomplexität | Einfach | Erfordert Konfiguration von sudoers |
| Sicherheit | Root-Passwort muss bekannt sein | Feinere Berechtigungssteuerung |
| Audit | Eingeschränkt | Ausführlichere Protokolle |
Obwohl der Befehl su einfach und direkt ist, ist sudo in der modernen Systemadministration normalerweise die empfohlene Wahl, da es bessere Sicherheits- und Auditfunktionen bietet.
Sicherheitsüberlegungen
- Vermeiden Sie die Weitergabe des root-Passworts
- Verwenden Sie
su -Sorgen Sie für einen vollständigen Umgebungswechsel - Beenden Sie su-Sitzungen umgehend
- Priorisieren Sie die Verwendung von sudo in Produktionsumgebungen
- Überwachen Sie die su-Nutzungsprotokolle (normalerweise in /var/log/auth.log)
Linux-Befehlssammlung