2012-11-05 2 views
3

내가 1002의 사용자 ID입니다대한 Chown는 : 작동하지 허용

그래서 난이 다음과 같은 명령을 통해이 작업을 수행하는 PHP 스크립트를 통해 시스템의 다른 사용자에게 파일 소유자 권한을 설정해야합니다 어디 문제가 체계.

file_put_contents($filename, $content); 
system("chown 1002 " . $filename . ""); 

나는이 당신은 루트 사용자의 경우 파일의 소유자를 변경할 수 있습니다

chown: changing ownership of `/var/spool/asterisk/06h12m7.call': 
Operation not permitted 
+0

답변 중 하나를 해결 방법으로 표시하여이 질문을 폐쇄로 표시 할 수 있도록하십시오. 그들 중 누구도 솔루션을 제공하지 않으면 추가 정보를 제공하십시오. 감사. – mattc

+0

스크립트가 cron을 통해 실행되면 루트로 실행되므로 파일 소유권을 변경할 수 있습니다. ('apache' 사용자와 같은 비 슈퍼 유저는 그렇지 않습니다.) 이것이 도움이되기를 희망합니다! –

답변

4

당신은 내가 당신이 Apache 서버를 사용하는 것이 있으리라 믿고있어 Linux로이 질문에 태그입니다. 생산 서버에서 모든 PHP 프로세스를 소유하고있는 Apache 프로세스는 일반적으로 apache user 또는 root user이 아닌 다른 사용자에 의해 실행됩니다.

당신이하려고하는 것은 자신이 소유하지 않은 파일의 소유자를 변경하기 위해 chown 기능 (아파치 사용자로 실행 됨)을 사용하는 것입니다. (예, 소유주는 자신이 소유 한 파일로만 변경할 수 있습니다.)

당신은 PHP 매뉴얼을 인용, 참조 chown 기능 시도 소유자를 변경합니다 : 사용자 사용자에게 파일 이름의 소유자를 변경할

시도합니다. 수퍼 유저 만 파일 소유자를 변경할 수 있습니다. 일반적으로 당신을 프로덕션 서버에서

사용자 디렉토리 홈 디렉토리에있는 파일에 바인딩 의미 모드, /home/yourusername/public_html 같은 것을 같이하고 같은 실행의 /var 디렉토리 내 파일은 단순히 벗어 귀하의 도달 범위 (그들은 일반적으로 루트에 의해 소유)이며 그 이유는 chown 수 없습니다.

도움이 되었기를 바랍니다. 건배!

4

(잘 작동 테스트 서버) 서버에서만 생산에서 오류 (또는 실행을 얻을 수 있지만 루트 권한으로).

파일 filename의 소유자를 사용자 user로 변경하려고 시도합니다. 수퍼 유저 만 파일 소유자를 변경할 수 있습니다. 테스트 서버에

대부분의 경우 http://www.php.net/manual/en/function.chown.php는 이미 PHP 스크립트를 실행하는 아파치 프로세스가 파일을 소유하거나 루트 권한으로 실행되며,이 프로덕션 서버의 경우가 아니다. 루트 권한으로 프로덕션 환경에서 실행하는 것을 권장하지 않습니다.

상황에 따라 도움이 될 수있는 문제가있는 경우 chgrp 기능을 사용하여 파일의 "그룹"설정을 변경할 수 있습니다. 이는 파일에 대한 쓰기 특권을 가진 모든 g 용자가 g 용할 수 있습니다. 또한 위험 할 수는 있지만 chmod 기능을 사용하는 사람에게 파일을 쓰기 가능하게 만들 수 있습니다. 두 기능에 대한 링크는 다음과 같습니다 :

관련 문제