не удается запустить скрипт на ubuntu с веб сайта при помощи subprocess.call

Окружение: ubuntu16, python 3.8, venv, nginx, flask, gunicorn.Запуск от www-data В коде на сайте

res =  subprocess.call('sudo /var/www/site/script.sh',shell=True, executable='/bin/bash')

ошибка syslog : 16:23:46 proxy gunicorn[25450]: /bin/bash: sudo: command not found

Проверял следующим образом. на хосте Ubuntu активировал виртуальную среду,переключался на пользователя www-data, стартовал питон, import subprocess,в консоли питона ввожу:

subprocess.call('sudo /var/www/site/script.sh',shell=True, executable='/bin/bash')

и все великолепно отрабатывает. Возможно лишняя информация, но в sudoers прописано:

www-data ALL=(root) NOPASSWD: /var/www/site/script.sh

Т.е. мне нужно передать sudo и скрипт отработает без просьбы ввести пароль от пользователя www-data

Пробовал передавать аргументы так:

['sudo','/var/www/site/script.sh'] (как показано в документации), а так же /bin/bash передать в аргументы, но не работает.

Добился когда скрипт работает с сайта только в случае когда даем права скрипту rwxrwxrwx. хозяин www-data:www-data, тогда все работает, но мне требуется в скрипте переназначать владельцев файлов, а это требует повышения привилегий, т.е. та же команда sudo Передавать пароль скрипту тоже не хотелось бы.


Ответы (0 шт):