PHP/Apache를 사용하는 업로드 폴더에 대한 적절한 권한은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/10990

  •  08-06-2019
  •  | 
  •  

문제

기본적인 질문을 해서 죄송합니다. 저는 .NET 개발자이고 LAMP 설정에 대한 경험이 많지 않습니다.

특정 폴더에 업로드할 수 있는 PHP 사이트가 있습니다.업로드 프로세스가 작동하려면 웹 서버 사용자가 이 폴더를 소유해야 한다는 말을 들었으므로 폴더를 만든 다음 다음과 같이 권한을 설정했습니다.

chown apache:apache -R uploads/
chmod 755 -R uploads/

이제 유일한 문제는 FTP 사용자가 업로드된 파일을 전혀 수정할 수 없다는 것입니다.

파일을 업로드한 다음 나중에 웹 서버 사용자가 아닌 다른 사용자로 수정할 수 있는 권한 설정이 있습니까?

도움이 되었습니까?

해결책

apache 사용자와 FTP 사용자를 모두 구성원으로 포함하여 새 그룹을 만든 다음 업로드 폴더에 775 권한을 부여할 수 있습니다.이렇게 하면 Apache 및 FTP 사용자 모두에게 폴더의 파일에 쓸 수 있는 기능이 제공되지만 다른 사용자는 해당 파일을 수정하지 못하게 됩니다.

다른 팁

정말로 이것을하고 싶다면 Ryan의 대답을 따르겠습니다.

일반적으로 *nix 환경에서는 항상 가능한 한 적은 권한을 부여하는 실수를 저지르게 됩니다.

10번 중 9번은 755가 이에 대한 이상적인 권한입니다. 파일을 수정할 수 있는 유일한 사용자는 웹 서버이기 때문입니다.정말로 이것을 변경해야 한다면 그룹에 있는 ftp 사용자와 함께 이것을 775로 변경하십시오.

귀하가 PHP를 처음 사용하는 경우 업로드 서비스의 보안을 향상시키는 데 유용한 링크는 다음과 같습니다.move_uploaded_file

아니면 적어도 766.

  • 읽다 = 4
  • 쓰기 = 2
  • 실행 = 1

7 = 읽기 + 쓰기 + 실행

6 = 읽기 + 쓰기

  • 첫 번째 숫자:소유자
  • 두 번째 숫자:그룹
  • 세 번째 숫자:다른 사용자

SELinux를 사용하는 경우 유형 컨텍스트가 tmp_t인지 확인해야 한다고 덧붙일 것입니다. 이 작업은 chcon 유틸리티를 사용하여 수행할 수 있습니다.

chcon -t tmp_t 업로드

중요한 것은 apache 사용자 및 그룹은 최소 read 액세스하고 어떤 경우에는 execute 입장.나머지는 당신이 줄 수 있어요 0 입장.

이것이 가장 안전한 설정입니다.

나는 업로드 권한을 갖는 ftp 그룹을 만드는 아이디어를 지지합니다.하지만 굳이 775 권한을 줄 필요는 없을 것 같습니다.7은 읽기, 쓰기, 실행을 의미합니다.일반적으로 특정 그룹에 읽기 및 쓰기를 허용하려고 하지만 경우에 따라 실행이 필요하지 않을 수도 있습니다.

또한 기억하십시오 CHOWN 또는 chgrp 귀하의 웹 사이트 폴더.노력하다 myusername# chown -R myusername:_www uploads

님의 답변을 바탕으로 @Ryan Ahearn, 다음은 내가 한 일입니다 Ubuntu 16.04 사용자 생성 front nginx의 웹 디렉토리에 대한 권한만 가지고 있습니다. /var/www/html.

단계:

* pre-steps:
    * basic prepare of server,
    * create user 'dev'
        which will be the owner of "/var/www/html",
    * 
    * install nginx,
    * 
* 
* create user 'front'
    sudo useradd -d /home/front -s /bin/bash front
    sudo passwd front

    # create home folder, if not exists yet,
    sudo mkdir /home/front
    # set owner of new home folder,
    sudo chown -R front:front /home/front

    # switch to user,
    su - front

    # copy .bashrc, if not exists yet,
    cp /etc/skel/.bashrc ~front/
    cp /etc/skel/.profile ~front/

    # enable color,
    vi ~front/.bashrc
    # uncomment the line start with "force_color_prompt",

    # exit user
    exit
* 
* add to group 'dev',
    sudo usermod -a -G dev front
* change owner of web dir,
    sudo chown -R dev:dev /var/www
* change permission of web dir,
    chmod 775 $(find /var/www/html -type d)
    chmod 664 $(find /var/www/html -type f)
* 
* re-login as 'front'
    to make group take effect,
* 
* test
* 
* ok
* 

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top