
Я использую DNS-сервис под названиемdnscrypt-прокси. И я использую PPA для установки на Ubuntu 18.04. Вот установленный файл сервиса:
[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
И я указываю путь к файлу /etc/dnscrypt-proxy/blacklist.txt
в этом dnscrypt-proxy.toml
файле как к черному списку, который является символической ссылкой, указывающей на мой домашний каталог /home/user/.dnscrypt-proxy-config/blacklist.txt
.
Причина, по которой я это сделал, в том, что эта информация blacklist.txt
взята из Интернета, поэтому я хочу поместить ее только в свой личный каталог в целях безопасности.
Но проблема в том, что эта служба дает сбой из-за Open blacklist.txt failed: Permission denied.
того, что я не понимаю, какая именно часть вызывает эту проблему.
Я могу подтвердить, что этот файл и его символическая ссылка имеют как минимум разрешение xx4. И если я напрямую помещаю этот файл в /etc/dnscrypt-proxy
каталог, это работает.
Так может кто-нибудь сказать мне, в чем корень проблемы? И если я хочу перейти по символической ссылке, что мне делать?
решение1
Вы ProtectHome=yes
включили.
Если true, каталоги /home, /root и /run/user становятся недоступными и пустыми для процессов, вызываемых этим модулем. Если установлено значение "read-only", три каталога становятся доступными только для чтения.
Чтобы изменить эту настройку в упакованном файле модуля,
- вы можете скопировать весь файл модуля
/etc/systemd/system/<name>.service
и редактировать его там (/etc имеет приоритет над /usr/lib); - Вы можете создать «дополнительный» файл,
/etc/systemd/system/<name>.service.d/whatever.conf
который просто обновит нужные вам настройки:[Сервис]
ProtectHome=только для чтения - вы можете использовать его
systemctl edit [--full] <name>
в качестве ярлыка для автоматического выполнения любого из вышеперечисленных действий; - какКрайнее средство, вы можете использовать конфигурацию вашего менеджера пакетов (например, NoUpgrade или dpkg-divert), чтобы исключить файл в /usr/lib из обновления.