Ho un compito rapido in uno script python che mi piacerebbe chiamare da Django (utente www), che avrà bisogno di privilegi di root.Esegui script Python come root (seteuid vs c-wrapper)
All'inizio pensavo che avrei potuto utilizzare il file os.seteuid() di Python e impostare il bit setuid sullo script, ma poi mi sono reso conto che avrei dovuto impostare il bit setuid su Python stesso, che presumo sia grande no no. Da quello che posso dire, questo sarebbe anche il caso se si utilizza sudo, che vorrei davvero evitare.
A questo punto, sto considerando di scrivere solo un wrapper C che usi seteuid e chiama il mio script python come root, passando gli argomenti necessari ad esso.
È questa la cosa giusta da fare o dovrei guardare qualcos'altro?
Perché non lo si esegue semplicemente come un processo esterno utilizzando "sottoprocesso" e "sudo", anche se tutto ciò che riguarda questo odore è marcio. – Anders
Perché ciò richiederebbe il permesso www di eseguire Python come root :( – kwl34
Il problema principale qui è che le operazioni setuid e common sudo non si applicano ai singoli script Python come farebbero con un binario, ma piuttosto con l'interprete stesso di Python – kwl34