Найти - Пользователи
Полная версия: subprocess.run запуск скрипта под sudo
Начало » Python для новичков » subprocess.run запуск скрипта под sudo
1
witek
Здравствуйте. Написал сайт для внутренних нужд который генерирует несколько фалов, т.е. при изменении БД в корне сайта создаю несколько фалов и при помощи subprocess хочу разложить их в папки принадлежащие юзерам root и proxy. Сайт работает от www-data. В скрипте, пусть будет my, написал команды копирования в папки . От рута или под sudo скрипт отрабатывает.. Прописал в sudoers разрешение на запуск скрипта
www-data ALLroot) NOPASSWD: /my
на сайте пишу
 subprocess.run(['sudo','bash','-c','/my'])
и проверяю. В /var/log/syslog Вылетает ошибка No such file or directory: ‘sudo’.
Зашел с другой стороны.
Создал пользователя в системе(Ubuntu), добавил его в группу www-data, прописал в sudoers
%www-data ALLroot) NOPASSWD: /my и под пользователем запустил sudo /my
Скрипт отработал не требуя ввода пароля. Это ожидаемое поведение. Но когда я запускаю питон (кстати версия 3.8) импортирую subprocess и ввожу
 subprocess.run(['sudo','bash','-c','/my'])
, система требует ввода пароля. Кто подскажет куда копать?

ps : стики бит добавить не вариант на шелл скриптах он не работает. (Да , имя скрипта и путь. написаны для примера, когда я создал нового юзера для проверки, в рабочем проекте все красиво с говорящими именами и правильными путями.)

Может кто предложит другое решение. Но основной затыкв том, что файлы нужно поместить в /etc/dhcp и корень сквида создавать подпапки очень не хочется, а давать права на эти папки пользователю www-data не безопасно

Заранее спасибо!

py.user.next
Если у тебя внутри скрипта вызов sudo идёт, значит ты что-то неправильно делаешь. У тебя должен быть чистый скрипт. А права ему должны даваться снаружи тем, кто его вызывает.
witek
В скрипте sudo естественно нет. Там примерно такое:
cp /1 /2

py.user.next
witek
В скрипте sudo естественно нет.
Так и в subprocess.run() тоже не должно быть sudo.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB