21

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?

2
  • 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
    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
    Apr 22, 2020 at 20:35

5 Answers 5

10

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 ?

with

ps aux | grep [n]ginx

eg.

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
11
  • 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
    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
    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
    Mar 16, 2012 at 9:21
  • yeah that is one scenario
    – kaji
    Mar 16, 2012 at 11:35
  • 1
    nginx -V is your answer
    – kaji
    Mar 17, 2012 at 4:25
2

Add the user directive inside nginx.conf

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

3
  • 1
    Sorry, could you be more specific? I've done that already to no avail.
    – John
    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. 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. Mar 16, 2012 at 6:23
1

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.

1
  • 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
    Mar 13, 2017 at 14:20
0

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.

0

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.