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.
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.
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
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äuft su
als root und kann su
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. Nachdem sudo -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. Leider man 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:
$ PATH wird gemäß den Optionen /etc/login.defs zurückgesetzt ENV_PATH oder ENV_SUPATH (siehe unten);
$ IFS wird auf "<Leerzeichen> <Tab> <Zeilenumbruch>" zurückgesetzt, wenn dies festgelegt wurde.
Beachten Sie, dass das Standardverhalten für die Umgebung wie folgt lautet:
Die Umgebungsvariablen $ HOME, $ SHELL, $ USER, $ LOGNAME, $ PATH und $ IFS werden zurückgesetzt.
Wenn --login nicht verwendet wird, wird die Umgebung mit Ausnahme der obigen Variablen kopiert.
Wenn --login verwendet wird, werden die Umgebungsvariablen $ TERM, $ COLORTERM, $ DISPLAY und $ XAUTHORITY kopiert, sofern sie festgelegt wurden.
Andere Umgebungen werden möglicherweise von PAM-Modulen festgelegt.
Ob und inwieweit sudo su
sich die Umgebung ändert, hängt also von Ihrer Verteilung und Einrichtung ab. Ist sudo -i
also theoretisch portabler.
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, das PWD
bleibt gleich?)
sudo su -
und sudo -i
?
$PATH
sich das ändert, wenn ich su
ohne sudo
(unter Verwendung des root-Passworts) verwende. Laut info su
(worauf Sie in Ihrer Antwort möglicherweise besser verweisen können) wird in su
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 ist shadow-utils 4.1.5.1
. Meine man
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 von su
.
/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.
sudo -i
ähneln denen sudo su -
, bei denen der Benutzer, der den Befehl ausgibt, seine Umgebung nicht verwendet .
sudo su
vs. sudo -i
.