워드프레스 폴더 권한 문제 해결하기(chmod 777)

우분투에 nginx+php-frm+mariaDB 조합으로 서버를 꾸미고 워드프레스를 설치했는데
윈도우 에서 운영할때엔 나타나지 않던 문제가 발생함.

인터넷에 검색해보면 무수히 많은 방법이 나오는데 일단 가장 쉽게 할수 있는 방법이 wp-content폴더 권한을 777로
주는 방법이다.
이 방법은 보안상 심각한 문제를 초래할수 있다고 한다.
뭐 개나소나 다 와서 수정할수 있는 권한이니

워드프레스 사이트에 폴더와 파일 권한에 대한 문서가 있는데 (https://codex.wordpress.org/Changing_File_Permissions#Permission_Scheme_for_WordPress)

대충 정리하자면
– 모든 파일은 관리자 유저 소유여야 한다.
– 모든 폴더는 755 권한이어야 한다.
– 모든 파일은 644 권한이어야 한다.
– wp-config.php는 600권한이어야 한다.

v1.11.8 버전 기준으로 /etc/nginx/nginx.conf 파일을 보면 nginx는 기본적으로 nginx 유저로 운영됨.
/etc/nginx/nginx.conf파일에 보면 nginx는 기본적으로 www-data 유저로 운영된다.
기본값이 user www-data; 로 되어 있는데 user www-data www-data;로 변경한다 (앞은 아이디고 뒤는 그룹임)

이렇게 특정유저명으로 동작하는 이유가 nginx 만 위해 존재하는 계정이라 다른 유저파일이나 시스템 파일
건들지 못하게 하는 이유라고 함.
이때 계정을 www-data 그룹에 포함시키고 wp-content 하위 폴더를 소유자는 유저로 그룹은 www-data로
해주면 nginx가 wp-content 폴더에 파일 생성 및 삭제하는데 문제가 없고 유저는 ftp 등으로 파일 수정 및 전송
하는데 문제가 없다 그리고 775권한을 준 폴더만 nginx가 손댈수 있고 나머지는 소유자만 손댈수 있으니
보안에도 문제가 없다고 판단함. (사실 이 내용은 위 워드프레스 링크에 있는 것임.)

 

1. 사용자 계정 그룹에 추가
사용자 계정을 그룹에 포함하는 명령 $ sudo gpasswd -a 계정 그룹
그룹에서 계정을 빼는 명령 $ sudo gpasswd -d 계정 그룹

$ sudo gpasswd -a linsoo www-data
$ sudo gpasswd -d linsoo www-data

2. 폴더 소유자 변경

$ sudo chown -R linsoo:www-data wp-content/

3. 폴더 권한 변경

이건 콘솔명령어로 안하고 파일질라ftp 프로그램을 써서 했음.
모든 파일은 644로 하위 디렉토리에 파일만 적용하도록 해서 돌리고
폴더는 775로 하위 디렉토리만 적용하도록 해서 돌림.
(참고로 755가 아닌 775인 이유는 같은 그룹소속은 rwx 권한을 주기 위해서임)

인터넷 보면 주로 wp-content 폴더랑 wp-content/uploads 폴더만 권한주면 된다고 하는데
wp-content 하위폴더 전부 준 이유는 플러그인이나 테마 설치 할때 랭귀지 설치하는게 종종 있는데
이때 language 폴더도 같은 그룹 소속이 아니면 설치 실패뜸! 테마도 마찬가지!


2017-01-12

리눅스 명령어 찾아서 추가합니다.

//파일만 권한 바꾸기
sudo find . -type f -exec chmod 644 {} ;

//디렉토리만 권한 바꾸기
sudo find . -type d -exec chmod 755 {} ;

wp-content만 줘선 안되고 워드프레스 폴더 전체를 www-data 그룹에 넣고 파일 권한도 전부 775로 줘야지만
중간에 버전업그레이드 할때 자동 업데이트가 됨.

 


Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다