Wenn ich etwas mache, bei dem root Dutzende Male hintereinander eingegeben werden muss, ziehe ich es vor, meine Sitzung auf eine Root-Sitzung umzustellen. In den verschiedenen Tutorials und Anleitungen habe ich im Internet verwendet wird , sehe ich sudo su
, sudo su -
, sudo -i
und sudo /bin/bash
verwendet wird , um eine Root - Sitzung zu öffnen, aber ich bin mir nicht klar über den Unterschied zwischen diesen und wann oder ob diese Differenz Angelegenheiten.
Kann das jemand für mich klären?
command-line
bash
sudo
su
Paul
quelle
quelle
sudo -s
und zu fragensudo su
.Antworten:
Um dies zu erklären, müssen Sie wissen, was die Programme tun:
su
- Der Befehlsu
wird verwendet, um zu einem anderen Benutzer ( s witch u ser) zu wechseln. Sie können jedoch auch zum Root-Benutzer wechseln, indem Sie den Befehl ohne Parameter aufrufen.su
fordert Sie auf, das Kennwort des Benutzers einzugeben, nachdem Sie das Kennwort eingegeben haben, das Sie zur Benutzerumgebung geändert haben.sudo
-sudo
soll einen einzelnen Befehl mit Root-Rechten ausführen. Im Gegensatzsu
dazu werden Sie jedoch aufgefordert, das Kennwort des aktuellen Benutzers einzugeben. Dieser Benutzer muss sich in der sudoers-Datei befinden (oder in einer Gruppe, die sich in der sudoers-Datei befindet). Standardmäßig "merkt" sich Ubuntu 15 Minuten lang Ihr Passwort, damit Sie Ihr Passwort nicht jedes Mal neu eingeben müssen.bash
- Eine Textoberfläche zur Interaktion mit dem Computer. Es ist wichtig, den Unterschied zwischen Login-, Non-Login-, Interactive- und Non-Interactive-Shells zu verstehen:Arten von Muscheln:
Die Fälle sind also:
sudo su
Anrufesudo
mit dem Befehlsu
. Bash wird als interaktive Nicht-Login-Shell bezeichnet. Bash wird also nur ausgeführt.bashrc
. Sie können sehen, dass Sie sich nach dem Wechsel zu root immer noch im selben Verzeichnis befinden:sudo su -
Diesmal ist es eine Login - Shell, so/etc/profile
,.profile
und.bashrc
werden ausgeführt , und Sie werden sich in root Home - Verzeichnis mit root - Umgebung zu finden.sudo -i
Es ist fast das gleiche wiesudo su -
die -I (simulieren Erstanmeldung) Option führt die Shell durch den Passwort - Datenbank - Eintrag des Zielbenutzers als Login - Shell angegeben. Dies bedeutet , dass Login spezifische Ressourcendateien wie.profile
,.bashrc
oder.login
wird von der Shell gelesen und ausgeführt werden.sudo /bin/bash
Das heißt, Sie rufensudo
mit dem Befehl auf/bin/bash
./bin/bash
wird als Nicht-Login-Shell gestartet, so dass nicht alle Punktedateien ausgeführt werden, sondern die Bash selbst.bashrc
vom aufrufenden Benutzer liest . Ihre Umgebung bleibt gleich. Dein Zuhause wird nicht das Zuhause von root sein. Sie sind also root, aber in der Umgebung des anrufenden Benutzers.sudo -s
liest die$SHELL
Variable und führt den Inhalt aus. Wenn es$SHELL
enthält, wird/bin/bash
es aufgerufensudo /bin/bash
(siehe oben).Prüfen:
So überprüfen Sie, ob Sie sich in einer Anmeldeshell befinden oder nicht (funktioniert nur in bash, da
shopt
es sich um einen integrierten Befehl handelt):quelle
sudo
Ermöglicht es einem zugelassenen Benutzer, einen Befehl als Superuser oder als anderer Benutzer auszuführen . Wie auch immer, +1 für deine Mühe.root
Benutzersitzung (im Gegensatz zu "using"sudo
) ist, wenn ich etwas mache, das eine starke Nutzung vonroot
Berechtigungen erfordert , z . Ich habe verwendetsudo /bin/bash
, aber anscheinend hat diese Methode einen schlechten Ruf aus irgendeinem Grund, den ich nicht verstehe.sudo -i
wird vorgeschlagen. Lesen Sie hier: ubuntuforums.org/showthread.php?t=1817402 und hier: unix.stackexchange.com/questions/98531/…Um nach Unterschieden zu suchen, können Sie die resultierende Umgebung zwischen verschiedenen Aufrufen zerlegen.
Bei einigen kritischen Variablen konnten einige "kleine" Unterschiede festgestellt werden:
PATH
,LD_LIBRARY_PATH
,LD_PRELOAD
oder ein Unterschied in ~ /. Umgang mit Punktdateien (
~/.config
).Berücksichtigen Sie auch den Besitz von $ HOME-basierten Protokolldateien (
~/.xsession.errors
usw.) oder xauth-Cookies (~/.Xauthority
), die von Befehlen generiert werden.Probieren Sie diese Befehle aus:
quelle