파일 업로드를위한 올바른 권한 설정


12

"uploads"라는 디렉토리에 파일을 업로드하는 PHP 스크립트가 있습니다. 업로드를 작동시킬 수있는 유일한 방법은 다음과 같은 경우입니다.

chmod 777 uploads

나는 이것이 옳지 않다는 것을 알고 있지만 그것이 작동하기 위해 무엇을해야하는지 모른다.

서버 정보 : Amazon EC2의 T1-Micro Amazon Linux AMI 2013.03

질문 :

  • 액세스해야하는 사용자를 어떻게 알 수 있습니까? 예를 들어, 아파치 나 웹 서버의 사용자 이름은 무엇입니까?

  • 어떤 수준의 액세스 권한을 부여해야하며이를 위해 어떤 명령을 사용해야합니까?

감사!

편집 : 나는 스택 오버플로에 대해 많은 답변을 찾았습니다. 예를 들어

/programming/3642241/php-file-upload-permissions

/programming/10842880/setting-permissions-in-php-on-server

/programming/8948537/permission-denied-when-attempting-to-upload-file-with-php

감사

답변:


20

달리기를 시도하십시오.

ps -ef | grep apache

Apache 서버에 해당하는 가장 왼쪽 열을보십시오. 이것은 Apache를 실행하는 사용자이며 상속에 의해 PHP이기도합니다.

업로드 디렉토리의 소유권을이 사용자로 변경하고 웹 서버 사용자가 www-data동일한 이름의 그룹에 속하는 경우 (예 : 의 샘플 경로 사용) 권한을 조금 제한하십시오 /var/www/uploads.

sudo chown www-data:www-data /var/www/uploads
sudo chmod 755 /var/www/uploads

(또는이 인스턴스에서 원하는 권한). sudo예제 명령에 사용 합니다. 이와 관련하여 수퍼 유저 권한을 얻기 위해 EC2 시스템이 어떻게 설정되어 있는지 정확히 알 수 없습니다.

파일 / 디렉토리를 이미 업로드 한 경우 소유권과 권한도 변경하고 싶을 수 있습니다. 에서 진행이 수행하기 위해 777보다 합리적인 권한을, 당신은 실행할 수 있습니다 :

sudo chown -R www-data:www-data /var/www/uploads
sudo chmod -R 755 /var/www/uploads
sudo find /var/www/uploads -type f -exec chmod -x {} \;

각 부분을 이해하지 못하는 경우 "맹목적으로"명령을 실행하지 마십시오. man명확하지 않은 것이 있으면 페이지를 확인하십시오 (매우 간단해야 함).


감사. 이것은 많은 도움이되었습니다. 아파치 사용자입니다. sudo chown 및 sudo chmod 명령이 모두 작동합니다.
fun_programming

명확하고 간단한 솔루션입니다. 감사합니다. 이제 더 이상 위험한 777 권한이 필요하지 않습니다
lhrec_106
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.