1

Можно ли заставить пользователя веб-сервера, в моем случае lighttpd , запускать определенный скрипт, который должен запускаться с разрешениями sudo ?

Я только хочу, чтобы пользователь lighttpd мог запускать этот сценарий с разрешениями sudo .

Сценарий, назовем его createFolder.sh , создает папку из шаблона на верхнем уровне общего ресурса. Пользователи не имеют разрешений на запись на верхнем уровне общего ресурса, но должны иметь разрешение на запись во вновь созданной структуре папок. Таким образом, скрипт устанавливает правильные разрешения для подпапок, и отсюда возникает необходимость использования sudo (chown , chmod и setfacl).

Причина, по которой я хотел бы использовать для этого веб-интерфейс, заключается в том, что пользователи могут вставлять данные для имени папки и параметров, которые будут определять точную структуру папки.

Я подумал, что будет так же просто, как добавить запись в /etc/sudoers чтобы позволить пользователю lighttpd запускать createFolder.sh без пароля. Похоже, я ошибся, так как получаю следующую ошибку:

sudo: невозможно mkdir /var /db /sudo /lighttpd: разрешение отклонено

Мы верим, что вы получили обычную лекцию от местного системного администратора. Обычно это сводится к этим трем вещам:

1) Уважать частную жизнь других.
2) Подумайте, прежде чем печатать.
3) С большой силой приходит большая ответственность.

sudo: tty отсутствует и не задана программа askpass

Если бы можно было настроить сценарий на постоянную работу от имени пользователя с необходимыми правами, он бы разобрался с ним, но я не смог найти, как это сделать или возможно ли это.

Как примечание, я изучил Linux самостоятельно, и даже если я чувствую уверенность в своих силах, я не специалист и всегда стремлюсь к улучшению.

Я использую коробку CentOS 7.

РЕДАКТИРОВАТЬ: я решил проблему с помощью inotify для запуска моего сценария createFolder.sh при изменении текстового файла. Смотрите правильный ответ и его комментарии. Спасибо, что указали мне правильное направление, ребята.

1 ответ1

0

У вас должен быть корневой скрипт "тянуть" из обычного, а не последний "толкать" к первому. В качестве иллюстративного примера:

  1. Создайте задание cron, которое проверяет список папок, которые будут созданы в текстовом файле.
  2. Пользовательский скрипт lighttpd должен добавить нужную папку в этот текстовый файл.

Вы можете сделать это более элегантно с системой очередей / обмена сообщениями, но это зависит от вас.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .