워드프레스 파일 퍼미션 설정에 대해

[역자 주] 이 글은 워드프레스 공식 문서(2014년 2월 27일 기준)의 ‘Changing File Permission’ 중 ‘워드프레스 퍼미션 설정(Permission Scheme for WordPress) 부분을 번역한 것이다.

꽤 상세한 설명을 하고 있지만 결국 문서를 보고 이해한 다음 자신의 상황에 맞게 적용하는 수밖에 없다.

내 생각에 가장 크게 관리 방식이 갈리는 지점은 공유 호스팅이냐 아니냐 하는 부분이다. (물론 공유 호스팅인 경우에도 suexec를 사용하면 이야기가 달라지는 것 같지만)

일단 단 한가지만 강조하라고 한다면, 공유 호스팅에선 웹서버 사용자(www-data 같은)에게 절대로 소유권을 줘선 안 된다고 말하고 있다는 점이다. 여러 사용자들이 웹서버 사용자를 제어할 수 있기 때문이다.

(그러나 여전히 업로드 폴더는 777을 줘야 하는 거 아냐? 소유권하고 뭐가 다르지? 하는 생각이 머리를 멤돈다. 아는 분 있으면 댓글 부탁한다.)

단독 호스팅일 때는 권한 정책에서 선택의 여지가 좀더 넓어진다. 이 글을 번역하게 된 계기도 단독 호스팅을 하면서였다. 어떻게 권한 설정을 해야 보안과 편의성을 둘 다 충족할 수 있을까 궁금했다.

나의 경우 결론은 전체 파일의 그룹을 아파치 그룹으로 만들고, 그룹에 쓰기 권한을 줘서 웹서버가 코어 업데이트, 플러그인 업데이트 등을 할 수 있도록 하는 것이었다. 즉, 편의성을 선택했다.

여러분도 이 글을 읽고 나름의 결론에 도달할 수 있기를 바란다. 아래부터 번역이다.


퍼미션은 호스트에 따라 다르다. 따라서 이 안내서는 일반적인 경우에 대해서만 자세히 설명한 것이다. 이 문서는 모든 경우에 대한 것이 아니다. 이것은 표준적으로 설정돼 돌아가는 서버에만 적용할 수 있는 가이드다(알림. “suexec” 메서드를 사용하는 공유 호스팅에 대해서는 뒤쪽을 보세요).

[역자 주 – 공유 호스팅은 한 서버를 여러 사용자들이 나눠서 사용하는 경우다. 대부분 웹호스팅이 이렇다고 보면 된다. 단독 호스팅은 IDC에 직접 서버를 갖다 놓는 서버 호스팅이나 클라우드에서 서버를 받는 경우다(아마존 EC2 같은).]

일반적으로 모든 파일은 웹 서버의 사용자 (ftp) 계정 소유여야 한다. 그리고 그 계정에만 쓰기 권한이 있어야 한다. 공유 호스팅에서 파일은 절대로 웹서버 프로세스 자신의 소유여선 안 된다(때로 이 계정의 이름은 www나, apache, 아니면 nobody다). [역자 주 – 맥 homebrew에선 _www, 우분투에서는 www-data이다. apache.conf 파일을 보면 알 수 있다.]

워드프레스에서 쓰기 권한이 있어야 하는 모든 파일은 워드프레스가 사용하는 사용자 계정의 소유거나 사용자 그룹의 소유여야 한다(이 계정은 어쩌면 서버 계정과는 다를 수도 있다). 예컨대, FTP에서 파일을 넣고 빼고 하는 사용자 계정이 있을 수 있다. 하지만 서버 자체는 dhapachenobody 같은 다른 사용자나 사용자 그룹을 이용해서 돌아가고 있을 수도 있다. 만약 워드프레스가 FTP 계정을 이용해서 돌아가고 있다면, 그 계정에 쓰기 권한이 있어야 한다. 예를 들면, 파일을 소유하고 있거나, 쓰기 권한이 있는 그룹에 포함돼 있어야 한다. 뒤의 경우는 기본 설정보다 좀더 관대한 퍼미션이어야 한다는 것을 의미한다(예컨대, 폴더는 755가 아니라 775, 나머지는 644가 아니라 664).

워드프레스의 파일과 폴더 퍼미션은 설치 시점에 자신이 고른 설치 종류와 설치 시점의 시스템 환경 설정에 따른 umask에 따라 대부분의 사용자들에게 같아야 한다.


알림: 만약 워드프레스를 스스로 설치했다면, 파일 퍼미션을 변경할 필요가 없을 것이다. 퍼미션 에러로 문제를 경험하거나, 스스로 원하는 게 아니라면, 아마 퍼미션 때문에 골치를 썩고 싶진 않을 거다.


일반적으로 워드프레스의 모든 코어 파일은 사용자 계정만 쓰기 권한이 있어야 한다(아니면 다른 경우엔 httpd 계정만). (그렇지만 때때로 설치할 때 다중 ftp 계정을 사용하기도 하는데, 그런 경우 모든 ftp 계정을 알고 있고 신뢰할 만하다면, 예컨대, 공유 호스팅이 아니라면, 그러면 그룹 쓰기 권한을 주는 것만으로 충분할 수 있다. 더 자세한 내용은 서버 관리자에게 문의하라.) 그러나 만약 mod_rewrite 고유주소나 다른 .htaccess 기능을 활용한다면, 워드프레스가 .htaccess 파일 쓰기 권한을 갖도록 해야 한다.

내장 테마 에디터를 사용하고 싶다면[테마의 PHP 코드를 워드프레스 관리자 페이지에서 수정할 수 있는 기능을 말하는데, 보안 위험도를 높이는 일이므로 추천하지는 않는다 – 안형우], 모든 파일은 그룹 쓰기 권한이 있어야 한다. 파일 퍼미션을 수정하기 전에 사용해 봐라. 작동해야 한다. (다른 사용자가 워드프레스 패키지와 플러그인 또는 테마를 업로드한 경우에 그럴 수 있다. admin 계정으로 [관리자 페이지에서 – 안형우] 플러그인이나 테마를 설치한 경우엔 문제가 되지 않는다. 다른 ftp 사용자 그룹이 파일을 업로드한 경우엔 그룹 쓰기 권한이 있어야 한다. 공유 호스팅에선, 신뢰할 수 있는 사용자만 그룹에 넣어야 한다. apache라는 사용자는 이 그룹에 들어가선 안 되고, 파일을 소유하고 있어도 안 된다.)

몇몇 플러그인은 /wp-content/ 폴더 쓰기 권한이 있어야 한다. 하지만 이런 경우 설치할 때 알려 줄 거다. 몇몇 경우에, 이것은 755 퍼미션 할당이 필요하다는 것을 의미한다. /wp-content/cache/와 아마 /wp-content/uploads/ 폴더도 마찬가지일 것이다. (만약 멀티사이트를 사용하고 있다면, /wp-content/blogs.dir/도 그렇게 해야 할 거다.)

[역자주: 755라면 소유자에게만 쓰기 권한이 있는 것이다. 그러나 웹서버 사용자가 이 폴더에 쓰기 권한이 있어야 파일을 업로드할 수 있다. 웹서버 사용자를 그룹에 넣는 것은 보안상 더 문제니 결국 모두에게 쓰기 권한을 줘야 한다. 즉, 더 많은 경우에는 777을 줄 수밖에 없을 것이다.]

어떤 플러그인이나 테마가 /wp-content/ 폴더 바로 아래쪽에 디렉토리가 추가로 필요하다면 문서화돼 있어야 한다. 퍼미션은 다양할 것이다.

/   
|- index.php
|- wp-admin
|   `- wp-admin.css
|- wp-blog-header.php
|- wp-comments-post.php
|- wp-commentsrss2.php
|- wp-config.php
|- wp-content
|   |- cache
|   |- plugins
|   |- themes
|   `- uploads
|- wp-cron.php
|- wp-includes
`- xmlrpc.php

suexec를 사용하는 공유 호스팅(Shared Hosting with suexec)

위 설명은 실행중인 PHP 바이너리에 대해 “suexec” 접근을 사용하는 공유 호스팅 시스템에는 적용되지 않을 것이다. 이것은 많은 웹 호스트가 사용하는 흔한 접근법이다. 이 시스템들의 경우엔, php 프로세스에 php 파일 소유권이 있다. 이런 방식은 특정 공유 호스팅의 경우에 더 간편한 설정과 더 나은 보안을 제공한다.


알림: suexec 방식은 독립사이트 서버 설정에 사용하면 안 된다. 이 방식은 오직 공유 호스팅의 특정 경우에만 더 나은 보안을 제공한다.


그런 suexec 설정의 경우에, 올바른 퍼미션 설정은 간단하다.

이 특정한 설정에서, 워드프레스는 완전한 소유권으로 직접 파일을 생성할 수 있다는 것을 감지할 것이다. 그러면 업그레이드할 때나 플러그인을 설치할 때 FTP 인증 정보를 묻지 않을 것이다. [워드프레스는 웹서버 사용자가 파일을 소유하고 있으면 FTP 정보를 묻지 않는다 – 안형우]

👇 카테고리 글 목록

, ,

대표글

“워드프레스 파일 퍼미션 설정에 대해” 에 하나의 답글

  1. 정말 755로도 가능한가요? wp-content/uploads를 755로 해놓으니까 미디어 라이브러리로 사진 올릴 때 꼭 에러가 나던데…

댓글 남기기