2011-12-13 2 views
2

웹 인터페이스 (아파치)가있는 임베디드 리눅스 시스템에서 일하고 있습니다. 기본적으로 웹 인터페이스에 종료 및 다시 시작 기능을 추가해야합니다. 그러나 웹 페이지 (예 : 아파치)를 통해 호출 할 때php-giving apache 권한 종료

exec ("지금 종료") 등의 권한 문제가 발생합니다.

아파치에서이 명령을 어떻게 허용 할 수 있습니까?

아파치 풀 루트 권한을 부여하지 않아도되지만 내 시스템에서는 시스템 보안이 큰 문제가 아니므로 이것이 유일한 방법 일 경우 어떻게해야합니까? , ALL

+2

sudoers에 apache 사용자를 추가하십시오 : http://stackoverflow.com/questions/3173201/sudo-in-php-exec – malletjo

+1

아파치는'/ dev/initctl'에 액세스 할 수 있습니다. 그렇다면, 그 그런 다음 sudo를 사용하거나 루트 액세스 권한을 부여하지 않고도 시스템을 종료하고 시스템을 다시 시작할 수 있습니다. 그러나 이것은 순전히 추측 일뿐입니다. – qid

답변

2

아파치를 sudoer로 만드는 것은 위험한 행동이며 나는 그것을 피합니다. 나는 QID가 이것에 가깝다고 생각한다. 가장 쉬운 해결책은 root에서 모든 X 초를 실행하고 아파치가 쓸 수있는 디렉토리의 파일을 검사하는 cron 작업을 설정하는 것이다. 종료 할 때 apache에 파일을 추가하게하고 cron 스크립트는 (a) 파일을 제거하고 (b) 기계를 다시 시작하는 트리거를 가져야합니다.

파일을 올바르게 제거하고 테스트 할 때 상당히 긴 cron 지연을 주거나 서버가 계속 재부팅되고 엉망이 되니 조심하십시오.

0

당신이 무엇을하는지 아는 suer 수 추악한 해킹 솔루션을 제공 할 수 있습니다. 루트로 실행되는 작은 데몬을 작성하고 시스템을 종료하는 명령을 받아들이고 합리적인 보안 채널을 통해 PHP 스크립트를 데몬과 통신하게하십시오. 신호, 어쩌면 데몬이 지켜보고있는 파일에 쓰십시오. 어쨌든 단지 네트워크 소켓입니다.)

+0

sudo를 사용하는 것은 좋은 생각이지만,이 경우 전체 루트 권한을 부여하는 대신 특정 명령에만 아파치 액세스를 제한 할 수 있습니다. – qid

+0

모두는 나에게 위험한 것처럼 보인다. –

1

이 작업을 수행 할 수있는 좋은 방법을 알고하지 : "sudo는 ...

아파치 ALL = (ALL) NOPASSWD (

간부를 :

관련 문제