PHP shell_exec - использование RSYNC как root без пароля - PullRequest
2 голосов
/ 20 февраля 2012

Я пытаюсь создать веб-интерфейс PHP для сценария промежуточной публикации.Веб-интерфейс защищен (интранет, пароль и т. Д.), Поэтому я рад, что Apache выступил в роли пользователя root для выполнения rsync.Пароль для пользователя root отсутствует, для доступа по SSH используется ключевой файл.

Я попытался выполнить команду rysnc в сценарии оболочки ...

sudo rsync --verbose --recursive --times --perms --links --delete /tmp/dir1/* /tmp/dir2/

И разрешилapache для запуска rsync, добавив в файл sudoers следующее ...

apache ALL=(ALL) NOPASSWD:/usr/bin/rsync

Я использую PHP shell_exec для вызова сценария ...

$result = shell_exec('bash /tmp/syncscript.sh 2>&1');

Я получаю следующую ошибку...

sorry, you must have a tty to run sudo

Как настроить, чтобы я мог запустить команду rsync, как если бы я был пользователем root?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 20 февраля 2012

Возможно, вы захотите попробовать то, что я написал в этом посте, если вы хотите использовать SUDO из PHP. Это решило все мои проблемы, и у меня есть настройки, аналогичные вашим, у меня есть сервер DEV внутри, но я хочу, чтобы он делал то, что может делать только root ...

Как использовать exec () в php в сочетании с командой ssh ​​'hostname'?

Удачи

1 голос
/ 22 февраля 2012

В конце концов пошли не-sudo подход к этой проблеме.Использовал phpseclib , чтобы получить соединение с ящиком как пользователь, который может делать то, что мне нужно (не apache).И затем удостоверился, что каталоги / файлы, которые были нацелены в операции rsync, были доступны этому пользователю.

Кажется простым, теперь я оглядываюсь назад.

...