본문 바로가기
Wordpress

워드프레스 디렉토리와 파일의 permission, ownership에 대한 정리(4)

by aegypius 2024. 1. 27.
728x90
반응형

p.s.

큰 이변(?)이 없는 한 이 글이 워드프레스의 파일, 디렉토리의 권한에 대한 최종 글이 될 것 같다.


결국 이 타이틀로 네 번째 메모를 남긴다. 지난번 글( 2024.01.20 - [Wordpress] - [wordpress] 파일 및 디렉토리의 권한, 자격증명 오류 )은 제목이 다르지만 내용이 일부 겹치는 부분이 있어서... 이 타이틀의 범주에 포함시켰다. 세 번째로....

지금까지 그래왔지만.......특별한 문제가 발생하지 않는 한...계속 이 설정을 유지할 것이다. 

워드프레스를 처음 설치 한 후 setup-config.php를 실행시키기 전에 미리 아래의 작업을 해 놓기로 했다.

1. 워드프레스를 사용하는 계정(2~3개 되지만 내가 사용하는 하나의 계정을 선택했다)을 웹서버 그룹에 포함시키자. 

2. (설치한 워드프레스의)모든 파일과 디렉토리의 소유권을 웹서버 계정으로 변경하자.

3. 디렉토리의 퍼미션은 755에서 775로, 파일은 644에서 664로 변경하자.

 

1. 웹서버 계정의 그룹에 (워드프레스를 설치한) 사용자 계정을 추가

사용자 계정은 /etc/passwd에서 확인할 수 있고, 그룹은 /etc/group에서 확인할 수 있다. 운영중인 서버의 group 내용의 일부는 아래와 같다. 일반 사용자 계정은 account1 등으로 대체했다.....

postfix:x:89:
sshd:x:74:
cgred:x:994:
named:x:25:
account1:x:1000:
account2:x:1001:
apache:x:48:pius
mysql:x:993:
account3:x:1002:
account4:x:1003:


특정 계정(account)의 그룹정보는 groups account, id account 등을 통해서 확인할 수 있다. 이제 워드프레스를 사용할 특정 계정(account)을 apache 그룹에 포함시켜보자. 아래와 같다.

# gpasswd -a account apache

참고로 gpasswd 대신 usermod 명령을 사용할 수 있다.

반대로 그룹에서 계정을 제거하기 위해서는 -d 옵션을 사용하면 된다.

# gpasswd -d account apache

groups나 id 명령을 통해서 해당 계정이 apache 그룹에 제대로 포함되었는지 확인해보자.

 

2. 파일과 디렉토리의 소유권(ownership)을 변경

# chown -R apache.apache [워드프레스dir]

위에서 이미 apache 그룹에 account 계정을 포함시켰기 때문에, ftp를 사용하는데에 아무런 문제가 없다.

 

3. 파일과 디렉토리의 허가권(Permission)을 변경

기본 퍼미션인 디렉토리 755, 파일 644를 각각 775, 664로 변경하자. 사용자 계정(account)을 웹서버 계정 그룹(apache)에 포함시켰기 때문에 계정-그룹은 일치시키고 other는 기존과 변경없이 설정한 것이다.

아래는 current directory의 dir-name이라는 디렉토리와 그 하위의 모든 디렉토리의 퍼미션을 775로 바꾼다.

find [path]dir-name -type d -exec chmod 0775 {} \;

 

마찬가지로 아래는 모든 파일의 퍼미션을 664로 바꾼다.

find [path]dir-name -type f -exec chmod 0664 {} \;

 

이것으로 FS_METHOD를 사용하지 않고도 자격증명 오류를 해결 할 수 있었다....또한 워드프레스를 설치할 때에 wp-config.php, .htaccess 파일 등의 작성이나 uploads 디렉토리 등의 생성도 수동으로 작업할 필요가 없다는 것이 편리하다.


[2024-02-25 20:23]
첫 번째 사소한(?) 문제가 발생했다.

위의 설정으로 워드프레스 멀티사이트를 만들었을 때에는 아무런 문제를 찾지 못했다. 아마도 멀티사이트는 .htaccess의 내용을 워드프레스가 알려주는 그대로 수동으로 업데이트하면 되기 때문일 것이다. 멀티사이트가 아니라면 '.htaccess'가 업데이터 완료되었다는 메시지를 볼 수 있다. 그래서 당연히 .htaccess파일이 생성되었을 거라고 생각했는데 설정메뉴에서 사이트의 고유주소를 변경했는데도 자꾸 index.php가 도메인과 메뉴사이에 삽입되어 있는 것을 확인했다. 역시 .htaccess 파일이 생성되지 않았던 것이다. 이게 버그인지 아닌지는 모르겠지만 워드프레스를 설치한 최상위 디렉토리의 소유권은 해당 계정에게만 부여하여 .htaccess와 wp-config.php는 수동으로 작성하거나, 설치가 끝난 후에 아래의 내용으로 .htaccess를 수동으로 작성하면 해결 할 수 있다....

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
728x90
반응형

댓글