2017-08-14 8 views
1

Ich versuche, nur einen Teil meines Skripts task.py in sudo Modus ausführen. Idealerweise würde ich task.py mit folgendem Aufbau aus:führen Teil des Python-Skript als sudo

if __name__ == '__main__': 
    print('running normal parts')   
    .   .    . 
    . [running normal commands] . 
    .   .    . 

    print('running sudo parts') 
    .   .    . 
    . [running sudo commands] . 
    .   .    . 

wo ich eingeben muß ein Passwort für die sudo Teile des Skripts nicht so, dass ich nur einen einzigen Anruf $ python task.py von der Kommandozeile machen.

Gibt es ein nettes zu sagen Python, den zweiten Block als sudo auszuführen? Ich sah das subprocess Modul hatte eine Möglichkeit, einen Befehl mit sudo privelages aufzurufen, aber ich würde lieber nicht die "sudo Teile" in ein separates Skript, um den "running sudo commands" -Teil zu tun.

+0

Mögliche Duples: [this] (https://stackoverflow.com/questions/34189165/python-running-select-sections-of-code-as-sudo) und [this] (https://stackoverflow.com/questions/34281235/How-Do-Sie-temporäre-Run-your-Code-als-root). – ForceBru

+1

'sudo' führt Befehle nicht als root aus, ohne das Passwort einzugeben, außer wenn Sie eine Regel dafür in'/etc/sudoers' definieren, um einen Befehl als Benutzer oder root ohne Passwort auszuführen. Sie müssen damit besonders vorsichtig sein. – direprobs

Antwort

1

Ich würde sehr empfiehlt die sudo Teile in ein separates Skript setzt ebenso wie die Dokumentation empfohlen. Dieser Ansatz verbessert die Sicherheit Ihres Skripts erheblich, da nur der Teil ausgeführt wird, der für die Ausführung mit erhöhten Rechten erforderlich ist (aka "geringste Berechtigung" - ein grundlegendes Sicherheitsprinzip).

Ich habe diese Dokumentation nicht im Detail gelesen, aber ich vermute, dass es auch einschränkende Schreibberechtigungen für den sudo Teil des Skripts sowie für jede Datei oder Ressource, aus der es gelesen werden kann, erwähnt.

Verwandte Themen