動的ユーザーが個人ファイルを読み取れないのはなぜですか?

動的ユーザーが個人ファイルを読み取れないのはなぜですか?

私は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 内のファイルをアップグレードから除外することができます。

関連情報