uwsgi permissão negada no chdir que tem permissões para esse uid

1

Estou usando o uWSGI (por trás do nginx) sem Emperor, executado como um systemd service.

uwsgi.service:

[Service]
ExecStart=/usr/local/bin/uwsgi --ini /var/www/CONSTANd++/uwsgi_config.ini
(...)

uwsgi_config.ini:

(...)
gid = www-data
uid = www-data
chdir = /var/www/CONSTANd++/constandpp_web/constandpp_web
(...)

terminal:

$ ls -la /var/www/CONSTANd++/constandpp_web/constandpp_web
drwxrwxr-x 5 pdiracdelta www-data  4096 Sep  6 10:42 .
(...)

Claramente, esta pasta tem todas as permissões para o grupo www-data, mas ainda quando eu inicio este serviço uWSGI o log do uWSGI reclama:

(...)
setgid() to 33
setuid() to 33
chdir() to /var/www/CONSTANd++/constandpp_web/constandpp_web
chdir(): Permission denied [core/uwsgi.c line 2591]
chdir(): Permission denied [core/uwsgi.c line 1613]

Por que isso está acontecendo e como posso corrigi-lo? Se eu remover o uid=www-data do uwsgi_config.ini, tudo começa bem, mas é claro que os arquivos criados pelo meu aplicativo WSGI possuem a propriedade root, o que eu não quero.

    
por PDiracDelta 06.09.2017 / 11:23

1 resposta

0

Como se constata, o usuário do www-data precisa de permissões para o caminho 'completo' para o seu arquivo / pasta. Isso pode ser mais complicado do que você pensa:

  1. O usuário do www-data precisa ter +x permissões para poder cd em uma pasta ...
  2. ... e também em cada pasta pai especificada no caminho que você está usando ...
  3. ... e também , se um symlink estiver envolvido, em cada pasta pai do caminho absoluto para esse arquivo / pasta.

Você pode verificar todas as permissões de caminho (relativas e absolutas) em um comando usando namei -m <any_path> .

Esta resposta é parcialmente baseada nos comentários de @ Khaled e mais algumas pesquisas:

    
por 13.09.2018 / 13:40