서버로 SSH 할 때 작동 할 수도 있지만. 웹 서버 사용자는 귀하가 로그인 한 사용자와 다를 가능성이 큽니다. 웹 서버가 Linux 컴퓨터에서 실행하는 인기있는 사용자 ID/그룹은 http, www-data, nobody 등입니다.
이 시점부터 두 가지 옵션이 있습니다.
당신은 웹 서버 사용자가 실행해야 할 수 있습니다 당신이 PHP에서 실행해야하는 스크립트 (있는 경우 그것의 모든 어린이) 확인 할 수 있습니다.
웹 서버 사용자에게 해당 스크립트의 사용 권한 만 부여하도록 권한을 부여하는/etc/sudoers 파일을 수정할 수 있습니다. (참고 : 이것은 잠재적으로 보안 구멍을 열어 조심해야합니다).
는 웹 서버가이를 실행으로 실행 어떤 사용자 찾으려면 :
ps aux
해당 프로세스가 실행되는 사용자 출력 목록의 출력에서 모양과 첫 번째 열을 가져 가라. 여기 내 상자 중 하나에 내 웹 서버 (의 nginx)의 발췌 한 것입니다 :
www-data 26852 0.0 0.0 29768 3840 ? S Jun04 0:50 nginx: worker process
당신은 nginx를 여기에 사용자 www가 데이터로 실행 볼 수 있습니다. 또한 grep 명령을 실행하여 프로세스를 더 빨리 찾을 수 있습니다. Grep은 당신이 보내는 것과 일치하는 라인 만 보여줄 것입니다. 여기에 예제가 있습니다 : ps aux | grep nginx
이제 웹 서버가 어떤 사용자인지 알았으므로, 해당 사용자에게 스크립트에 대한 액세스 권한을 부여하겠습니다. 스크립트가 foo
이고 /usr/local/bin
에 있다고 가정 해 보겠습니다. 다음과 같은 명령을 할 것입니다 :
chown www-data /usr/local/bin/foo
파일에 대한 소유권을 변경 한 후 당신의 PHP 페이지에서 다시 명령을 다시 실행하고 작동하는지 확인하려고합니다.
나는 웹 서버 사용자에게 해당 파일에 대한 sudo 권한을 부여 할 수 있다고 말했습니다.그런 다음 shell_exec 명령이이로 전환 할 수
www-data ALL= NOPASSWD: /usr/local/bin/foo
: 당신이 당신의 /etc/sudoers
파일의 맨 아래에 다음 줄을 추가 할 필요가 있음을 수행
shell_exec('sudo /usr/local/bin/foo');
명심하시기 바랍니다 이렇게하면 웹 서버 사용자가 다양한 상황에서 매우 위험한 root
이라는 스크립트를 실행할 수 있습니다. 그러나 카메라를 작동하려면 높은 권한이 필요할 수 있습니다. 호출하려는 카메라 설정에서 사용 권한 요구 사항이 무엇인지 잘 모르겠습니다.
행운을 빈다. 희망이 도움이!
모든 출력을/dev/null로 리디렉션하므로 아무 것도 반환되지 않습니다. –
ok ... 이제/dev/null 부분을 제거했습니다 ... 오류가 발생했습니다 .... bt 여전히 카메라가 서버 (아치)에서 시작하지 못했습니다 ... –
웹 서버 사용자가 해당 파일을 실행할 권한이 있습니까? –