Owner of NGINX process

Hi there!

I’ve just installed nginx and wondering why there are two processes. One process is owned by root, the other one is owned by www-data.

7017 root      20   0  124972   1432     80 S  0.0  0.3   0:00.00 nginx                                                                                       
7018 www-data  20   0  125332   3168   1588 S  0.0  0.6   0:00.00 nginx 

I didn’t changed the nginx.conf yet, so the configured user is still www-data.

Is it correct that one process is owned by root? Is that a security risk I need to worry about?

Thank you very much!

  • Matthias

Submit an answer

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Want to learn more? Join the DigitalOcean Community!

Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in Q&A, subscribe to topics of interest, and get courses and tools that will help you grow as a developer and scale your project or business.

A bit of clarification - only the root user can listen on ports less than 1024. This is for security reasons, otherwise system users could eavesdrop on each other.

Since web traffic is typically hosted on ports 80 and 443, a web server actually needs to run as root in order to listen on and server traffic over those ports.

To reduce the attack surface, increase stability (and probably other reasons) NGINX runs one parent process as root. The parent process manages spawning child processes as well as passing requests off to them. This means that the actual process that handles each request is non-root and less privileged.

The nginx process is running as www-data, so, the root:www-data ownership would only work with group write permissions set. There is no major issue with running with your web files owned by www-data:www-data but if you are concerned you could give ownership of wp-content to www-data and leave the rest of the install as root:www-data.

The process owned by root is the nginx parent process. This process forks worker processes which are run by the user defined in nginx.conf.