
저는 다음과 같은 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 디렉토리는 이 장치에서 호출되는 프로세스에 대해 액세스할 수 없게 되고 비어 있게 됩니다. "읽기 전용"으로 설정하면 대신 세 개의 디렉터리가 읽기 전용으로 설정됩니다.
패키지된 유닛 파일에서 이 설정을 변경하려면,
- 전체 장치 파일을 복사하여
/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의 파일이 업그레이드되지 않도록 제외할 수 있습니다.