¿Qué hace que un usuario dinámico no pueda leer archivos personales?

¿Qué hace que un usuario dinámico no pueda leer archivos personales?

Estoy usando un servicio DNS llamadoproxy-dnscrypt. Y uso el PPA para instalarlo en Ubuntu 18.04. Aquí está el archivo de servicio 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

Y doy una ruta de archivo /etc/dnscrypt-proxy/blacklist.txten ese dnscrypt-proxy.tomlarchivo como una lista negra que es un enlace simbólico que apunta a mi directorio de inicio /home/user/.dnscrypt-proxy-config/blacklist.txt.

La razón por la que hice esto es que blacklist.txtproviene de Internet, por lo que sólo quiero ponerlo en mi directorio personal para mantener la seguridad.

Pero el problema es que este servicio falla debido a Open blacklist.txt failed: Permission denied.que no entiendo qué parte causa este problema.

Puedo confirmar que este archivo y su enlace simbólico tienen al menos el permiso xx4. Y si coloco ese archivo directamente en /etc/dnscrypt-proxyel directorio, funciona.

Entonces, ¿alguien podría decirme cuál es la causa raíz? Y si quiero seguir el formulario de enlace simbólico, ¿qué debo hacer?

Respuesta1

Lo has ProtectHome=yeshabilitado.

Si es verdadero, los directorios /home, /root y /run/user se vuelven inaccesibles y vacíos para los procesos invocados por esta unidad. Si se establece en "solo lectura", los tres directorios pasan a ser de solo lectura.


Para cambiar esta configuración en un archivo de unidad empaquetado,

  • puede copiar todo el archivo de la unidad /etc/systemd/system/<name>.servicey editarlo allí (/etc tiene prioridad sobre /usr/lib);
  • puede crear un archivo "complementario" /etc/systemd/system/<name>.service.d/whatever.confque simplemente actualice la configuración que necesita:
    [Servicio] 
    ProtectHome=solo lectura
  • puedes usarlo systemctl edit [--full] <name>como atajo para hacer cualquiera de las cosas anteriores automáticamente;
  • como unúltimo recurso, puede usar la configuración de su administrador de paquetes (por ejemplo, NoUpgrade o dpkg-divert) para excluir la actualización del archivo en /usr/lib.

información relacionada