Die Ausführung von Befehlen innerhalb von python, die root-Zugang benötigt
Ich habe das Spiel mit Teilprozess in letzter Zeit. Wie ich mehr und mehr; ich finde mich brauchen root-Zugriff. Ich Frage mich, ob es eine einfache Möglichkeit zu geben das root-Passwort für einen Befehl muss es mit dem subprocess-Modul. Also, wenn ich aufgefordert werde, das Passwort mein Skript und geben Sie es und führen Sie den Befehl. Ich weiß, das ist eine schlechte Praxis, wo der code ausgeführt wird, in der Sandbox und getrennt vom rest des Systems; ich habe auch nicht wollen, werden als root ausgeführt.
Ich würde wirklich zu schätzen, kleines Beispiel, wenn möglich. Ich weiß, Sie können dies tun, mit erwarten, aber ich Suche etwas mehr python-centric. Ich weiß pexpect
exsists aber es ist ein bisschen übertrieben für diese einfache Aufgabe.
Dank.
- Verstehe ich nicht wirklich den Satz "Also, wenn ich aufgefordert werde, das Passwort mein Skript und geben Sie es und führen Sie den Befehl." Wollen Sie den Benutzer zur Eingabe des root-Passwort, oder willst du fest das root-Passwort im code? (Ich hoffe, es ist nicht die Letzte!)
- Ich würde gerne beides; ich kenne die letztere ist schlecht. Ich Frage mich nur, ob es möglich ist.
- Wir würden uns freuen, ein kleines Beispiel von dem, was Sie versucht haben, wenn möglich.
- Finden diese Frage es ist sehr ähnlich wie stackoverflow.com/questions/4748971/django-and-root-processes/...
- Für die zweite option, werden Sie am Ende mit dem gleichen problem wie das problem hier diskutiert: stackoverflow.com/questions/4144134/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich ist es am besten zu nutzen, sudo für die Benutzer ausführen von Python-Programm. Sie können angeben, bestimmte Befehle und Argumente, die ausgeführt werden kann von sudo ohne Eingabe eines Passworts. Hier ist ein Beispiel:
Gibt es viele Ansätze, aber ich bevorzuge die, weist der Befehl legt den Gruppen. Also lasst uns sagen, wir wollen, um eine Gruppe zu erstellen, um damit Menschen zu führen
tcpdump
alsroot
. So nennen wir diese Gruppetcpdumpers
.Zuerst erstellen Sie eine Gruppe namens
tcpdumpers
. Dann ändern/etc/sudoers
:Nun jeder Benutzer Hinzugefügt
tcpdumpers
Gruppe wird in der Lage sein zu laufen tcpdump wie diese:Da konnte man einfach diesen Befehl ausführen als
subprocess
.Dadurch entfällt die Notwendigkeit, hard-code, das root-Passwort in Ihr Programm-code, und es ermöglicht eine granulare Kontrolle darüber, wer laufen kann, was mit root-Rechte auf Ihrem system.
visudo
eher als jeder andere beliebige editor - sonst kann es führen, um Dinge wie unix.stackexchange.com/questions/138237/...