2010-04-01 6 views
5

아파치가 소유하고있는 대신 소유권을 만드는 프로그램 소유자가 소유 한 폴더가있는 폴더를 만들기 위해 apache에서 실행중인 PHP를 설정하는 방법이 있습니까?PHP mkdir 및 apache 소유권

단어를 사용하면 업로드 할 새 폴더를 만듭니다.하지만이 폴더는 실행중인 사이트가 아니라 apache.apache가 소유합니다.이 또한 ostickets를 사용하여 발생합니다. 지금 우리는 서버에 SSH를 넣고 폴더를 chmod해야하지만, 그것을 수행하는 프로그램 외부에서 소유권을 무시하는 설정이있는 것처럼 보일 것입니다.

답변

2

Safe_mode이 서버에서 켜져 있습니다. 함수 mkdir()은 현재 스크립트 소유자와 다른 소유자 ("apache", "none", ..)가있는 폴더를 만듭니다. 스크립트는 다른 소유자 (현재 스크립트 소유자와 다른)와 함께 해당 폴더에 파일을 업로드 (이동, 복사) 할 수 없습니다.

safe_mode을 사용 중지하면 작동합니다.

자세한 내용은 http://php.net/manual/en/features.safe-mode.php을 참조하십시오.

P. safe_mode을 사용하면 PHP에서 chmod() 함수를 사용할 수 없습니다.

+0

This Sanhe - 감사합니다 –

+0

** 경고이 기능은 PHP 5.3.0부터 사용이 금지되었으며 PHP 5.4.0부터 제거되었습니다. ** – Jim

1

직접, 아니요. 루트가 아니라면 다른 사용자에게 파일 소유권을 "넘겨 줄 수"없습니다. "AssignUserID"apache 지시문을 사용하여 특정 가상 호스트를 특정 사용자/그룹으로 강제 실행하도록 조사 할 수 있습니다. 그 아파치/PHP 적절한 소유권 PHP chown() 기능을

+0

만약 누군가가 이것이 (mpm_perchild_module을 사용하여) 갈 방법이 될 수 있다고 생각한다면 - 나는 생각했다 : 링크에서 : **이 모듈은 작동하지 않는다. 이 모듈의 개발이 완료되지 않았으며 현재 활성화되지 않았습니다. perchild를 사용하지 마십시오. 프로그래머가 문제를 해결할 수있는 경우가 아니면.** – Jim

0

확인 모든 파일을 만들 것으로

+1

수퍼 유저가 실행하지 않으면이 기능이 실패합니다. – webbiedave

2

또 다른 방법은 새로운 그룹에 아파치 사용자와 "고객의 사용자"를 넣어하는 것입니다. 추가로 디렉토리는 스티키 비트 SGID을 사용하여 각각의 새 파일이이 새 그룹에 그룹 지정을 갖도록해야합니다. 웹 서버와 "고객의 사용자가"아무 문제없이 파일로 작업 할 수 있습니다이 방법

[17:57] [email protected] /tmp/test $ ls -al /tmp/test 
total 9 
drwxrwsr-x 2 root users 48 Apr 1 17:55 . 
drwxrwxrwt 36 root root 9264 Apr 1 17:53 .. 

당신이 디렉토리는 스틱 비트 SGID을 가지고 볼 수 있고 소유자가 "사용자"그룹으로하는 I (progman) 오전. 그룹이 자동으로이 그룹에 설정된 파일을 다른 사용자가 추가하면 No입니다.

[17:55] proglap ~ # touch /tmp/test/x 

이것은 루트에서 실행됩니다. 당신이 추가 된 파일이 루트에서있다시피

[17:57] [email protected] /tmp/test $ ls -la /tmp/test 
total 9 
drwxrwsr-x 2 root users 72 Apr 1 17:59 . 
drwxrwxrwt 36 root root 9264 Apr 1 17:53 .. 
-rw-r--r-- 1 root users 0 Apr 1 17:59 x 

하지만 그룹은 users로 설정하고이 방법 나는 마음에 당신 아직도 계속 그것을

[18:00] [email protected] /tmp/test $ rm x 
rm: remove write-protected regular empty file `x'? y 
[18:01] [email protected] /tmp/test $ ls -la /tmp/test 
total 9 
drwxrwsr-x 2 root users 48 Apr 1 18:01 . 
drwxrwxrwt 36 root root 9264 Apr 1 17:53 .. 

을 제거 할 수 있습니다 : 이제 우리는 얻을 chmod을 변경해야 할 경우 파일로 편집하십시오. rw-r--r--은 단지 그룹 읽기 액세스입니다. 그러나 chmod을 변경하거나 umask으로 작업하는 경우 루트 액세스를 처리하고 chown을 사용하는 것보다 낫습니다.