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.