So wechseln Sie zum Root-Benutzer, bleiben aber im selben Verzeichnis
9
Ich bin kürzlich zu Ubuntu gewechselt und habe eines beobachtet, als ich den folgenden Befehl verwende, um zum Root-Benutzer zu wechseln
sudo su - root
Es bringt mich direkt zu root's home ( /root), so dass ich meinen Platz im Dateisystem (dem Verzeichnis, in dem ich diesen Befehl ausgeführt habe) verliere. Gibt es eine Möglichkeit, zu root zu wechseln, ohne das aktuelle Verzeichnis zu verlieren?
Zunächst einmal nicht verwenden sudo su. Es ist nicht falsch oder gefährlich oder so, es ist einfach unelegant und sinnlos . Sie führen zwei separate Programme aus, um einen Job zu erledigen, der einfach von einem erledigt werden kann. Wenn Sie eine Shell als Root starten möchten, sudokönnen Sie dies für Sie tun.
Wenn Sie eine Login-Shell starten möchten (das ist, was sudo su -), verwenden Sie sudo -i. Da jedoch eine Anmeldeshell gestartet wird, gelangen Sie standardmäßig in das Ausgangsverzeichnis von root.
Sie können eine reguläre Shell ohne Anmeldung starten sudo -s. Dadurch wird eine Root-Shell für Sie gestartet und Sie bleiben in dem Verzeichnis, aus dem Sie sie ausgeführt haben:
Das Problem kann sein, dass sudo -sdas Profil des Zielbenutzers nicht ausgeführt wird, da es sich nicht um eine Anmeldeshell handelt. Die eigentliche Frage ist also vielleicht, ob es eine Möglichkeit gibt, eine Login-Shell zu erhalten sudo, ohne jedoch das Verzeichnis zu wechseln. Wahrscheinlich nicht.
Barmar
@Barmar nein, sudo -itut es aber . Ich habe verwendet, -sda das OP keine Login-Shell wollte (wollte nicht umziehen $HOME). Wenn Sie eine Login-Shell möchten, verwenden Sie sudo -i. Ich habe einen Vergleich der Umgebungen geschrieben sudo -i, su -, sudo -sund suin meiner Frage hier , wenn Sie einen Blick haben wollen.
Terdon
Gerade hatte ich eine sehr schlechte Erfahrung mit diesem Befehl, sudo -s. Auch wenn es das Verzeichnis nicht ändert, hat es mir keinen vollständigen Root-Zugriff gewährt. Einige meiner Dateien befanden sich in einem Verzeichnis, aber ich konnte sie auf diese Weise nicht als normalen Benutzer und als Root-Benutzer (sudo -s) sehen. Dann benutzte ich den alten Weg (sudo su - root) und ging in das Verzeichnis und meine Dateien waren jetzt für mich sichtbar. Warum haben mir sudo -s eingeschränkten Zugang gewährt?
Hammad Hassan
@HammadHassan Es gibt keine Möglichkeit, was Sie beschreiben, hätte passieren können. Es muss noch etwas los sein. Was meinst du mit "nicht sehen" der Dateien? Meinen Sie vielleicht " Dateien können nicht gelesen werden"? Verwenden Sie möglicherweise Verschlüsselung?
Terdon
"nicht sehen" bedeutet einfachen Befehl "ls". Meine Dateien wurden mir nicht angezeigt. Überhaupt keine Verschlüsselung. Meine Dateien sind einfach. Und das ist wirklich passiert.
Das ist nicht falsch, ich meine, es funktioniert, aber die Verwendung sudo sumacht nicht viel Sinn. Dafür sudo -sist es da. Ich habe nie verstanden, warum so viele Ubuntu-Tutorials vorschlagen sudo su.
Terdon
@terdon Ich habe es auch nie verstanden, aber es scheint unter allen Linux-Benutzern weit verbreitet zu sein. Vielleicht macht die Alliteration es unvergesslicher.
Barmar
@Barmar persönlich, ich habe es nur in der Ubuntu-Welt gesehen. Da die meisten Linux-Systeme standardmäßig ein normales Root-Konto haben, würden Sie dies tun, wenn Sie eine Shell benötigen su(allein, nein sudo). Da Ubuntu das Root-Konto jedoch standardmäßig deaktiviert, sudo suist dies ganz natürlich. es ist anscheinend auch in einigen Ecken der UNIX-Welt der Fall, aber unter Linux habe ich es nur in Ubuntu gesehen.
Terdon
@terdon Ich habe es seit Jahrzehnten gesehen, ich bin mir nicht mal sicher, welche Distributionen wir verwendet haben. Wir verwenden Debian in meiner aktuellen Firma, und meine Mitarbeiter verwenden es.
sudo -s
das Profil des Zielbenutzers nicht ausgeführt wird, da es sich nicht um eine Anmeldeshell handelt. Die eigentliche Frage ist also vielleicht, ob es eine Möglichkeit gibt, eine Login-Shell zu erhaltensudo
, ohne jedoch das Verzeichnis zu wechseln. Wahrscheinlich nicht.sudo -i
tut es aber . Ich habe verwendet,-s
da das OP keine Login-Shell wollte (wollte nicht umziehen$HOME
). Wenn Sie eine Login-Shell möchten, verwenden Siesudo -i
. Ich habe einen Vergleich der Umgebungen geschriebensudo -i
,su -
,sudo -s
undsu
in meiner Frage hier , wenn Sie einen Blick haben wollen.Das ist sehr einfach. Tippe einfach
anstatt
Dadurch bleiben Sie im selben Ordner wie root.
quelle
sudo su
macht nicht viel Sinn. Dafürsudo -s
ist es da. Ich habe nie verstanden, warum so viele Ubuntu-Tutorials vorschlagensudo su
.su
(allein, neinsudo
). Da Ubuntu das Root-Konto jedoch standardmäßig deaktiviert,sudo su
ist dies ganz natürlich. es ist anscheinend auch in einigen Ecken der UNIX-Welt der Fall, aber unter Linux habe ich es nur in Ubuntu gesehen.