Согласно некоторым источникам,
«Устройство, работающее под управлением Ubuntu 14.04 LTS, сообщит вам только о наличии нового Обновление Ubuntu после выхода первого выпуска. В Ксениале ш / вар / www / vhosts / testsite / htdocs / '); var_dump ($ результат);
Я могу ошибаться, но считаю, что sudoers также ограничивает параметры, которые могут быть переданы команде / скрипту, а не только саму команду.
Если вы попытаетесь запустить свой .sh без параметра он, скорее всего, будет работать, например
sudo /bin/bash /var/www/my_bash_script.sh
Итак, чтобы указать sudoers разрешить запуск этого сценария с любыми параметрами (с помощью apache), вам нужно будет настроить строку следующим образом:
apache ALL=(ALL) NOPASSWD:/var/www/my_bash_script.sh *
Подстановочный знак позволит apache выполнять запустите этот скрипт с любыми параметрами.
Вам также может понадобиться / bin / bash в этой строке, но я не уверен
apache ALL=(ALL) NOPASSWD: /bin/bash /var/www/my_bash_script.sh *
Если кто-нибудь может подтвердить или опровергнуть мое понимание этого, я был бы очень признателен
Вы можете использовать следующие настройки
Cmnd_Alias SVNUP = /root/webhooks/svn_update.sh
apache ALL=(ALL) NOPASSWD: SVNUP
Создать простой тестовый скрипт
# cat test.sh
#!/bin/bash
set -u
echo "Param1: $1"
Сделать простые тесты
$ id alex
uid=506(alex) gid=506(alex) groups=506(alex)
$ cat /root/webhooks/test.sh
cat: /root/webhooks/test.sh: Permission denied
$ sudo /root/webhooks/test.sh val1
Param1: val1
$ sudo /root/webhooks/test.sh
/root/webhooks/test.sh: line 5: $1: unbound variable
Но вы должны быть очень осторожны из-за расширений переменных, например,
$ sudo /root/webhooks/test.sh "$(rm -fr ~/*)"
P.S. В качестве альтернативы вы можете использовать mpm-itk с apache и запускать этот конкретный хостинг с конкретным пользователем.