Установка www-data (lighttpd) в качестве sudoer не работает

Установка www-data (lighttpd) в качестве sudoer не работает

Я установил lighttpd с fast-cgi на raspberry pi. При запуске скрипта python, требующего привилегий root, я получаю следующую ошибку:

RuntimeError: Нет доступа к /dev/mem. Попробуйте запустить как root! Traceback (последний вызов был последним): Файл "/var/www/index.py", строка 134, в GPIO.setup(17, GPIO.OUT);#enable A RuntimeError: Нет доступа к /dev/mem. Попробуйте запустить как root!

Я добавил www-data как sudoer с помощью visudo и "sudo usermod -a -G sudo www-data", но это не сработало. Как мне дать lighttpd root привилегии? Безопасность НЕ важна, так как это личный проект.

решение1

lighttpd не использует sudo. Поэтому добавление www-data в группу sudoers не помогает.

Вам необходимо изменить веб-пользователя в вашем конфигурационном файле с www-data на root:

server.username = "root"

При необходимости вы можете покинуть группу www-data, но при желании можете изменить ее на root.

Что вы могли бы сделать вместо этого, так это использовать sudo как www-data из вашего скрипта Python. Убедитесь, что вы установили NOPASSWD.

В любом случае, запуск веб-сервера в качестве root(или с возможностью sпереключения на любой uсервер для любой команды) является очень плохой практикой, поскольку любая уязвимость в веб-сервере или любом веб-приложении, которое он обслуживает, означает, что вся система может быть полностью скомпрометирована.

Здесь, скорее всего, вы захотите, чтобы любая операция, которую необходимо выполнить, /dev/memвыполнялась специальной утилитой с правами setuid root (или запускаемой через sudo), или отдельной службой, вызываемой вашим веб-сервером.

Связанный контент