본문 바로가기

트러블슈팅

서버 Restart 시, nginx: [emerg] chown("/dev/shm/nginx_proxy_temp", 503) failed (1: Operation not permitted)nginx: configuration file /home/www/etc/nginx.conf test failed 에러.

문제

서버를 Restart할 때, 아래와 같이 nginx 문제로 Restart가 실패했다.

Restart할 때 서버 2개를 차례로 진행하는 데, 서버#1은 성공하고 서버#2는 실패했다.

아래는 실패 시, 서버#2의 로그이다.

원인

chown은 linux에서 파일 소유권을 변경하는 명령어인데, /dev/shm/nginx_client_temp 파일에 chown을 실행할 수 있는 권한이 없어 Operation not permitted 에러가 나왔다고 생각했다.

 

서버#1과 서버#2 각각 /dev/shm 경로로 접근하고 아래 명령어로 파일의 권한을 확인했다.

ls -l

 

서버 #1은 아래와 같이 drwxrwxrwx 권한을 가진 것을 알 수 있다.

 

서버 #2는 drwx------ 권한으로, 서버#1과 다른 권한을 가지고 있다. 

 

알파벳 drwx는 아래와 같은 의미를 가진다.

  • d: 디렉토리
  • r: 읽기 권한 (Read)
  • w: 쓰기 권한 (Write)
  • x: 실행 권한 (Execute)

drwxrwxrwx는 d/rwx/rwx/rwx 로 나눌 수 있는데, 디렉토리/파일 소유자에게 부여된 권한/그룹에 부여된 권한 권한/그외 사용자에 부여된 권한 으로 나눌 수 있다.

 

즉, 서버#1은 파일 소유자, 그룹, 그 외 사용자에게 읽기(r), 쓰기(w), 실행하기(x) 권한을 모두 부여한 것이다.

서버#2는 drwx------ 로, 파일 소유자에게만 rwx 권한을 부여하고 있었다.

해결

서버#2에도  /dev/shm/nginx_client_temp 파일에 대해 서버#1과 동일한 drwxrwxrwx 권한을 부여했다.

아래 명령어로 권한을 부여했다.

sudo chmod 777 /dev/shm/nginx_client_temp

 

참고로, 777에서 7은 rwx 모든 권한의 숫자를 합한 값이다. 즉, rwx/rwx/rwx 가 777이 되는 것이다.

  • r(읽기): 4
  • w(쓰기): 2
  • x(실행): 1

 

/dev/shm/nginx_client_temp의 권한을 변경하고 서버를 Restart하니, 아래와 같은 에러가 났다.

 

에러 메시지가 'nginx: [emerg] chown("/dev/shm/nginx_proxy_temp", 503) failed (1: Operation not permitted)' 로 이번에는 /dev/shm/nginx_proxy_temp 에서 났다. /dev/shm/nginx_client_temp 이후 생성되는 파일이었다.

 

nginx_proxy_temp도 nginx_client_temp와 동일하게 chmod로 drwxrwxrwx 권한을 줘서 Restart에 성공했다.

 

참고 자료

https://recipes4dev.tistory.com/175

 

리눅스 chmod 명령어 사용법. (Linux chmod command) - 리눅스 파일 권한 변경.

1. 리눅스 파일 사용 권한 리눅스에서, 파일(File)을 사용해 할 수 있는 작업은 크게 세 가지로 나눌 수 있습니다. 파일에 저장된 데이터를 읽기. (r = read). 파일에 데이터를 쓰기. (w = write). 파일 실

recipes4dev.tistory.com

https://www.lesstif.com/lpt/linux-chown-93127453.html

 

linux chown 명령어 사용법

 

www.lesstif.com