
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.txt
nesse dnscrypt-proxy.toml
arquivo 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.txt
vem 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-proxy
diretó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=yes
habilitou.
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>.service
e editá-lo lá (/etc tem prioridade sobre /usr/lib); - você pode criar um arquivo "complementar"
/etc/systemd/system/<name>.service.d/whatever.conf
que 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.