Редактирование sudoers.d, чтобы позволить www-данным запускать определенный файл

Я использую сервер 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. дайте мне знать, если мне нужно будет дать больше информации

0
задан 7 July 2018 в 16:09

1 ответ

Запись

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

1
ответ дан 7 July 2018 в 16:09

Другие вопросы по тегам:

Похожие вопросы: