Permiso de socket centos8 nginx uwsgi denegado

Permiso de socket centos8 nginx uwsgi denegado

Configuré uwsgi y nginx para que funcionen a través del socket (chmod 777) que se encuentra en el directorio de inicio del usuario, pero nginx no puede acceder al socket (13: Permiso denegado en error.log). Intenté mover el socket a /tmp/ con 777 chmod, pero luego recibí un error2: No such file or directory

2021/09/21 19:40:16 [crit] 68278#0: *17 connect() to unix:///tmp/my.sock failed (2: No such file or directory) while connecting to upstream, client: ***, server: ***, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:///tmp/my.sock:", host: "****"

2021/09/21 20:10:16 [crit] 517#0: *1 connect() to unix:/home/***/.deploy/my.sock failed (13: Permission denied) while connecting to upstream, client: ***, server: ***, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/home/***/.deploy/my.sock:", host: "***"

PS selinux deshabilitado

Respuesta1

Antes de llegar a la respuesta, debe hacer todo lo posible para romper con los malos hábitos de seguridad de usar chmod 777 o deshabilitar SELinux. Más bien, debe aprender completamente el modelo de permisos de UNIX para que siempre conozca los permisos correctos y debe configurar sus servicios para que funcionen con SELinux para beneficiarse de las capas adicionales de seguridad que proporciona.


Entonces, la razón por la que su socket enterrado en lo profundo del directorio de inicio de un usuario no funciona es que unpadreLos permisos del directorio prohíben el acceso necesario (en este caso, buscar x). Úselo namei -l /home/***/.deploy/my.sockpara ver los permisos de todos los directorios principales a la vez y corregir los que no permiten el permiso de búsqueda (lo más probable es que lo sea /home/***).

chmod +x /as/needed

Recuerde también corregir los permisos y la propiedad en el socket según sea necesario.

Para completar, la razón por la que no se encontró su socket /tmpes que nginx que se ejecuta como un servicio del sistema no puede acceder al /tmpdirectorio del sistema. Systemd lo inicia, PrivateTmp=truelo que provoca que se cree un directorio privado único y /tmpel espacio de nombres de nginx en ese directorio. Para eso están todos esos /tmp/xxx-systemd-private-foodirectorios.

información relacionada