Wie kann ich das Root-Passwort an ein Skript übergeben?

3900
Troggy

Ich habe das root-Passwort in einem meiner Scripts und möchte ein anderes Script starten, für das die Root-Berechtigung dieses Scripts erforderlich ist. Wie kann ich das Root-Passwort verwenden, das ich habe, damit ich den Benutzer nicht nach dem Root-Passwort fragen muss, das das 2. Skript startet.

6
Wenn dies eine Programmierfrage ist, sollte dies nicht bei stackoverflow sein? rzlines vor 15 Jahren 0
@rzlines ,: Administrative Bash-Skripte sind nicht wirklich "programmieren", es könnte eine bessere Lösung für ServerFault oder UnixSE sein ... aber eigentlich sollte es gut sein, wo es ist. J. M. Becker vor 12 Jahren 0

2 Antworten auf die Frage

17
jtimberman

Das hat viele Auswirkungen auf die Sicherheit, aber lassen Sie uns den besten Weg finden, um damit umzugehen.

Verwenden Sie das root-Passwort nicht direkt. Verwenden Sie sudo, um die Skripts auszuführen. Sudo ist standardmäßig auf Ubuntu installiert und in fast allen gängigen Linux-Distributionen in den Paket-Repositorys verfügbar. Sobald sudo installiert ist, müssen Sie / etc / sudoers bearbeiten.

su - visudo # add something like the following: Cmnd_Alias SCRIPT=/path/to/script1 script_user ALL=NOPASSWD: SCRIPT 

Somit script_userkann das erste Skript als root durch sudo ausgeführt werden, das dann das andere Skript als root starten würde. Weitere Informationen zur Sudoers-Datei finden Sie in der sudoers(5)Manpage zu Ihrem System.

Aber müssen Ihre Skripte unbedingt als root laufen? Meistens ist dies überhaupt nicht erforderlich, wird aber aus Bequemlichkeitsgründen getan.

Meinen Sie nicht `script_user ALL = NOPASSWD: SCRIPT`? grawity vor 15 Jahren 1
@grawity danke, das ist was ich bekomme um 2 Uhr morgens oder was auch immer es war;) jtimberman vor 15 Jahren 0
Ich brauche etwas Ähnliches, kannst du mir eine Lösung schreiben, ich habe nicht verstanden, wie ich das richtig machen kann. [Meine Frage] (http://superuser.com/questions/435223/how-to-prompt-gui-and-use-root-password-on-ascript). GarouDan vor 12 Jahren 0
2
Scott W.

Another option would be to set suid on the file to root. Example: chmod u+s script.sh as root so when a normal user executes the script it runs with the file permissions of the owner aka root.

Just for your own knowledge if you don't want to set sudo to run without a password you can pass the password to sudo through stndin like echo PASSWORD|sudo -S ./script.sh

However this can be a security concern as it will show the password in history or anyone watching like "ps". You can also look into Expect and Empty.