У меня есть скрипт Python, который выполняет некоторую конфигурацию nagios
. Скрипт запускается от имени пользователя с полными правами sudo (пользователь может выполнять любую команду с помощью sudo без запроса пароля). Последний шаг в настройке таков:
open(NAGIOS_COMMAND_FILE, 'a').write(cmdline)
NAGIOS_COMMAND_FILE
доступен для записи только пользователю root, поэтому эта команда должна выполняться пользователем root. Я могу придумать два способа достижения этого (оба неудовлетворительные):
- Запустите весь скрипт как root. Я не люблю этого делать, так как любая ошибка в моем скрипте будет выполняться с полными рут правами.
- Поместите команду
open(NAGIOS_COMMAND_FILE, 'a').write(cmdline)
в отдельный скрипт и используйте библиотекуsubprocess
для вызова этого скрипта с помощью sudo. Мне не нравится создавать дополнительный скрипт просто для запуска одной команды.
Я предполагаю, что в моем текущем скрипте нет способа изменить работающего пользователя просто для одной команды, или я ошибаюсь?