[Issue] Update-core.php has permission problem

오늘 테스트 워드프레스 웹서버 업데이트를 진행했다. Theme이나 Plug-in의 업데이트는 무난하게 되었지만, WordPress의 버전을 올리는 과정에서 Update-core.php 관련 문제가 발생하였다.

워드프레스의 구조를 정확하게 이해하고 사용하고 있는 웹서버와의 설정 관계를 정확하게 이해하고 있다면, 수동으로 다운받아 설치하면 깔끔하게 해결될 문제이지만, 자동으로 업데이트를 해주면서 이전 버전의 뒷정리를 해주는 이 시스템을 나는 계속 이용하고 싶었다.

업데이트가 되지 않았던 그 화면을 캡쳐해뒀으면 좋았겠지만 안되는 그 화면을 보자마자 침착맨이 되어버려서 바로 문제해결을 하고자하는 생각 밖에 들지 않아 아무것도 증거로 남겨두지 못했다..각 나의 의심별로 과정 1,2..로 구분하여 적어보았다.

[ 과정 1 ] – update-core.php 권한이 잘못되었나?

우선 간단하게 설명하자면, 다운로드까진 되었고, 그 이후 웹서버의 루트폴더 경로내 update-core.php 파일의 권한이 달라 업데이트가 되지 않는다는 문구가 나왔다.
나는 Thinkground 프로젝트에 맞춰 CentOS 7에 LEMP Stack으로 구성을 해두었는데 그 과정에서 루트폴더에 nginx로 권한 부여를 해준 적이 있다.
그 이유는 이 워드프레스가 업데이트든 어떤 동적인 excecuting을 할 때에는 웹서버의 계정을 사용하게 되는데, 기본적으로 nginx로 설정이 되어있다.
그때 뭔가 잘못되었나 싶어 살펴보았다.

저 파일에 권한 상태도 확인을 해보았지만 특이사항은 없었다.

[ 과정 2 ] – 그럼 혹시 몰라 다운로드 받은 파일이 어디에 받아지는걸까?

두번째 의심은 파일이 다운로드 받아지는 경로에 권한이 없어서 안되는건 아닐까 하는 의심이 들었다.
그러다가 결론은 쓸데없는 거였지만, temp 폴더를 만들게 되었다.
그리고 temp파일에도 똑같이 권한을 부여해주고 다시 시도를 해보았지만 똑같았다.

[ 과정 3 ] – 도저히 모르겠다…

이렇게 앞으로 업데이트를 수동으로 해줘야 하는 건가? 라는 고민을 하면서 이 문제 해결은 다음에 할까 고민을 하던 찰나에 wordpress 포럼에서 하나의 실마리를 찾을 수 있었다.
워드프레스 서포트 팀원이 남긴 댓글 중에

‘Are you using SELinux? If so, please check the audit logs.’

이런 댓글이 있었다. 그리고 난 바로 audit log를 봤다…

아니 근데 너무 많았기도 많았고, 포멧이 너무 더러워서 보기가 힘들었다. 그래서 읽는걸 바로 포기해버렸다ㅋㅋㅋ

가장 중요했던 것은 audit log가 너무 많았다는 것이었다는 것이고, 우선 바로 구글링으로 SELinux 상태를 확인해보고자 했다.

# sestatus

이렇게 치면 SELinux의 상태를 확인할 수가 있다.

SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31

여기서 집중해서 봐야할 것은 Current mode이다. 현재 enforcing으로 가동중이라는 것이다.
뭔가 의심이 될만하면 막아버리는 나의 착한 리눅스라는 것이다.
그래서 우선 내렸다. 내리는 명령어는 아래와 같다

# setenforce [ Enforcing | Permissive | 1 | 0 ]

1을 입력하면 Enforcing이 되고, 0을 입력하면 Permissive 상태가 된다.
우선 0을 입력해서 내린 후에 업데이트를 시도해보았다.

바로 업데이트가 되더라.. 내 보안이 너무 강력해서 Update-core.php 접근을 막았다고 봐야되나보다.

사실 이런 것과 비슷한 방법으로 폴더의 권한을 777로 주고서 해결했다는 글을 보기도 했었다.
하지만 권고하지 않는 방법이라고 해서 하지 않았다.
결국 이것도 같은 방법으로 봐야하나 싶긴하지만, 우선 이 방법을 택하기로 결정했다.

SELinux를 아에 내리는 방법도 있다고 한다.
근데 그건 정말 권고하지 않는다고 다들 그런다. 그러니 우선 이 방법을 시도해보는걸 추천한다.

Leave a Reply