Мне нужно выполнить скрипт через php (php5.xx), сервер работает под управлением apache2 (Ubuntu 10.04). Сценарий должен быть выполнен от имени другого пользователя.

Я добавил следующие строки в файл /etc/sudoers :

Cmnd_Alias SECURE_SVN_UPDATE = /path_to_script/just_svn_update.sh
#www-data ALL=(ALL,!root,!#0) NOPASSWD: SECURE_SVN_UPDATE
www-data ALL=(ALL) NOPASSWD: SECURE_SVN_UPDATE

(Я пробовал обе строки)

И в PHP я звоню

exec("sudo -u theuser SECURE_SVN_UPDATE")

Я получаю ошибку

sudo: no tty present and no askpass program specified

Я пробовал настройку

Defaults visiblepw

в файле sudoers , но после этого при запуске команды из PHP выдается ошибка:

sudo: 3 incorrect password attempts .

Может кто-нибудь, пожалуйста, скажите мне, как исправить это ИЛИ метод достижения этого без ущерба для безопасности. (Я хочу, чтобы apache мог выполнять только этот скрипт от имени другого пользователя, больше ничего).

1 ответ1

0

Вместо того, чтобы пытаться выполнить файл sudo, почему бы не запустить Apache для определенного виртуального хоста как пользователя, которому вы хотите предоставить привилегию для обновления исходного кода, который вы пытаетесь развернуть?

Эта ссылка относится к способу настройки пользователя http://httpd.apache.org/docs/current/mod/mpm_common.html#user

Во-вторых, если я правильно понимаю, что вы пытаетесь сделать, это: У вас есть веб-сервер удаленно. Вы хотите войти в систему и получить от него обновленный код из SVN. Обычно методы развертывания требуют более практического подхода, такого как rsync, FTP или SFTP/SCP push.

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