it-swarm.com.de

'Sudo su -' vs 'Sudo -i' vs 'Sudo / bin / bash' - wann spielt es eine Rolle, welche verwendet wird, oder spielt es überhaupt eine Rolle?

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, die ich im Internet verwendet habe, sehe ich, dass Sudo su, Sudo su -, Sudo -i und Sudo /bin/bash zum Öffnen einer Stammsitzung verwendet werden Unklar über den Unterschied zwischen diesen und wann oder ob dieser Unterschied von Bedeutung ist.

Kann das jemand für mich klären?

251
Paul

Um dies zu erklären, müssen Sie wissen, was die Programme tun:

  • su - Der Befehl su wird verwendet, um zu einem anderen Benutzer zu wechseln (s witch ser), aber Sie können auch zum Root-Benutzer wechseln durch Aufrufen des Befehls ohne Parameter. su fordert Sie auf, das Kennwort des Benutzers zu ändern, nachdem Sie das Kennwort eingegeben haben, das Sie in die Benutzerumgebung geändert haben.
  • Sudo - Sudo soll einen einzelnen Befehl mit Root-Rechten ausführen. Im Gegensatz zu su 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 Textschnittstelle zur Interaktion mit dem Computer. Es ist wichtig, den Unterschied zwischen Login-, Non-Login-, Interactive- und Non-Interactive-Shells zu verstehen:

Arten von Muscheln:

  • Login-Shell: Eine Login-Shell meldet Sie als angegebenen Benutzer im System an. Hierzu sind ein Benutzername und ein Kennwort erforderlich. Wenn du schlägst ctrl+alt+F1 Um sich in ein virtuelles Terminal einzuloggen, erhalten Sie nach erfolgreicher Anmeldung eine Login-Shell.
  • nicht angemeldete Shell: Eine Shell, die ohne Anmeldung ausgeführt wird, ist ein aktuell angemeldeter Benutzer. Wenn Sie ein Grafikterminal in gnome öffnen, handelt es sich um eine Shell ohne Anmeldung.
  • interaktive Shell: Eine Shell (Login oder Nicht-Login), in der Sie interaktiv Befehle eingeben oder unterbrechen können. Zum Beispiel ein Gnome-Terminal.
  • nicht interaktive Shell: Eine (Unter-) Shell, die wahrscheinlich von einem automatisierten Prozess ausgeführt wird. Sie sehen weder Eingabe noch Ausgabe.

Die Fälle sind also:

  • Sudo su Ruft Sudo mit dem Befehl su auf. Bash wird als interaktive Shell ohne Anmeldung bezeichnet. Bash führt also nur _.bashrc_ aus. Sie können sehen, dass Sie sich nach dem Wechsel zu root immer noch im selben Verzeichnis befinden:

    _[email protected]:~$ Sudo su
    [email protected]:/home/user#
    _
  • Sudo su - Diesmal ist es eine Login-Shell, daher werden _/etc/profile_, _.profile_ und _.bashrc_ ausgeführt und Sie befinden sich im Stammverzeichnis von Roots Umgebung.

  • Sudo -i Es ist fast dasselbe wie _Sudo su -_ Die Option -i (anfängliche Anmeldung simulieren) führt die durch den Kennwortdatenbankeintrag des Zielbenutzers angegebene Shell als Anmeldeshell aus. Dies bedeutet, dass anmeldungsspezifische Ressourcendateien wie _.profile_, _.bashrc_ oder _.login_ von der Shell gelesen und ausgeführt werden.

  • Sudo /bin/bash Dies bedeutet, dass Sie Sudo mit dem Befehl _/bin/bash_ aufrufen. _/bin/bash_ wird als Nicht-Login-Shell gestartet, daher werden nicht alle Punktedateien ausgeführt, sondern die Bash selbst liest _.bashrc_ des aufrufenden Benutzers. 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 Variable _$Shell_ und führt den Inhalt aus. Wenn _$Shell_ _/bin/bash_ enthält, wird _Sudo /bin/bash_ aufgerufen (siehe oben).

Häkchen:

So überprüfen Sie, ob Sie sich in einer Login-Shell befinden oder nicht (funktioniert nur in bash, da shopt ein integrierter Befehl ist):

_shopt -q login_Shell && echo 'Login Shell' || echo 'No login Shell'
_
321
chaos