Systemd

為什麼我的服務以 root 身份執行

  • January 26, 2019

我有一台舊筆記型電腦連接到我的路由器,作為 linux 機器執行。我安裝了 qbittorrent 以作為遠端 torrent 盒執行(當然是為了下載 linux 發行版),並創建了一個新使用者“qbuser”供其執行。我創建了適當的單元文件,但是當我查看程序列表時,它以 root 身份執行。為什麼會發生這種情況? top 命令的結果

[Unit]
Description=qbittorrent-nox
Documentation=man:qbittorrent-nox
DefaultDependencies=yes
After=network-online.target nss-lookup.target
Before=multi-user.target

[Service]
User=[i][b]qbuser[/b][/i]
Group=[b]qb[/b]
Type=simple
ExecStart=/usr/bin/qbittorrent-nox [-options]
Nice=10
StandardError=null
StandardOutput=null
TimeoutSec=360s

[Install]
WantedBy=multi-user.target

編輯:我修復了單元文件中的語法錯誤,現在它完全失敗了。我仔細檢查了組 qb 和使用者 qbuser 是否存在。這是 systemctl 狀態輸出:

steve@debian-server:~$ sudo systemctl status qbittorrent
● qbittorrent.service - qbittorrent-nox
  Loaded: loaded (/etc/systemd/system/qbittorrent.service; enabled; vendor preset: enabled)
  Active: failed (Result: signal) since Fri 2019-01-25 23:31:07 CST; 6min ago
    Docs: man:qbittorrent-nox
 Process: 994 ExecStart=/usr/bin/qbittorrent-nox (code=killed, signal=ABRT)
Main PID: 994 (code=killed, signal=ABRT)

Jan 25 23:31:07 debian-server systemd[1]: Started qbittorrent-nox.
Jan 25 23:31:07 debian-server systemd[1]: qbittorrent.service: Main process exited, code=killed, status=6/ABRT
Jan 25 23:31:07 debian-server systemd[1]: qbittorrent.service: Unit entered failed state.
Jan 25 23:31:07 debian-server systemd[1]: qbittorrent.service: Failed with result 'signal'.

問題在於您單位中使用者和組名周圍的額外字元。

代替:

[Service]
User=[i][b]qbuser[/b][/i]
Group=[b]qb[/b]

你應該使用:

[Service]
User=qbuser
Group=qb

(假設組qb存在。)

還有[-options]一部分,您可能應該用自己的選項替換它(並刪除方括號。)

如果使用者不存在,systemd 將記錄警告並繼續以 root 身份執行服務。

systemctl status qbittorrent-nox您可以使用該命令查看帶有警告的日誌,或者journalctl -u qbittorrent-nox -e顯示更多日誌。

引用自:https://unix.stackexchange.com/questions/496811