2010-07-30 3 views
3

나는 PHP 스크립트가 :ZipArchive php 클래스는 파일을 루트로 추출합니다. 왜?

$extract_dir = "./"; 
$extract_file = "extractME.zip"; 

$zip = new ZipArchive; 
$res = $zip->open($extract_file); 
if ($res === TRUE) { 
    $zip->extractTo($extract_dir); 
    $zip->close(); 
    echo "ok"; 
} else { 
    echo "failed"; 
} 

을하지만 FTP에 http://www.mywebsite.com/extract.php

를 통해 모든 파일을이 스크립트를 실행할 때 OWNER '루트'와 쇼가 아니라 사용자의 예입니다. 'neo'가 있어야합니다. 따라서 사용자는이 파일을 편집/이름 바꾸기/삭제할 수 없습니다.

'사용자 이름'소유권으로 파일을 압축 해제 할 수 있습니까?

답변

0

웹 서버를 실행하는 사용자로 추출합니다 (참고 : 루트로 실행해서는 안됨). chown을 사용해보십시오.

+0

chown이 작동하지 않습니다. 루트 사용자 만 루트를 사용할 수 있기 때문입니다. 그리고 나는 어떤 사용자 (심지어 마스터 사용자)에게도 VIA 루트에 로그인 할 수있는 권한을 부여하고 싶지 않습니다. 그리고 chown은 사용자 수준에서 작동하지 않습니다. 아마도 서버 구성 문제 일 것입니다. 나는 종종 "chown -R usrNAME : usrNAME/home/usrNAME/public_html/*"을 실행하지만 이것은 잘못된 해결책이다. – ozzWANTED

+0

@ozzwanted 그건 내가 의미했던 것이 아니다. 내가 그들을 추출한 후 chown 파일을 제안하고있다 - 그 이유는 내가 PHP의 chown 명령을 연결입니다. 그리고 웹 서버가 루트로 실행되기 때문에 * 가능합니다. – Maerlyn

3

ozzwanted, 어떤 이유에서든 웹 서버 (아파치)가 루트 권한으로 실행 중이므로 만들어지는 모든 파일이 루트 권한으로 만들어집니다. 이것은 결코 사실이 아니어야합니다. 아파치는 대개 리눅스 배포판에 따라 'www-data'또는 'httpd'또는 'nobody'또는 'god'로 실행됩니다.

sysadmin 관점에서이 문제를 조사하고 착취를 당하기 전에 누군가가 당신을 위해 그것을 정렬 해줄 것을 제안합니다. (라이브 서버라고 가정)

www.php.net/chown 함수를 사용하거나 명령 줄에서 'chown'명령을 실행하거나 PHP에서 system() 또는 exec()와 같이 실행할 수 있습니다.) 기능.

행운을 빈다.

관련 문제