Я использую сервер Ubuntu с помощью Amazon AWS и пытаюсь разрешить www-data запускать определенный файл, который будет отправлять код в мой репозиторий git.
Файл находится в / var /, и я назвал его push.sh. Я сделал файл в sudoers.d и добавил следующую строку, используя visudo:
www-data ALL=NOPASSWD: /var/push.sh
Каждый раз, когда я запускаю
sudo -u www-data sudo -l
, я получаю следующий ответ: «Пользовательские www-данные могут запускаться следующие команды (serverip): (root) NOPASSWD: /var/push.sh ". Однако, когда я пытаюсь запустить этот код
sudo -u www-data sudo sh /var/push.sh
, меня просят ввести пароль для www-данных.
Также, когда я делаю php-файл для запуска кода, используя shell_exec
sh /var/push.sh
работает нормально, но
sudo sh /var/push.sh
нет. Я бы сделал это таким образом, но проблема в том, что мне нужно использовать sudo для правильного нажатия git.
1113 Я, наверное, упускаю что-то простое, но я застрял на этом часами. Спасибо за любую помощь, спасибо.
P.S. дайте мне знать, если мне нужно будет дать больше информации
Запись
www-data ALL=NOPASSWD: /var/push.sh
позволяет www-data
выполнить точно команду /var/push.sh
без пароля sudo
. Он не расширяет возможности sudo sh /var/push.sh
или даже sh /var/push.sh
Чтобы работать так, как вы хотите, вы должны сделать /var/push.sh
исполняемым самостоятельно, т.е.
убедитесь, что в верхней части находится соответствующий шебанг (предположительно #!/bin/sh
, поскольку вы пытаетесь запустить его явно с помощью sh
)
make он может быть выполнен как минимум www-data
, а затем напрямую вызываться как sudo -u www-data /var/push.sh