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 suBefehl 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 suSie 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.
sudoLäuft suals root und kann suvon 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 -ifragt 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 bobSie Bob, aber an der gleichen Stelle sein. Nachdem sudo -i -u bobSie bob sind, befinden Sie sich im Home-Verzeichnis von bob, mit der Standard-Shell von bob und mit bobs .profileund anderen Anmeldeskripten, die ausgeführt wurden.
Sehen Sie man sudofür weitere Informationen von dem, was der -iFall ist. Leider man suist 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 susich die Umgebung ändert, hängt also von Ihrer Verteilung und Einrichtung ab. Ist sudo -ialso 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 PWDbleibt gleich?)
sudo su -und sudo -i?
$PATHsich das ändert, wenn ich suohne sudo(unter Verwendung des root-Passworts) verwende. Laut info su(worauf Sie in Ihrer Antwort möglicherweise besser verweisen können) wird in suder 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 manSeite sagt auch, dass gesetzt $PATHist, auch wenn --preserve-environmentverwendet wird. Ich denke also, es ist wirklich nur ein Unterschied zwischen verschiedenen Versionen von su.
/etc/pam.d/sudound /etc/pam.d/sukann 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 suder neuen Shell bezieht ihre Umgebung von dem Benutzer, der den Befehl ausgibt - was problematisch sein kann.
Mit sudo -idir 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 suvs. sudo -i.