Tengo una tarea única en una secuencia de comandos python a la que me gustaría llamar desde Django (usuario de www), que va a necesitar privilegios de raíz.Ejecutar la secuencia de comandos de Python como raíz (seteuid vs c-wrapper)
Al principio pensé que podría usar el os.seteuid de Python() y establecer el bit de setuid en el script, pero luego me di cuenta de que tendría que establecer el bit de setuid en Python, que supongo que es grande sin no. Por lo que puedo decir, este también sería el caso si usara sudo, lo cual realmente me gustaría evitar.
En este punto, estoy considerando simplemente escribir un envoltorio de C utiliza seteuid y llama a mi secuencia de comandos python como raíz, pasándole los argumentos necesarios.
¿Es esto lo correcto o debería estar buscando algo más?
¿Por qué no simplemente lo ejecuta como un proceso externo usando 'subprocess' y' sudo', aunque todo sobre esto huele a podrido. – Anders
Porque eso requeriría otorgar permiso a www para ejecutar Python como root :( – kwl34
El problema principal aquí es que las operaciones de sudo setuid y comunes no se aplican a scripts de python individuales como lo harían con un binario, sino con el intérprete de Python. – kwl34