systemd 서비스가 사용자 홈페이지에 접근할 수 없습니다

systemd 서비스가 사용자 홈페이지에 접근할 수 없습니다

Ubuntu 15.04(및 Debian 8)에서 시스템 서비스를 설정하려고 합니다. 나는 프로그램을 가지고 있습니다 /home/testuser/server/prrserver. 내 systemd 서비스 prrservertestuser:testuser.​​​​ ​명령줄에서 서버를 시작하면 파일을 찾습니다. 무엇이 잘못될 수 있는지 아시나요? 어쩌면 새 프로세스를 포크할 때 새 프로세스가 더 이상 실행되지 않고 어떤 이유로 testuser 디렉터리에 액세스할 수 없는 것일까요(해당 권한이 허용하더라도)?prrserver/home/testuser/server/prrproc/home/testuser/server/dataprrserverprrprocprrproc/home/testuser/server/data/fooprrservertestuser

[Unit]
Description=PRR Server

[Service]
Type=simple
User=testuser
Group=testuser
ExecStart=/home/testuser/server/prrserver

[Install]
WantedBy=multi-user.target

상태는 이렇습니다.

systemctl status prrserver.service
    â prrserver.service - PRR Server
   Loaded: loaded (/lib/systemd/system/prrserver.service; enabled; vendor preset: enabled)
   Active: active (running) since mån 2015-05-25 14:50:42 CEST; 1min 2s ago
 Main PID: 21205 (prrserver)
   CGroup: /system.slice/prrserver.service
           ââ21205 /bin/sh /home/testuser/server/prrserver
           ââ22101 /bin/sh /home/testuser/server/prrproc

maj 25 14:50:42 ubuntu-dev systemd[1]: Started PRR Server.
maj 25 14:50:42 ubuntu-dev systemd[1]: Starting PRR Server...
maj 25 14:50:53 ubuntu-dev prrserver[21205]: PRR Server started listening on port 10239

기본 프로세스가 프로세스를 prrserver시작했고 prrproc문제는 프로세스에 있으므로 prrproc서비스 상태는 녹색입니다.

답변1

이론적으로는 개인 마운트 네임스페이스일 수 있습니다. 이는 안전 기능입니다. 제외해보시면 될 것 같아요

ProtectHome=off

답변2

나 역시 이 질문을 우연히 접했지만 답을 찾지 못했다. 이것이 제가 달성할 수 있었던 것입니다. 그러나 가능하다면 더 나은 대안을 제안해 주십시오.

여기서 설명하는 접근 방식은 @RegedUser00x의 사용 사례에 정확히 맞지는 않지만 올바른 방향으로 안내할 수 있습니다. 특히,내 솔루션은 파일 시스템 권한을 존중하지 않습니다. 이는 아마도 바람직하지 않을 것입니다..

내가 작동하게 할 수 있었던 유일한 방법은 다음과 같은 기능을 추가하는 것이었습니다.CAP_DAC_READ_SEARCH (인용하다).

CAP_DAC_READ_SEARCH파일 읽기 권한 검사와 디렉터리 읽기 및 실행 권한 검사를 우회합니다."

[Unit]
# ...

[Service]
# ...

# Disallow system modification
ProtectSystem=true

# Restrict access to the home folder while only allowing certain folders
ProtectHome=tmpfs
BindPaths=/home/myuser/useful_folder /home/myuser/useful_file

# CAP_DAC_READ_SEARCH Bypass file read permission checks and directory
# read and execute permission checks;
CapabilityBoundingSet= CAP_DAC_READ_SEARCH

[Install]
WantedBy=multi-user.target
# ...

관련 정보