У меня есть каталог, содержащий некоторые скрипты, которые мне нужно вызвать из веб-запроса. Для запуска скриптов нужны повышенные разрешения.
Сейчас я думаю добавить следующие строки /etc/sudoers
:
Cmnd_Alias WEB_COMMANDS = /path/to/scripts
www-data ALL=(ALL) NOPASSWD: WEB_COMMANDS
Правильный ли это подход к этой проблеме? Или я создаю потенциальную уязвимость безопасности?
Использую CentOS 7, если это имеет значение.
решение1
Все что угодно является потенциальной уязвимостью безопасности. Две вещи:
Прежде всего, выконечноему нужен root? Зачем? Можно ли сделать это с помощью capabilities? (Вероятно, можно.)
При этом ваш пример почти точен. Добавьте звездочку после пути:
Cmnd_Alias WEB_COMMANDS = /path/to/scripts/*
И теперь это будет работать. Но будьте осторожны, если какой-либо из этих скриптов может быть изменен злоумышленником, злоумышленник получаетПОЛНЫЙ ROOT-ДОСТУП. Они могут просто exec('/bin/bash')
и иметь оболочку. Определенно идите по пути возможностей на скрипт, если это возможно, и ОБЯЗАТЕЛЬНО заблокируйте каталог скрипта в любом случае. Смотритеэтот ответ unix.seдля получения информации об управлении возможностями с помощью скриптов.