Ich habe den folgenden Code gelesen:
$ sudo bash
# cd /home/
# ./gitpull.sh
Warum brauche ich die erste Zeile, was macht sie genau? Was wäre, wenn ich einfach $ sudo
statt $ sudo bash
?
Antwort1
Es startet eine Bash-Shell als root
Benutzer der Ebene. Sie benötigen es, da normale Benutzer normalerweise nicht auf/home/
Die Gefahr bei Ihrem Vorgehen besteht darin, dass Sie sich in einer Root-Shell befinden. Sie können Ihren Computer ziemlich leicht durcheinanderbringen.
Antwort2
Sie wären viel besser dran, wenn Sie Folgendes tun würden:
$ sudo sh -c 'cd /home; ./gitpull.sh'
Weil die als Root aufgerufenen Befehle protokolliert werden. Der direkte Aufruf einer Shell über sudo vermeidet alle Sicherheitsvorteile von sudo und sollte vermieden werden.
Antwort3
sudo <shell>
, wenn es funktioniert, deutet dies auf eine fehlerhafte Installation von sudo und eine potenzielle Sicherheitslücke hin.
sudo
sollte nicht so konfiguriert werden, dass beliebige Befehle wie Shell zulässig sind. Der Zweck besteht darin, sudo
authentifizierten Nicht-Root-Benutzern zu ermöglichen, bestimmte Befehle als Root auszuführen, ohne das Root-Passwort zu kennen.
Dies sudo bash
ist jedem Benutzer gestattet, der allein aufgrund der Kenntnis seines Passworts zum Root-Benutzer wird.
Wenn ein Angreifer das Passwort eines der Konten erhält, die dazu in der Lage sind sudo bash
, verfügt er damit über Root-Zugriff.
Die korrekte Vorgehensweise zum Erhalten sudo bash
einer Root-Shell ist su
, gefolgt von der Eingabe des Root-Passworts (nicht Ihres eigenen).
Antwort4
sudo
ermöglicht Benutzern, Programme mit den Sicherheitsberechtigungen eines anderen Benutzers (normalerweise des Superusers oder Root) auszuführen.
bash
startet eine neue Bash-Shell. Startet
also sudo bash
eine neue Bash-Shell mit der Sicherheitsberechtigung des Root-Benutzers.