2012-02-20 3 views
2

스테이징 -> 프로덕션 게시 스크립트를위한 PHP 웹 인터페이스를 만들려고합니다. 웹 인터페이스는 보안되어 있으므로 (인트라넷, 암호 등) rsync를 수행하는 루트 사용자로서 아파치 역할을 맡아 행복합니다. 루트 사용자에게는 암호가없고 SSH 액세스에는 키 파일이 사용됩니다.PHP shell_exec - 암호없이 root로 RSYNC 사용

나는 시도 sudo는 - 보내고 쉘 스크립트에서 rysnc 명령을 ...

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

그리고 아파치이 (가)의 sudoers 파일에 다음을 추가하여 rsync를 실행할 수 있도록 ...

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 명령을 실행할 수 있도록 설정하려면 어떻게해야합니까?

감사합니다.

답변

2

PHP에서 SUDO를 사용하고 싶다면이 글에서 내가 쓴 것을 시도해 볼 수 있습니다. 그것은 나의 모든 문제를 해결하고 난 내가 내부적으로 DEV 서버가하지만 난이 일을하려면, 당신에게 비슷한 설정을 가지고 그 루트 만이 할 수 ...

How to use exec() in php in combination with ssh 'hostname' command?

행운

+0

답변을 주셔서 감사합니다. 결국 내가 취한 접근 방식이 아니었지만 유용했습니다. 충분한 담당자를 얻을 때 돌아와서 투표 할 수 있습니다. –

1

에서 결국이 문제에 대한 비 sudo 접근 방식이 필요했습니다. phpseclib을 사용하여 필요한 항목 (아파치 아님)을 수행 할 수있는 사용자로 상자에 연결합니다. 그리고 나서 rsync 작업에서 목표로 삼고 있던 dirs/파일이이 사용자에게 액세스 가능하도록 확인했습니다.

이제 간단하게 보겠습니다.