Ich habe den folgenden Code gelesen:
$ sudo bash
# cd /home/
# ./gitpull.sh
Warum brauche ich die erste Zeile, was genau macht sie? Was wäre, wenn ich es einfach tun $ sudo
würde $ sudo bash
?
Es startet eine Bash-Shell als root
Level-Benutzer. Sie benötigen es, weil normale Benutzer normalerweise nicht darauf zugreifen können/home/
Die Gefahr besteht darin, dass Sie sich in einer Root-Shell befinden - Sie können Ihre Maschine ziemlich leicht durcheinander bringen.
cd
in einer Subshell (z. B. übersudo
) ist keine produktive Operation. Das Verzeichnis für die aufrufende Shell wird nicht geändert.Du würdest viel besser dran sein:
Weil die als root aufgerufenen Befehle protokolliert werden. Das Aufrufen einer Shell direkt über sudo vermeidet alle Sicherheitsvorteile von sudo und sollte vermieden werden.
quelle
Das berüchtigte Sudo ist eine Art Akronym für Superuser Do.
Es macht einen normalen Benutzer für kurze Zeit zum Superuser.
In Ihrem Befehl sudo bash sagen Sie effektiv Superuser do -> eine Bourne-Shell (bash), die einen angemeldeten Root-Benutzer in der Shell öffnet.
Wenn Sie nur sudo ausführen, würde das Betriebssystem nicht wissen, was zu tun ist. Auf sudo folgt also im Allgemeinen ein Unix-Befehl.
quelle
sudo
Ermöglicht Benutzern das Ausführen von Programmen mit den Sicherheitsberechtigungen eines anderen Benutzers (normalerweise Superuser oder Root).bash
startet eine neue Bash-Shell.So
sudo bash
beginnt einen neu Bash - Shell mit der Sicherheitsberechtigung von Root - Benutzer.quelle
sudo <shell>
Verrät, wenn es funktioniert, eine schlechte Installation von sudo und eine potenzielle Sicherheitslücke.sudo
sollte nicht so konfiguriert werden, dass beliebige Befehle wie Shell möglich sind; Der Zweck vonsudo
ist, authentifizierten Benutzern ohne Rootberechtigung zu ermöglichen, bestimmte Befehle als Root auszuführen, ohne das Rootkennwort zu kennen.Wenn dies
sudo bash
einem Benutzer gestattet ist, ist dieser Benutzer lediglich aufgrund der Kenntnis seines eigenen Passworts root.Wenn ein Angreifer das Passwort eines der Konten erhält, die dazu in der Lage sind
sudo bash
, hat der Angreifer root.Der richtige Weg, um das Äquivalent von
sudo bash
(eine Root-Shell zu erhalten), istsu
, gefolgt von der Angabe des Root-Passworts, nicht Ihres eigenen.quelle
sudo bash
(odersudo su
was auch immer), den Sie nicht anstellen könntensudo evil-command
?sudo
Ermöglicht nur das Ausführen von Dingen, die in dersudoers
Datei angegeben sind. Es bietet eine sehr fein abgestimmte Steuerung, da Sie nur den Programmen Zugriff gewähren können, auf die sie Zugriff haben sollen. Wenn Sie dies zulassensudo bash
, erteilen Sie eine Shell auf Stammebene. Sie können alles tun, was root an einer Shell tun kann. Es umgeht die Vorteile vonsudo
undsudoers
und macht den Benutzer im Grunde root.sudo benign-command
.bash
ist eine Instanz der Klasseevil-command
. Sie können Ihresudoers
Datei sorgfältig erstellen, sodass nur Befehle zulässig sind, die keinen Schaden anrichten können (oder deren potenzieller Schaden irgendwie enthalten ist) und die keine Ausweitung von Berechtigungen über den Bereich willkürlicher Aktionen zulassen.Ich wette,
sudo bash
anstattsudo
angegeben zu werden./gitpull.sh
von bash aufrufen und nicht von einer anderen Shell wietcsh
,pdksh
oder einer einfachen altensh
. Ich bin mir ziemlich sicher, dass die Hashbang-Zeile des Skripts es dem Skript ermöglichen sollte, anzugeben, unter welcher Shell es ausgeführt werden soll, aber möglicherweise wurde sie aus irgendeinem Grund weggelassen, oder der Anweisungsschreiber möchte nicht, dass Sie sich darauf verlassen.bash
ohne andere Argumente beginnen, verhält es sich nicht wie eine "Login-Shell", und vielleicht hängt das Skript davon ab.Auch @nisdis ist richtig. "Normal"
sudo
druckt nur Nutzungsinformationen aus. Aber warum nichtsu
...quelle