
私は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 はアクセス不能になり、空になります。「読み取り専用」に設定すると、代わりに 3 つのディレクトリが読み取り専用になります。
パッケージ化されたユニットファイルでこの設定を変更するには、
- ユニット ファイル全体をコピーして
/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 内のファイルをアップグレードから除外することができます。