Apache가 DSO로 실행되는 PHP를 사용하여 PHP 파일에 쓸 수 있도록 하시겠습니까?

Apache가 DSO로 실행되는 PHP를 사용하여 PHP 파일에 쓸 수 있도록 하시겠습니까?

PHP가 DSO로 실행되고 있습니다. 따라서 구성 파일에 쓰는 내 설치 프로그램 스크립트는 쓰기 작업을 수행할 수 없습니다.

아파치(사용자: none)에게 파일에 쓸 수 있는 권한을 부여하려면 어떻게 해야 합니까?

답변1

보안이 유지되는 개발 서버에서만 이 작업을 수행하겠습니다. 많은 PHP 애플리케이션은 구성 디렉터리에 안전하게 복사할 수 있도록 화면에 파일을 생성합니다.

이를 수행하는 빠르고 안전하지 않은 방법은 chmod 777 .파일이 있어야 하는 디렉터리에서 실행하는 것입니다. 이 실행을 수행하기 전에 ls -ld .권한을 다시 설정할 권한을 얻으세요. 어떤 경우에는 필요한 디렉터리가 존재하지 않으므로 먼저 디렉터리를 만들어야 합니다. 구성 파일이 작성된 직후 디렉터리를 원래 권한으로 재설정합니다. 올바른 명령은 아마도 디렉터리에서 실행되거나 실행될 것 chmod 755 .입니다 . chmod 750 .ls 명령으로 확인합니다.

Apache가 더 이상 파일에 쓸 수 없도록 구성 파일에 대한 권한을 변경합니다( chmod o-w configfile). 애플리케이션에는 종종 예제 구성 파일이 함께 제공됩니다. 이들 중 하나를 구성 디렉터리에 배치하고 편집하는 것이 더 나은 접근 방식일 수 있습니다. 이를 위해서는 구성 옵션을 배우고 이해해야 합니다. 온라인 구성 스크립트를 사용하여 편집하는 데 도움을 받을 수 있습니다.

답변2

와 같은 임시 디렉터리에 구성 파일을 쓸 수 있습니다 /tmp/config/. 그런 다음 쉘 스크립트를 실행하여 구성 파일을 /tmp/config/원하는 위치로 복사할 수 있습니다.

필요한 권한을 부여하려면 nobodysudoers 파일에 사용자를 추가하면 됩니다. 항목은 다음과 같아야 합니다.

nobody   ALL=NOPASSWD: /path/to/your_script.sh

쉘 스크립트(실행 권한을 추가하는 것을 잊지 마세요).

cp -r /tmp/config/* /desired/path/to/config

PHP에서는 다음과 같은 작은 코드 조각이 필요합니다.

<?php
$output = shell_exec('sudo /path/to/your_script.sh');
echo "$output";
?>

답변3

공유 환경에서는 보안 문제로 인해 모든 것이 약간 복잡해집니다. 파일 소유권을 'nobody'로 변경하면 해당 파일에 대한 Apache 쓰기 액세스 권한이 부여되지만, PHP 모듈에 각 가상 호스트를 각각의 디렉터리로 제한하는 설정이 없으면 다른 사람에게도 해당 파일에 대한 액세스 권한이 부여됩니다. 귀하의 환경에 어떻게 설정되어 있는지 확인하세요.

Apache는 일반적으로 사용자 'nobody' 및 그룹 'nobody'로 실행되므로 그룹 권한도 사용할 수 있습니다. 파일 그룹을 'nobody'로 변경하고 권한을 664로 설정합니다.

파일의 소유자나 그룹을 변경할 수 없는 경우 일반적으로 FTP를 사용하여 권한을 변경할 수 있습니다. Apache가 해당 파일을 소유한 사용자/그룹 중 하나가 아니라고 가정하면 매우 안전하지 않은 777로 설정해야 하지만 모든 것은 현재 환경의 종류에 따라 다릅니다. 일시적으로 설정할 수도 있습니다. , 앱을 설치하고 다시 644 또는 444(읽기 전용)로 변경하세요.

답변4

이는 cPanel을 사용하여 PHP를 DSO로 실행하는 일반적인 문제이지만 다른 설정에도 적용됩니다.

이 메서드를 실행할 때 PHP 프로세스는 httpd를 실행하는 사용자에 의해 처리됩니다. 대부분의 경우 이 사용자는 '아무도 아닌' 사용자입니다. 이는 PHP가 파일 시스템의 파일과 상호 작용할 때 'nobody' 사용자가 해당 파일에 액세스할 수 있어야 함을 의미합니다. 일반 cPanel 기반 사용자는 올바른 권한 변경 없이는 'nobody' 사용자가 소유한 RW(읽기/쓰기) 파일에 액세스할 수 없으므로 권한 문제가 발생합니다. 대부분의 PHP 웹 앱/스크립트는 파일 및 디렉터리에 작성해야 하며 cPanel 사용자가 소유한 경우 파일/디렉터리에 대한 권한을 777로 변경하지 않으면 문제가 발생하고 경우에 따라 웹 사이트가 중단될 수 있습니다. .

따라서 이 경우 권한을 777로 설정하여 수동으로만 관리할 수 있습니다.

이 PHP 방법을 실행할 때 PHP 앱/스크립트가 작동해야 하는 파일 및 디렉터리를 읽고 쓸 수 있도록 사용자별로 권한을 수동으로 관리해야 합니다.

또는 Mod_SuPHP로 이동할 수 있고 성능 문제가 없다면(DSO가 훨씬 빠르기 때문에) cPanel을 실행하는 사용자로 PHP를 실행할 수 있습니다.

DSO를 통해 PHP를 실행할 때 발생할 수 있는 권한 문제를 간과한다면 SuPHP와 비교할 때 몇 가지 이점이 있습니다. 첫 번째는 속도입니다. Mod_PHP는 Mod_SuPHP보다 빠릅니다. 이는 주로 Mod_SuPHP에서 처리되는 모든 요청이 파일을 소유한 사용자로 실행되도록 래핑되기 때문입니다. 이는 트래픽이 낮은 사이트에서는 눈에 띄지 않을 수 있지만 트래픽이 많은 사이트에서는 꽤 빠르게 증가할 수 있습니다. 두 번째는 eAcclerator, APC 및 Xcache와 같은 PHP optcode 캐싱 추가 기능을 갖춘 전체 기능입니다. PHP optcode 캐시의 이점을 최대한 활용하려면 컴파일된 PHP 바이트 코드를 캐시하고 '아무도' 사용자가 이 요구를 충족하지 않으므로 DSO를 통해 PHP를 실행할 때 사용되는 공유 사용자가 필요합니다. WHM로 이동하여 Main >> Service Configuration >> Apache Configuration을 보면 서버가 DSO를 통해 PHP를 실행하도록 설정되어 있는지 알 수 있습니다. >> PHP 및 SuExec 구성

여기에서 자세한 내용을 확인할 수 있습니다.

https://helpdesk.wiredtree.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1663

관련 정보