www warning permission permiso open move_uploaded_file file_put_contents failed denegado contents ubuntu nginx

ubuntu - warning - Nginx: stat() falló(13: permiso denegado)



move_uploaded_file permiso denegado (12)

Acabo de tener el mismo problema en una caja CentOS 7.

Parece que le di a selinux. Poner selinux en modo permisivo ( setenforce permissive ) ha solucionado el problema por ahora. Intentaré volver con una solución adecuada.

Estoy usando la configuración predeterminada al agregar el directorio específico con nginx instalado en mi máquina ubuntu 12.04.

server { #listen 80; ## listen for ipv4; this line is default and implied #listen [::]:80 default ipv6only=on; ## listen for ipv6 index index.html index.htm; # Make site accessible from http://localhost/ server_name localhost; location / { # First attempt to serve request as file, then # as directory, then fall back to index.html root /username/test/static; try_files $uri $uri/ /index.html; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } ... ... }

Solo quiero un servidor nginx estático simple para servir archivos fuera de ese directorio. Sin embargo, verificando el error.log que veo

2014/09/10 16:55:16 [crit] 10808#0: *2 stat() "/username/test/static/index.html" failed (13: Permission denied), client:, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "domain" 2014/09/10 16:55:16 [error] 10808#0: *2 rewrite or internal redirection cycle while internally redirecting to "/index.html

Ya hice chown -R www-data:www-data on /username/test/static , los configuré en chmod 755 . No sé qué más hay que configurar.


Cambie su propiedad de user nginx.conf a propietario de archivos www-static .

# * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user your_user_name; # same other config


En CentOS 7.0 tuve este problema de Access Deined causado por SELinux y estos pasos resolvieron el problema:

yum install -y policycoreutils-devel grep nginx /var/log/audit/audit.log | audit2allow -M nginx semodule -i nginx.pp

Actualización: solo una nota al margen de lo que aprendí al usar los servidores virtuales de Linux de digitalocean, o como los llaman Droplets . El uso de SELinux requiere una cantidad decente de RAM. Lo más probable es que no pueda ejecutar y administrar SELinux en una gota con menos de 2 GB de RAM.


En mi caso, la carpeta que sirvió los archivos era un enlace simbólico a otra carpeta, hecha con

ln -sf /origin /var/www/destination

A pesar de que los permisos (usuario y grupo) eran correctos en la carpeta de destino (el enlace simbólico), todavía tenía el error porque Nginx también necesitaba tener permisos para la jerarquía completa de la carpeta de origen.


Encontré una solución: moví la carpeta a la carpeta de configuración nginx, en mi caso "/ etc / nginx / my-web-app". Y luego cambió los permisos al usuario root "sudo chown -R root: root" my-web-app ".


Enfrenté este problema, lo resolví para dar permisos al usuario de nginx y agrupar algo como esto:

chown -R nginx:nginx /username/test/static


Es posible que tenga Linux con seguridad mejorada en ejecución, así que agregue una regla para eso. Tuve permiso de 13 errores, a pesar de que se establecieron permisos y el usuario existía.

chcon -Rt httpd_sys_content_t /username/test/static


Nginx necesita tener acceso + x en todos los directorios que conducen al directorio raíz del sitio.

Asegúrese de tener + x en todos los directorios en la ruta que conduce a la raíz del sitio. Por ejemplo, si la raíz del sitio es / home / username / siteroot:

chmod +x /home/ chmod +x /home/username chmod +x /home/username/siteroot


Nginx opera dentro del directorio, por lo que si no puede cd a ese directorio desde el usuario nginx, fallará (al igual que el comando stat en su registro). Asegúrese de que el www-user pueda cd todo el camino a /username/test/static . Puede confirmar que la stat fallará o tendrá éxito ejecutando

sudo -u www-data stat /username/test/static

En su caso, probablemente el directorio /username es el problema aquí. Por lo general, www-data no tiene permisos para cd a los directorios de inicio de otros usuarios.

La mejor solución en ese caso sería agregar www-data al grupo de username de username :

gpasswd -a www-data username

y asegúrese de que el grupo de username pueda ingresar todos los directorios a lo largo de la ruta:

chmod g+x /username && chmod g+x /username/test && chmod g+x /username/test/static

Para que sus cambios funcionen, reinicie nginx

nginx -s reload


Por defecto, los datos estáticos, cuando instale el nginx, estarán en / var / www / html. Entonces puede copiar su carpeta estática en / var / html / y configurar el

root /var/www/<your static folder>

en ngix.conf (o / etc / nginx / sites-available / default)

Esto funcionó para mí en Ubuntu pero supongo que no debería ser muy diferente para otras distribuciones.

Espero eso ayude.


Síntoma:

No se pudieron subir imágenes a la biblioteca multimedia de WordPress.

Porque:

(CentOS) yum update

Error:

2014/10/22 18:08:50 [crit] 23286#0: *5332 open() "/var/lib/nginx/tmp/client_body/0000000003" failed (13: Permission denied), client: 1.2.3.4, server: _, request: "POST /wp-admin/media-new.php HTTP/1.1", host: "example.com", referrer: "http://example/wp-admin/media-new.php"

Solución:

chown -R www-data:www-data /var/lib/nginx


Tuve el mismo problema, estoy usando Plesk Onyx 17 con Centos7. Pude ver este error en proxy_error_log debajo de los registros del dominio afectado. Todos los directorios / archivos en / var / www / vhosts / son propiedad de sus respectivos usuarios (propietarios de dominio) y puede ver que todos ellos están en el grupo psacln. Entonces, la solución fue agregar nginx también a este grupo, para que pueda ver lo que necesita:

usermod -aG psacln nginx

Y de hecho, reinicie nginx y vuelva a cargar la página con Ctrl + F5.