2011-03-02 8 views
21

파일을 만들 수없는 것 같습니다. 777에 권한을 설정할 때 폴더에 다음 스크립트를 잘 작동하는 폴더를 만들려고합니다. 폴더가 755로 설정된 경우 실패합니다. 나는 리눅스에 대해 많이 알지 못하지만, 나는이 물건을 찾아내는 것으로 생각하고있다. 나는 물건을 시험해 보는 데 두 시간을 보냈다. 누구든지 아파치가 충분한 권한을 갖도록 만드는 방법을 알고 있는가?Apache 권한, PHP 파일 만들기, MKDir 실패



는 난 그냥이 문제를 해결하는 방법을 알고하지 않습니다, 그것은 권한과 아파치 문제를 알고있다. httpd.conf 파일을 편집했지만, 실제로 무엇을하는지 모르겠다. 어떤 도움이 필요합니까? (백업을 저장했습니다.)

+0

771을 사용해 보셨습니까? 이 폴더의 소유자 (사용자 및 그룹)는 누구입니까? – soju

+0

http://www.computerhope.com/unix/uchmod.htm – Gaurav

답변

84

을 사용 중지하십시오. 모든 사람이 파일을 쓸 수있게 만들면 권한 시스템이 설계 한 모든 보안이 손실된다는 것을 의미합니다. 이것을 제안한다면 잘못 구성된 웹 서버에서 발생할 수있는 결과에 대해 생각해보십시오. 파일을 덮어 쓰면 웹 사이트를 "해킹"하는 것이 매우 쉽게 될 수 있습니다. 그러지 마.

마이클 : 스크립트가 디렉토리를 만들 수없는 완벽한 이유가 있습니다. PHP를 실행하는 사용자 (Apache와 다를 수 있음)는 단순히 그렇게 할 수있는 권한이 없습니다. 권한을 변경하는 대신 기본 문제를 해결해야합니다. 즉, 파일의 소유자가 잘못되었거나 Apache 또는 PHP가 잘못된 사용자로 실행되고 있음을 의미합니다.

이제는 자체 서버를 설치 한 것 같습니다. 당신은 대부분의 linuxes에 설치된 'WHOAMI'프로그램을 호출하는 간단한 스크립트를 실행하여 PHP를 실행하는 사용자가 확인할 수 있습니다

<?php 
echo `whoami`; 

을 모두 옳다면, 당신은 사용자 이름 PHP가 실행되고 볼 수 있습니다. 운영 체제에 따라 'www-data', 'nobody', 'http'또는 기타 변형이있을 수 있습니다. 귀하의 웹 사이트가 유일한 웹 사이트 인 경우 아파치가 실행되는 사용자를 변경하여 쉽게 변경할 수 있습니다. 데비안을 가지고 있다면,/etc/apache2/envvars 파일을 (루트로) 편집하고 APACHE_RUN_USER의 값을 변경할 수 있습니다. 에서

$ grep -R "APACHE_RUN_USER=" . 

: 당신이 등/아파치/envvars 사용하여 변수 선언을 검색하려고 /를 찾을 수없는 경우 귀하의 OS에 따라이 변수는 다른 구성 파일에 설정되어있을 수 있습니다 모든 apache-config 파일의 디렉토리.

서버에서 유일한 사람이 아닌 경우 모든 웹 사이트의 사용자 계정을 만들고 Apache2-MPM-ITK와 같은 것을 사용하여 어떤 웹 사이트가 호출되는지에 따라 RUN_USER. 또한 PHP 프로세스가 실행중인 사용자가 파일 소유자 및 디렉토리인지 확인하십시오. 당신 chown 명령을 사용하여 해당 작업을 수행 할 수 : PHP는 자신의 사용자와 실행중인 경우

% chown theuser:theuser -R /var/www/website/ 

을하고있는 기록해야 할 파일과 디렉토리의 소유자, 권한 (700)는 충분하다. 일반적으로 대부분의 파일에 대해 750을 사용하는 경향이 있습니다. 일반적으로 그 그룹에 여러 사용자가 있고 읽기 권한이있을 수 있습니다.따라서 사용 권한을 변경할 수 있습니다 :

% chmod 0750 -R /var/www/website/ 

그래야합니다. 문제가 있으면 알려주세요. 은 본질적으로 다음과 같은 조언을 듣지 마십시오. 보안 문제가있는 경우 보안을 제거하십시오.

+2

죄송합니다. 나는이 질문으로 돌아 가지 않았습니다. 아무도 대답하지 못한 채로 내 피드에 나타나지 않았습니다. 그래서, 마침내 그것이 (오늘 현재로), 나는 i가 내가 적당한 대답 엄지 손가락을 포기하지 않았다는 것을 깨달았다! 답변 해주셔서 감사합니다. – Michael

+0

웹 서버의 파일을 쓰는 것이 좋지 않다고 생각합니다. 업로드 폴더 (있는 경우) 또는 캐시, 로그 등의 다른 특수 폴더 ... 악의적 인 PHP 스크립트를 통해 해킹당하는 것이 ssh 암호를 발견하는 것보다 쉽습니다. – arod

+1

를 사용하여 사용자를 확인할 수도 있습니다. – Netham

1

php 사용자 (www-data, php, apache 등)는 755 디렉토리에 대한 쓰기 권한이 있어야합니다. 나는 그것이 폴더의 작성자 그룹의 구성원이 아닌 것으로 가정하고 있습니다. 그렇지 않으면 폴더에 쓸 수 있습니다. 그룹에 php 사용자를 추가하거나 폴더에 대한 사용 권한을 777로 변경하십시오. 둘 다 옵션이 아니면 PECL SSH2 확장자를 사용하여 그룹 (또는 파일의 소유자)에있는 사용자로 로그인하십시오. 대신 파일을 작성하십시오.

6

우분투에서는 Berry가 제안한대로/etc/apache2/envvars를 편집합니다.

Apache 사용자를 변경하는 경우 의도하지 않은 결과가 발생합니다. 그 중 하나는/var/lib/php5에 저장 될 수있는 PHP 세션입니다. 해당 폴더의 소유권을 변경해야 할 수도 있습니다.

+0

/var/lib/php5 사용 권한 힌트는 무엇이 도움이 되었습니까? 'chown www-data/var/lib/php5'는 다른 모든 파일과 폴더 권한이 순서대로 (그리고 제정신이) 도움이되었지만 CMS는 불평을 계속했습니다. 고맙습니다. – raddaqii

9

비슷한 문제가 있지만 제 경우에는 SELinux가 실행 중이며 0777 권한으로도 실패했습니다.

chcon -R -t httpd_sys_rw_content_t <PARENT_OF_MKDIR_TARGET> 

SELinux가 문제 해결사 자세한 내용을 가질 수있다 : I 명시 적으로 아파치를 사용하여 디렉토리에 쓰기 권한을 가질 수 있도록 할 필요가 밝혀졌습니다.