Sie sollten nur überprüfen, ob Ihr Skript von "root" ausgeführt wird. Es ist schlecht, das Passwort zu wiederholen, es wird in der Geschichte gefunden ...
kbdjockey
4
Es ist viel besser, sudorichtig zu konfigurieren , dass für bestimmte Programme / Benutzer / Gruppen kein Kennwort abgefragt wird, um solche schmutzigen Hacks zu vermeiden.
Eile
Antworten:
183
Mit dem -S-Schalter liest sudo das Passwort von STDIN. Das heißt, Sie können tun
echo mypassword | sudo -S command
um das passwort an sudo weiterzugeben
Die Vorschläge anderer, bei denen das Kennwort nicht als Teil eines Befehls übergeben wird, z. B. die Überprüfung, ob der Benutzer root ist, sind aus Sicherheitsgründen wahrscheinlich viel bessere Ideen
Wie sei es in einem speziellen Ordner setzt sowohl sich als auch den Ordner Nur - Ausführen-Berechtigungen geben: sudo chmod -R 0100 myScriptFolder? Würde dies nicht die Sicherheitsprobleme lösen (vorausgesetzt, niemand außer Ihnen verwendet Ihren Computer als Root)?
Brōtsyorfuzthrāx
Oder können Hacker von außerhalb meines lokalen Netzwerks den Skripttext unter bestimmten Umständen so sehen, wie er ausgeführt wird?
Brōtsyorfuzthrāx
Das hat für mich auf meiner OSX-Box wie ein Champion funktioniert! Vielen Dank für das Teilen der Lösung!
Wulf
51
Sie können das sBit für Ihr Skript so festlegen , dass es nicht sudoals Root benötigt und ausgeführt wird (und Sie müssen Ihr Root-Passwort nicht in das Skript schreiben):
Dies funktioniert nicht, wenn ich ein Argument für meinen Befehl habe. zum Beispiel. echo -e "YOURPASSWORD\n" | sudo -S "run -x". Es heißt sudo: run -x: command not found. Irgendeine Idee, wie man das umgehen kann?
Biene
1
@Bhathiya verwendet einfach keine "Anführungszeichen", zum Beispiel: echo -e "YOURPASSWORD \ n" | sudo -S ls -l / root
matteomattei
Großartig, danke ...
Bee
3
Eine Möglichkeit besteht darin, das -A-Flag für sudo zu verwenden. Dies führt ein Programm aus, um nach dem Passwort zu fragen. Anstatt zu fragen, könnten Sie ein Skript haben, das nur das Passwort ausspuckt, damit das Programm fortgesetzt werden kann.
sudo
richtig zu konfigurieren , dass für bestimmte Programme / Benutzer / Gruppen kein Kennwort abgefragt wird, um solche schmutzigen Hacks zu vermeiden.Antworten:
Mit dem -S-Schalter liest sudo das Passwort von STDIN. Das heißt, Sie können tun
echo mypassword | sudo -S command
um das passwort an sudo weiterzugeben
Die Vorschläge anderer, bei denen das Kennwort nicht als Teil eines Befehls übergeben wird, z. B. die Überprüfung, ob der Benutzer root ist, sind aus Sicherheitsgründen wahrscheinlich viel bessere Ideen
quelle
sudo chmod -R 0100 myScriptFolder
? Würde dies nicht die Sicherheitsprobleme lösen (vorausgesetzt, niemand außer Ihnen verwendet Ihren Computer als Root)?Sie können das
s
Bit für Ihr Skript so festlegen , dass es nichtsudo
als Root benötigt und ausgeführt wird (und Sie müssen Ihr Root-Passwort nicht in das Skript schreiben):quelle
+s
ist das Setuid-Bit.+t
ist das klebrige Stück.echo -e "YOURPASSWORD\n" | sudo -S yourcommand
quelle
echo -e "YOURPASSWORD\n" | sudo -S "run -x"
. Es heißtsudo: run -x: command not found
. Irgendeine Idee, wie man das umgehen kann?Eine Möglichkeit besteht darin, das -A-Flag für sudo zu verwenden. Dies führt ein Programm aus, um nach dem Passwort zu fragen. Anstatt zu fragen, könnten Sie ein Skript haben, das nur das Passwort ausspuckt, damit das Programm fortgesetzt werden kann.
quelle
# Make sure only root can run our script if [ "$(id -u)" != "0" ]; then echo "This script must be run as root" 1>&2 exit 1 fi
quelle