Warum kann ein dynamischer Benutzer keine persönlichen Dateien lesen?

Warum kann ein dynamischer Benutzer keine persönlichen Dateien lesen?

Ich verwende einen DNS-Dienst namensDNSCrypt-Proxy. Und ich verwende das PPA, um es auf Ubuntu 18.04 zu installieren. Hier ist die installierte Servicedatei:

[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.txtUnd ich gebe in dieser Datei einen Dateipfad dnscrypt-proxy.tomlals Blacklist an, der ein symbolischer Link ist, der auf mein Home-Verzeichnis verweist /home/user/.dnscrypt-proxy-config/blacklist.txt.

Der Grund, warum ich dies getan habe, ist, dass es blacklist.txtaus dem Internet stammt, daher möchte ich es aus Sicherheitsgründen nur in meinem persönlichen Verzeichnis ablegen.

Das Problem besteht jedoch darin, dass dieser Dienst aus Open blacklist.txt failed: Permission denied.folgendem Grund fehlschlägt: Ich verstehe nicht, welcher Teil dieses Problem verursacht.

Ich kann bestätigen, dass diese Datei und ihr symbolischer Link beide mindestens die Berechtigung xx4 haben. Und wenn ich die Datei direkt in /etc/dnscrypt-proxydas Verzeichnis lege, funktioniert es.

Kann mir also jemand sagen, was die Grundursache ist? Und was soll ich tun, wenn ich dem symbolischen Link folgen möchte?

Antwort1

Sie haben ProtectHome=yesaktiviert.

Wenn wahr, werden die Verzeichnisse /home, /root und /run/user für Prozesse, die von dieser Einheit aufgerufen werden, unzugänglich und leer gemacht. Wenn auf „schreibgeschützt“ gesetzt, werden die drei Verzeichnisse stattdessen schreibgeschützt gemacht.


Um diese Einstellung in einer Packaged Unit-Datei zu ändern,

  • Sie können die gesamte Unit-Datei dorthin kopieren /etc/systemd/system/<name>.serviceund dort bearbeiten (/etc hat Vorrang vor /usr/lib).
  • Sie können eine „Add-on“-Datei erstellen, /etc/systemd/system/<name>.service.d/whatever.confdie nur die benötigten Einstellungen aktualisiert:
    [Dienst] 
    ProtectHome=schreibgeschützt
  • Sie können es systemctl edit [--full] <name>als Verknüpfung verwenden, um eine der oben genannten Aktionen automatisch auszuführen.
  • Als einletzter Ausweg, können Sie die Konfiguration Ihres Paketmanagers (z. B. NoUpgrade oder dpkg-divert) verwenden, um die Datei in /usr/lib vom Upgrade auszuschließen.

verwandte Informationen