Pregunta Ejecuta nginx como un usuario no root


Seguí este proceso para instalar nginx en mi Ubuntu 10.04 Lucid Server http://library.linode.com/web-servers/nginx/installation/ubuntu-10.04-lucid

Me perdí después de crear un script de inicio para iniciar nginx y luego llamar a /etc/init.d/nginx start. Cuando hice eso, recibí el siguiente 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)

La única forma en que puedo ejecutarlo es si uso sudo y ejecuta el proceso como root, que es lo que no quiero.

He chown'd todo el directorio (chown -R nginx:nginx /opt/nginx) y también he chmod -R 755 El directorio también.

Añadiendo el user La directiva sugerida por CS3 también me da este error, pero con una línea adicional.

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)

¿Algunas ideas?


16
2018-03-16 05:20


origen


and I've also chmod -R 755 the directory as well Sigue haciendo esto y pagarás un precio eventualmente. Da miedo ver a cuántas personas hay en Internet, lo que sugiere esto como un primer punto de contacto para "solucionar" cualquier problema. Unix no dará comentarios amistosos si haces algo tonto.


Respuestas:


En primer lugar, los scripts de inicio se deben ejecutar

sudo /etc/init.d/name

cuando no ha iniciado sesión como root (cuando el usuario que inició sesión está habilitado para sudo)

En segundo lugar, cuando ejecuta sudo /etc/init.d/nginx start ==> se activa el proceso maestro nginx como proceso de raíz y de trabajo como el usuario que especificó en su directiva de usuario nginx.conf (por ejemplo, www-data)

¿Puede confirmar si todo su proceso en nginx como ejecutado por la raíz al emitir sudo /etc/init.d/nginx se inicia?

con

ps aux | grep [n]ginx

p.ej.

enter image description here

Sugerencia: Ubuntu 10.04 LTS tiene un excelente soporte de paquetes ubuntu del equipo nginx. Entonces, ¿por qué molestarse en instalar desde la fuente si no tiene el requisito de un módulo personalizado dentro de nginx?

Consultar aquí

El paquete binario ya viene con módulos bastante necesarios

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

10
2018-03-16 05:58



El proceso de trabajo que tengo tiene una identificación, no un nombre. ¿Alguna posibilidad es la ID de usuario nginx? Soy bastante nuevo en Ubuntu. No sabía que el paquete apt tenía todas estas banderas encendidas. ¿Cómo lo descubriste? - John
¿ha comprobado si el usuario que especificó en su nginx.conf existe o no? ¡Repo oficial no tiene este Nginx! Por favor, use PPA de la URL especificada - kaji
Usé un nombre de usuario diferente que es más largo que el límite de 8 caracteres. Por eso se muestra el ID de usuario, ¿verdad? - John
Sí, ese es un escenario - kaji
nginx -V es tu respuesta - kaji


Añade el usuario directiva dentro de nginx.conf

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


1
2018-03-16 05:26



Perdón, ¿podrías ser más específico? Ya lo he hecho en vano. - John
Ejecutar cualquier cosa entre los puertos 1 a 1024 requiere privilegios de root. La directiva de usuario garantiza que nginx se ejecute como usuario no root por motivos de seguridad. - Shyam Sundar C S
Además, para que los registros se abran y se escriban, el directorio nginx se debe enviar al usuario desde el que intenta ejecutarse. - Shyam Sundar C S


Mis 5 kopek con respecto a esto

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

.. obtendrá todas las demás rutas, que debe anular en la configuración proporcionada personalizada o con la opción "-g".


1
2017-07-19 10:07



El siguiente comando muestra todas las líneas de la salida y resalta las que contienen el término 'ruta': nginx -V 2>&1 | sed 's/ --/\n--/g' | egrep --color '.*path.*|$' - isedwards


En mi caso faltaba una referencia de archivo en mi nginx.conf:

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

Convirtió: error_log advertir;

Así que accidentalmente borré la referencia /var/log/nginx/error.log que causó un mensaje de error de permiso denegado.


0
2018-06-18 18:01