Introdução
Um cenário comum para um aplicativo da Web que possui duas pastas gerais. Um preenchido com código que é executado pelo servidor de aplicativos, por exemplo, uwsgi, e um com conteúdo estático diretamente entregue pelo servidor web, por exemplo, nginx.
Em um servidor Debian, a conta de usuário para o servidor web é www-data, enquanto o servidor de aplicativos normalmente é único por aplicativo. Isso significa que no arquivo de código pode ter o seguinte acl:
# file: code/main.py
# owner: user
# group: user
user::rwx
group::rwx
group:app-server:rwx
other::---
Enquanto um arquivo estático pode ter a seguinte ACL:
# file: static/bootstrap.css
# owner: user
# group: user
user::rwx
group::rwx
group:app-server:rwx
group:www-data:r--
other::---
A pergunta atual
Como é possível que um arquivo com estas permissões:
$ sudo getfacl /srv/domain/django/static_files/bootstrap/css/bootstrap.css
getfacl: Removing leading '/' from absolute path names
# file: srv/domain/django/static_files/bootstrap/css/bootstrap.css
# owner: user
# group: user
user::rwx
group::rwx
group:www-data:r--
group:app-server:rwx
group:user-organization:rwx
mask::rwx
other::---
Não é legível por www-data:
$ sudo -u www-data cat /srv/domain/django/static_files/bootstrap/css/bootstrap.css
cat: /srv/domain/django/static_files/bootstrap/css/bootstrap.css: Permission denied
Quando o usuário www-data é claramente um membro do grupo com o mesmo nome:
$ id www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data)
De fato, renunciar a todo o controle e permitir que alguém leia nada faz para ajudar a situação:
$ sudo chmod 774 /srv/domain/django/static_files/bootstrap/css/bootstrap.css
$ sudo getfacl /srv/domain/django/static_files/bootstrap/css/bootstrap.css
getfacl: Removing leading '/' from absolute path names
# file: srv/domain/django/static_files/bootstrap/css/bootstrap.css
# owner: user
# group: user
user::rwx
group::rwx
group:www-data:r--
group:app-server:rwx
group:user-organization:rwx
mask::rwx
other::r--
$ cat /srv/domain/django/static_files/bootstrap/css/bootstrap.css
cat: /srv/domain/django/static_files/bootstrap/css/bootstrap.css: Permission denied
Alterar a propriedade e o grupo do arquivo para www-data com chown e chgrp não altera o resultado. Não vejo nada de interesse em dmesg, messages ou auth.log.
Então, algo está acontecendo, mas estou sem ideias.