выполнить sudo внутри питон скрипта
pexpert + os.setuid?
GetPrivileges: вызывается для текущего процесса sudo и в случае успешной авторизации присваивает скрипту UID=0Ты умеешь менять UID уже запущенного процесса?
При использовании судо из скриптов надо заботать флаги -n и -S, если хочешь авторизоваться.
Ты умеешь менять UID уже запущенного процесса?если это не возможно, можно передать континуацию и запустить в отдельном процессе.
если это не возможно, можно передать континуацию и запустить в отдельном процессе.задолбаешся, форк не меняет уидов, а без него - геморройно воссоздавать состояние процесса
есть мизерный шанс что multiprocessing можно допилить, заменив fork на fork + exec sudo + восстановление состояния, но это очень маловероятно
вообще, хотеть делать "произвольное" действие из под рута - как-то неправильно
ну я задолбался и теперь вызываю сам скрипт чере судо. Просто с точки зрения пользователя удобнее когда скрипт сам спрашивает разрешение, если ему нужно. А если не нужно - то не спрашивает. А так помнить надо какие скрипты через судо вызывать надо, а каким полномочия не нужны
Просто с точки зрения пользователя удобнее когда скрипт сам спрашивает разрешение, если ему нужно. А если не нужно - то не спрашивает.А с другой точки зрения, наверное лучше разделять функционал который требует полномочий рута и который не требует. Причём не только внутри кода, но и снаружи для пользователя.
А так помнить надо какие скрипты через судо вызывать надо, а каким полномочия не нужныНу положи их в разные каталоги.
Ну положи их в разные каталоги.или сдеалть префикс sudo_
тоже вариант
вот мой текущий костыль:
class Root:
def __enter__(self):
self.oldid = os.getuid
os.setuid(0)
return 0
def __exit__(self, type, value, traceback):
os.setuid(self.oldid)
with Root:
pass
Оставить комментарий
yroslavasako
Хочу пару процедур на питоне.GetPrivileges: вызывается для текущего процесса sudo и в случае успешной авторизации присваивает скрипту UID=0
ThrowPrivileges: после её вызова, UID возвращается в норму.
Если интересна область применения - шелл скриптинг