nginx 설정 파일인 nginx.conf에는 user 라는 값이 있다. user는 nginx 프로세스를 실행할 os 계정을 명시한 값인데 보안상 root 계정으로 nginx 프로세스를 실행하는 걸 막기 위해 사용된다.
user [사용자명] [사용자그룹]
예를 들어
user user1
이렇게 설정하고 root 계정으로 nginx를 실행하면 nginx 프로세스는 root가 아닌 user1 계정으로 실행된다.
user 값은 주석처리 할 수도 있다.
#user user1
이 경우 nginx를 실행한 os 계정으로 프로세스가 실행된다.
이렇게 하는 이유는 결국 보안 때문인데 root 계정으로 nginx를 실행하는 걸 방지하기 위해서다.
nginx 프로세스가 root로 실행되면 위협이 될 수 있다.
예를 들어 nginx로 구동한 웹 사이트에 악의적인 스크립트를 업로드하는데 성공한다면 그 스크립트는 root 권한으로 실행할 수 있다. 이 스크립트는 root 권한을 가지고 있기 때문에 실행에 제한이 없어서 피해 범위가 넓다.
반면 일부 범위에만 권한을 가지고 있는 사용자라면 악성 스크립트가 영향을 줄 수 있는 범위는 줄어든다.
사실 이건 nginx 뿐만이 아니라 다른 프로세스에도 해당되는 이야기다. 때문에 왠만하면 프로세스는 root가 아닌 계정으로 실행하는 게 올바른 방향이다.