I followed this process to installing nginx on my Ubuntu 10.04 Lucid Server http://library.linode.com/web-servers/nginx/installation/ubuntu-10.04-lucid

I got lost after the point of creating an init script to start nginx, and then calling /etc/init.d/nginx start. When I did that, I got the following error:

Starting nginx_main: Starting /opt/nginx/sbin/nginx...
nginx: [alert] could not open error log file: open() "/opt/nginx/logs/error.log" failed (13: Permission denied)
2012/03/16 18:17:27 [emerg] 859#0: open() "/opt/nginx/logs/access.log" failed (13: Permission denied)

The only way I can run it is if I use sudo and it runs the process as root, which is what I don't want.

I've chown'd the entire directory (chown -R nginx:nginx /opt/nginx) and I've also chmod -R 755 the directory as well.

Adding the user directive as suggested by CS3 also gives me this error, but with an additional line.

Starting nginx_main: Starting /opt/nginx/sbin/nginx...
nginx: [alert] could not open error log file: open() "/opt/nginx/logs/error.log" failed (13: Permission denied)
2012/03/16 18:48:34 [warn] 1606#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /opt/nginx/conf/nginx.conf:2
2012/03/16 18:48:34 [emerg] 1606#0: open() "/opt/nginx/logs/access.log" failed (13: Permission denied)

Any ideas?

  • and I've also chmod -R 755 the directory as well Keep doing this and you'll pay a price for it eventually. It's scary to witness how many people there are on the internet suggesting this as a first port of call to "fix" any problem. Unix won't give friendly feedback if you do something moronic.
    – user181093
    Commented Jul 10, 2013 at 20:44
  • If you got same error on Nginx in Kubernetes, try to use bitnami/nginx image, it is rootless! See more details here: github.com/openshift/openshift-docs/issues/1533
    – Noam Manos
    Commented Apr 22, 2020 at 20:35

5 Answers 5


First of all, init scripts are supposed to be run

sudo /etc/init.d/name

when you are not logged in as root( when logged-in user is sudo enabled)

Secondly, when you run sudo /etc/init.d/nginx start ==> it fires the master nginx process as root and worker processes as the user you specified in your nginx.conf user directive(eg. www-data)

Can you confirm if all your process under nginx as being run by root when issuing sudo /etc/init.d/nginx start ?


ps aux | grep [n]ginx


enter image description here

Suggestion: Ubuntu 10.04 LTS has excellent ubuntu package support from nginx team. So, why bother installing from source if you do not have requirement for custom module inside nginx ?

Consult here

The binary package already comes with pretty much needed modules

nginx version: nginx/1.0.12
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-1.0.12/debian/modules/nginx-echo --add-module=/build/buildd/nginx-1.0.12/debian/modules/nginx-upstream-fair
  • The worker process I have has an ID, not a name. Any chance that's the nginx user ID? I'm pretty new to Ubuntu. I didn't know the apt package had all these flags turned on. How'd you find that out?
    – John
    Commented Mar 16, 2012 at 8:34
  • have you checked if the user you specified in your nginx.conf exist or not ? Official repo does not have this Nginx ! Please use PPA from specified URL
    – kaji
    Commented Mar 16, 2012 at 9:04
  • I used a different username which is longer than the 8 character limit. That's why the User ID is being shown, right?
    – John
    Commented Mar 16, 2012 at 9:21
  • yeah that is one scenario
    – kaji
    Commented Mar 16, 2012 at 11:35
  • 1
    nginx -V is your answer
    – kaji
    Commented Mar 17, 2012 at 4:25

Add the user directive inside nginx.conf

Reference: http://wiki.nginx.org/CoreModule#user

  • 1
    Sorry, could you be more specific? I've done that already to no avail.
    – John
    Commented Mar 16, 2012 at 5:42
  • Running anything between ports 1 to 1024 requires root privileges. User directive ensures that nginx runs as non root user for secruity reasons. Commented Mar 16, 2012 at 6:06
  • Also, for the logs to be opened and written, nginx directory should be chown'd to user from which you are trying to run. Commented Mar 16, 2012 at 6:23

My 5 kopek regarding this

nginx -V 2>&1 | sed 's/ --/\n--/g' | grep path

.. will get you all other pathes, that you should override in custom provided config or with "-g" option.

  • The following command shows all lines from the output, and highlights those containing the term 'path': nginx -V 2>&1 | sed 's/ --/\n--/g' | egrep --color '.*path.*|$'
    – isedwards
    Commented Mar 13, 2017 at 14:20

In my case there was a file reference missing in my nginx.conf:

error_log /var/log/nginx/error.log warn;

Became: error_log warn;

So I accidentaly deleted /var/log/nginx/error.log reference which caused a the permission denied error message.


I met the same problem when trying to build a docker file

Just like on @kaji's screen my master process is owned by root and the child processes owned by www-data

It seems wrong to me but adding root to the www-data seems to have resolved the issue, it doubt very much this is best practice so I'll do a bit more research

sudo -E usermod -aG www-data root && newgrp www-data

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .