2013-02-04 5 views
1

kloxo와 같은 프로그램은 주 아파치 웹 서버와 별개의 lighttpd를 사용하여 루트로서 PHP 프로그램을 실행합니다. 하지만 내가 방화벽 관리를위한 PHP 스크립트를 가지고 그것을 루트로 실행할 때, 어떤 사람들은 루트 권한으로 웹 서버를 실행해서는 안된다고 말합니다.루트로 php 스크립트를 실행하십시오.

알고 싶습니다. 어떻게 문제없이 kloxo를 사용합니까? 그리고 php 스크립트로 iptables를 관리하는 가장 좋은 해결책은 무엇입니까 (루트 권한으로 php exec()에서 명령을 실행하는 방법)? 또한 파일을 편집 할 수있는 fopen과 같은 일부 PHP 함수입니다. 루트가 아닌 사용자가 루트로 adduser 명령 같은 것을 실행할 수 있도록하려면, 당신은의 sudoers 파일을 편집 할 수있는 권한이있는 경우

+0

"root"로 실행하지 않는 것이 이상적입니다. 그것이하지 않아도되는 일을한다면, 모든 것에 접근 할 수 있고, 잠겨있는 것보다 훨씬 많은 손해를 초래할 수 있습니다. –

+2

웹 서버가 루트로 실행되지 않습니다. 포트 80을 바인드 할 수 있도록 루트로 시작한 다음 가능한 한 빨리 루트 privliges를 삭제하고 다른 사용자로 실행합니다. –

+0

http://stackoverflow.com/questions/1598231/how-to-run-php-exec-as-root –

답변

1

(예를 들어, visudo를 사용), 사용자 액세스 권한을 부여 할 수 특정 명령에 대해서는 sudo을 사용하십시오.

www-user ALL=NOPASSWD: /usr/sbin/adduser 

암호를 입력하지 않고도 는/usr/sbin에/adduser 명령에 대한 사용자 WWW 사용자 루트 액세스를 허용 할 것이다 : 당신의 sudoers 파일에서는이 같은 항목이있을 것이다. 그런 다음 당신의 스크립트 내에서 사용하여이 원하는 메소드를 호출 할 수 있습니다 :

$output = `/usr/bin/sudo /usr/sbin/adduser <other_arguments>`; 

정말 누군가가 당신의 웹 서버 사용자 계정을 타협하는 경우, 그들은 당신의 시스템에 새로운 사용자를 만들 수 있습니다, 때문에이 추천, 그렇지 않은 경우 것 당신은 절대적으로 이 필요합니다. 그렇게하는 것입니다.

+0

하지만'fopen' 함수를 사용하여 루트 권한이 필요한 파일을 편집하는 방법은 어떨까요? 또한 다른 사용자가 해당 문서 루트 또는 웹 서버 사용자 계정에 액세스 할 수 없음을 의미하는 관리 소프트웨어 용 서버에서 seprate lighttpd를 실행합니다. –

+0

스크립트/인터프리터를 루트 권한으로 실행하지 않고도 PHP 기능에 루트 액세스 권한을 부여 할 수 없습니다. 그거 하지마. – Crontab

+0

그래서, kloxo 또는 plesk에 대해 어떻게 생각하십니까? 그들이 어떻게하는거야? –

관련 문제