2009-12-14 9 views
1

suPHP에 대해 생각했지만 그것이 내가 필요한 것은 아닙니다. PHP 스크립트를 다른 사용자로 실행하는 것은 내 목적에 부합하지 않습니다. 난 단지 하나의 리눅스 명령 행을 다른 사용자로 돌릴 필요가있다.PHP에서 특정 사용자로 외부 명령을 실행하는 방법

가능합니까?

+0

입니까? // http://httpd.apache.org/docs/2.0/suexec.html – miku

+0

suPHP 및 suEXEC을 알고 있지만 phpsuexec이 무엇인지 알지 못합니다. – GetFree

답변

0

당신은 shell_exec 기능과 sudo를

편집을 시도 할 수 :보고 sudo는 암호를 입력하라는 메시지로, 당신은 수도 싶어 proc_open를 사용하는 거라고, 당신이 파이프를 사용할 수있다. 사용자 지정 암호 파이프를 만드는 방법은 this comment을 참조하십시오.

+0

하지만 sudo는 암호를 묻습니다. 그렇습니까? – GetFree

+0

그런 다음 proc_open을 시도하십시오. 파이프를 사용하는 방법은 링크 된 맨 페이지의 첫 번째 예제를 참조하십시오. –

+1

암호를 묻지 않도록 sudo를 구성 할 수 있습니다. –

1

다른 접근법을 시도해야한다고 생각합니다. "setuid".

http://en.wikipedia.org/wiki/Setuid

은 기본적으로 당신은 소유자가 아닌 프로그램으로 실행 파일을 부탁드립니다.

+0

링크에서 다음과 같이 말합니다 : "보안 결함의 가능성이 높아짐에 따라 실행 가능 쉘 스크립트에 적용될 때 많은 운영 체제가 setuid 속성을 무시합니다". 쉘 스크립트를 실행해야합니다. Linux에 이러한 제한이 있습니까? – GetFree

+0

기본적으로는 아니지만 스크립트는 해당 인터프리터도 setuid 인 경우 setuid를 실행할 수 있습니다. – ephemient

+0

셸 명령을 실행하는 C 프로그램을 컴파일하고 해당 C 프로그램의 setuid 플래그를 설정하면 어떻게됩니까? 그 제한을 우회하겠습니까? – GetFree

0

해당 사용자는 CRON을 사용하여 스크립트를 실행할 수 있습니다. 이것이 웹 응용 프로그램 인 경우 제한된 권한을 가진 Apache/Nobody 사용자로 제한됩니다. 이걸 특정 시간에 실행해야한다면 CRON을 사용합니다.

또 다른 접근법은 suPHP에 의한 phpsuexec을 의미하는 Sticky Bits

관련 문제