2012-10-14 1 views
0

지정 문을 PHP에서 동적으로 작성하고자합니다. 그러나 나는 보안에 관심이있다. PHP는 사용자/그룹 php:php에서 실행되며 nginx 구성 파일은 root:root에 의해 소유됩니다.PHP에서 동적으로 nginx 구성을 작성하십시오.

PHP가 nginx 구성 파일을 열고 쓸 수 있으려면 파일을 사용자 및 그룹 php:php이 소유해야합니다.

가장 좋은 방법은 무엇입니까? 나는 다른 언어 나 PHP로 2 차적 인 프로세스를 가질 수 있다고 생각한다. PHP는 실제로 설정 파일을 읽고 쓰고 PHP는 2 차 프로세스와 간단히 대화한다.

답변

0

정말 어떤 종류의 PHP 파일이 nginx를 생성하는지에 따라 다릅니다. 이 스크립트가 작은 독립 실행 형 스크립트라면 루트로 실행하는 데 문제가 없습니다. 당분간 나는이 nginx 파일을 생성하고 작성해야하는 PHP 웹 사이트라고 생각합니다.

파일을 실제로 작성하고 작성하는 부분이 여전히 독립적이며 단순한 경우, PHP에서 명령 줄 매개 변수를 가져 오는 독립 실행 형 실행 파일 (PHP 또는 다른 파일)로 만들 것입니다. 웹 사이트 및 다음 setuid이 실행 파일 (루트가 소유하고있는 동안). 그러나이 실행 파일은 안전해야합니다 (http://en.wikipedia.org/wiki/Setuid#Security).

대안은 php가 nginx.conf에 글을 쓰도록하는 것입니다 (직접 파일을 세계 쓰기 가능하게 만들고 그룹 쓰기 가능으로 만들고 PHP 사용자가있는 그룹에 부여하거나 별도의 프로세스를 사용하여 php로 작성된 파일에서 파일을 복사합니다). 이것은 nginx.conf 파일이 실행될 명령 (예 : 인증 또는 cgi)을 포함 할 수 있고 루트 (아마도 같은 구성 파일이므로 명령으로)로 실행될 수 있기 때문에 매우 무서운 것입니다. . 그래서 이런 식으로 당신은 기본적으로 루트로서 임의의 명령을 실행하는 PHP 사용자를위한 문을 열어 ....

작동하지 않을 수도있는 또 다른 한 가지 : 나는 아마도 그것을 조정할 것입니다. 또는 설정 파일에있는 두 개의 매개 변수. 다른 위치 (php 쓰기 가능)에서이 하나 또는 두 개의 매개 변수를 읽을 수 있는지 확인하십시오.