O que faz com que um usuário dinâmico não consiga ler arquivos pessoais?

O que faz com que um usuário dinâmico não consiga ler arquivos pessoais?

Estou usando um serviço DNS chamadoproxy dnscrypt. E eu uso o PPA para instalá-lo no Ubuntu 18.04. Aqui está o arquivo de serviço instalado:

[Unit]
Description=DNSCrypt-proxy client
Documentation=https://github.com/jedisct1/dnscrypt-proxy/wiki
Requires=dnscrypt-proxy.socket
After=network.target
Before=nss-lookup.target
Wants=nss-lookup.target

[Service]
NonBlocking=true
ExecStart=/usr/bin/dnscrypt-proxy --config /etc/dnscrypt-proxy/dnscrypt-proxy.toml
ProtectHome=yes
ProtectControlGroups=yes
ProtectKernelModules=yes

# Run dnscrypt-proxy as unprivileged user with
# temporary assigned UID/GID. See man:systemd.exec
# for more info. Requires systemd 232+.
DynamicUser=yes
CacheDirectory=dnscrypt-proxy
LogsDirectory=dnscrypt-proxy
RuntimeDirectory=dnscrypt-proxy

[Install]
Also=dnscrypt-proxy.socket
WantedBy=multi-user.target

E eu forneço um caminho de arquivo /etc/dnscrypt-proxy/blacklist.txtnesse dnscrypt-proxy.tomlarquivo como uma lista negra, que é um link simbólico que aponta para meu diretório inicial /home/user/.dnscrypt-proxy-config/blacklist.txt.

A razão pela qual fiz isso é que blacklist.txtvem da internet, então só quero colocá-lo em meu diretório pessoal para manter a segurança.

Mas o problema é que esse serviço falha por causa de Open blacklist.txt failed: Permission denied.Embora eu não entenda qual parte causa esse problema.

Posso confirmar que este arquivo e seu link simbólico têm pelo menos permissão xx4. E se eu colocar esse arquivo diretamente no /etc/dnscrypt-proxydiretório, ele funciona.

Então, alguém poderia me dizer qual é a causa raiz? E se eu quiser seguir o formulário do link simbólico, o que devo fazer?

Responder1

Você ProtectHome=yeshabilitou.

Se verdadeiro, os diretórios /home, /root e /run/user ficam inacessíveis e vazios para processos invocados por esta unidade. Se definido como "somente leitura", os três diretórios se tornarão somente leitura.


Para alterar esta configuração em um arquivo de unidade empacotado,

  • você pode copiar todo o arquivo da unidade /etc/systemd/system/<name>.servicee editá-lo lá (/etc tem prioridade sobre /usr/lib);
  • você pode criar um arquivo "complementar" /etc/systemd/system/<name>.service.d/whatever.confque apenas atualiza as configurações necessárias:
    [Serviço] 
    ProtectHome=somente leitura
  • você pode usar systemctl edit [--full] <name>como atalho para fazer qualquer uma das opções acima automaticamente;
  • como umúltimo recurso, você pode usar a configuração do seu gerenciador de pacotes (por exemplo, NoUpgrade ou dpkg-divert) para excluir a atualização do arquivo em /usr/lib.

informação relacionada