systemd: 파일에 쓸 때 perms를 000으로 설정했습니다.

systemd: 파일에 쓸 때 perms를 000으로 설정했습니다.

홍수(v2.1.1)를 실행하기 위해 systemd 서비스를 만들었습니다. Deluged는 파일을 쓸 때 권한을 권한 없음으로 설정하지만 UMask는 777로 설정됩니다. 따라서 런타임 시 작성하는 구성 및 세션 상태 파일은 권한 없음으로 변경됩니다. 서비스를 중지하면 세션 상태를 쓰려고 시도하고 실패하므로(로그에서 볼 수 있듯이) 세션 상태와 구성 변경 사항이 저장되지 않습니다.

이 동작은 Linux Mint 21.3 및 Ubuntu Server 22.04.4를 새로 설치한 여러 환경에서 일관되게 발생하며, 이 서비스를 만들 때 Deluge의 설명서를 따랐지만 이 문제에 대한 보고는 본 적이 없습니다. 내가 뭘 잘못했나요?

/etc/systemd/system/deluged.service의 내용:

[Unit]
Description=Deluge Bittorrent Client Daemon
Documentation=man:deluged
# Start after network and specified mounts are available, see mount UNIT names in sudo systemctl -t>
After=network-online.target
# Won't start if these mount points are not connected
Requires=mnt-one.mount mnt-two.mount
# Stops service if mount points disconnect
BindsTo=mnt-one.mount mnt-two.mount

[Service]
Type=simple
User=deluge
Group=deluge
UMask=777

#with the custom logging
ExecStart=/usr/bin/deluged -d -l /var/log/deluge/daemon.log -L warning

# Time to wait before forcefully stopped.
TimeoutStopSec=300

[Install]
# Start the service when the mount points come back online
WantedBy=multi-user.target mnt-one.mount mnt-two.mount

Deluged의 작업 디렉터리(즉, Deluge 사용자의 홈 디렉터리)의 예는 세션이 중지된 후 session.state 파일에 권한이 없음을 보여줍니다(런타임에 구성을 편집하면 conf 파일도 동일한 권한을 갖게 됩니다).

ls -al /var/lib/deluge/.config/deluge
total 3848
drwxrwxrwx 7 deluge deluge    4096 Feb 23 08:41 ./
drwxr-x--- 4 deluge deluge    4096 Feb 20 21:08 ../
drwxrwxrwx 2 deluge deluge    4096 Feb 23 08:41 archive/
-rwxrwxrwx 1 deluge deluge      56 Jan 28 00:05 auth*
-rwxrwxrwx 1 deluge deluge      75 Feb 23 08:08 autoadd.conf*
-rwxrwxrwx 1 deluge deluge      75 Feb 22 16:59 autoadd.conf.bak*
-rwxrwxrwx 1 deluge deluge     367 Feb 23 08:08 blocklist.conf*
-rwxrwxrwx 1 deluge deluge     367 Feb 22 17:12 blocklist.conf.bak*
-rwxrwxrwx 1 deluge deluge 3653994 Feb 22 17:12 blocklist.download*
-rwxrwxrwx 1 deluge deluge    2807 Feb 23 08:08 core.conf*
-rwxrwxrwx 1 deluge deluge    2806 Feb 23 08:08 core.conf.bak*
-rwxrwxrwx 1 deluge deluge       0 Jan 28 00:10 deluged.log*
---------- 1 deluge deluge      11 Feb 23 08:41 deluged.pid
-rwxrwxrwx 1 deluge deluge      56 Feb 23 08:08 execute.conf*
-rwxrwxrwx 1 deluge deluge     112 Feb 22 17:17 extractor.conf*
-rwxrwxrwx 1 deluge deluge     112 Feb 22 17:17 extractor.conf.bak*
-rwxrwxrwx 1 deluge deluge     252 Feb 21 07:20 hostlist.conf*
-rwxrwxrwx 1 deluge deluge     252 Jan 28 00:05 hostlist.conf.bak*
drwxrwxrwx 2 deluge deluge    4096 Jan 28 00:05 icons/
drwxrwxrwx 2 deluge deluge    4096 Jan 28 00:05 plugins/
-rwxrwxrwx 1 deluge deluge    3183 Feb 22 17:17 scheduler.conf*
-rwxrwxrwx 1 deluge deluge    3183 Feb 22 17:17 scheduler.conf.bak*
---------- 1 deluge deluge    3658 Feb 23 08:34 session.state
-rwxrwxrwx 1 deluge deluge    4386 Feb 22 16:41 session.state.bak*
drwxrwxrwx 2 deluge deluge    4096 Feb 22 16:33 ssl/
drwxrwxrwx 2 deluge deluge    4096 Feb 23 08:44 state/
-rwxrwxrwx 1 deluge deluge   84806 Feb 23 08:08 stats.totals*
-rwxrwxrwx 1 deluge deluge   84810 Feb 23 08:07 stats.totals.bak*
-rw------- 1 deluge deluge    1323 Feb 23 08:41 web.conf
-rw------- 1 deluge deluge    1323 Feb 23 08:34 web.conf.bak

내 질문:

  • 내가 뭘 잘못했나요? 나는 수년 동안 systemd를 사용해 왔지만 이것을 수행하는 프로그램을 본 적이 없습니다. 설명서에 따라 서비스를 만들고 시스템을 설정했지만 동일한 문제가 있는 사람을 찾을 수 없습니다. 나는 또한 갑자기 이 문제에 직면하기 전에 오랫동안 이 문제와 테스트한 모든 시스템에서 100% 재현성을 달성하는 방법에 대해 연구해 왔습니다.
  • 어떤 프로그램이 파일의 권한을 언제 변경했는지 알려줄 수 있는 Linux 도구가 있습니까?

답변1

해결 방법: UMask와 권한은 동일한 것이 아니라 허용되지 않는 작업 목록인 반면 권한은 허용되는 작업 목록이라는 점을 잊었습니다. deluge.sessions의 수정된 UMask를 사용하여 007로 새 시스템을 구축했고 문제가 해결되었습니다.

관련 정보