Warum wird in diesem Beispiel eins dem anderen vorgezogen?
sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit
Bitte geben Sie Links zur Ubuntu-Dokumentation an.
command-line
sudo
chili555
quelle
quelle
Antworten:
Der
sudo su
Befehl steht für "Benutzer wechseln" und ermöglicht es Ihnen, ein anderer Benutzer zu werden. Es ermöglicht einem zugelassenen Benutzer, einen Befehl als Superuser oder als anderer Benutzer auszuführen, wie in der sudoers-Datei angegeben.Mit der Option ‑i (Erstanmeldung simulieren) wird die durch den Kennwortdatenbankeintrag des Zielbenutzers angegebene Shell als Anmeldeshell ausgeführt. Dies bedeutet, dass anmeldungsspezifische Ressourcendateien wie .profile oder .login von der Shell gelesen werden. Wenn ein Befehl angegeben ist, wird er über die Option ‑c der Shell zur Ausführung an die Shell übergeben. Wird kein Befehl angegeben, wird eine interaktive Shell ausgeführt.
Quelle: ManPage
quelle
sudo su
Sie nach Ihrem Kennwort gefragt, nicht nach dem Root-Kennwort. Der root-Benutzer muss nicht einmal ein Passwort haben. Unabhängig davon, ob ein Administrator das Root-Passwort verwendet, bedeutet dies nicht, dass alle regulären Benutzer es kennen.sudo
Läuftsu
als root und kannsu
von jedem Benutzer ohne Kenntnis seines Passworts als root ausgeführt werden . Grundlegende Missverständnisse über die Funktionsweise des Systems verdienen eine Ablehnung der IMO.sudo -i
fragt auch nicht nach dem root-Passwort, ist also für die Frage nicht relevant.sudo su
Ändert nur den aktuellen Benutzer in root. Umgebungseinstellungen (wie PATH) bleiben unverändert.sudo -i
Erstellt eine neue Umgebung, als hätte sich root gerade angemeldet.Der Unterschied ist deutlicher, wenn Sie andere Benutzer verwenden. Nachdem
sudo su bob
Sie Bob, aber an der gleichen Stelle sein. Nachdemsudo -i -u bob
Sie bob sind, befinden Sie sich im Home-Verzeichnis von bob, mit der Standard-Shell von bob und mit bobs.profile
und anderen Anmeldeskripten, die ausgeführt wurden.Sehen Sie
man sudo
für weitere Informationen von dem, was der-i
Fall ist. Leiderman su
ist Licht auf Details.Es wurde eine Version von
man su
(von login-1: 4.1.4.2 + svn3283-3ubuntu5.1) gefunden, die Folgendes enthält:Ob und inwieweit
sudo su
sich die Umgebung ändert, hängt also von Ihrer Verteilung und Einrichtung ab. Istsudo -i
also theoretisch portabler.quelle
su
Ändert die Umgebungseinstellungen und kann verwendet werden, um eine Anmeldung mit-
oder zu simulieren-l
. Auch ohne-l
,$PATH
wird geändert. Testen Sie diese Behauptungen, bevor Sie sie aufstellen! (Meinten Sie, dasPWD
bleibt gleich?)sudo su -
undsudo -i
?$PATH
sich das ändert, wenn ichsu
ohnesudo
(unter Verwendung des root-Passworts) verwende. Lautinfo su
(worauf Sie in Ihrer Antwort möglicherweise besser verweisen können) wird insu
der Tat der Kennworteintrag für den Benutzer gelesen, zu dem Sie werden. Möglicherweise ist die$PATH
Änderung, die ich beobachte, systemabhängig (ich bin auf Debian 7).man su
(die länger ist als die, mit der Sie verlinkt sind) sagt, dass sie Teil von istshadow-utils 4.1.5.1
. Meineman
Seite sagt auch, dass gesetzt$PATH
ist, auch wenn--preserve-environment
verwendet wird. Ich denke also, es ist wirklich nur ein Unterschied zwischen verschiedenen Versionen vonsu
./etc/pam.d/sudo
und/etc/pam.d/su
kann eingerichtet sein, um ganz andere oder genau die gleichen Dinge zu tun.Das Hauptproblem ist eine der (nicht so) vernünftigen Umgebungseinstellungen.
Das Verwenden
sudo su
der neuen Shell bezieht ihre Umgebung von dem Benutzer, der den Befehl ausgibt - was problematisch sein kann.Mit
sudo -i
dir bekommst du eine saubere Wurzelschale.Siehe Spezielle Hinweise zu Sudo und Shells
Bleibt zu beachten, dass es selten nötig ist, eine Root-Shell zu erstellen.
quelle
sudo -i
ähneln denensudo su -
, bei denen der Benutzer, der den Befehl ausgibt, seine Umgebung nicht verwendet .sudo su
vs.sudo -i
.