Linux

Systemd 服務未啟動 - ‘執行步驟生成失敗…權限被拒絕’

  • July 12, 2020

我已經閱讀了類似問題的其他答案(在步驟執行生成失敗…權限被拒絕),但似乎沒有一個適用。

在我將我的比特幣節點升級到 v0.20.0 後,它不再在啟動時啟動,也不再使用systemctl start bitcoind.service.

Journalctl 輸出:-

$ journalctl -xe
...
Jul 12 15:58:22 $HOSTNAME systemd[572]: bitcoind.service: Failed to execute command: Permission denied
Jul 12 15:58:22 $HOSTNAME systemd[572]: bitcoind.service: Failed at step EXEC spawning /usr/bin/bitcoind: Permission denied
-- Subject: Process /usr/bin/bitcoind could not be executed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
-- 
-- The process /usr/bin/bitcoind could not be executed and failed.

我正在使用從我的主目錄軟連結/etc/systemd/system/.

執行檔從我的主目錄軟連結到 /usr/local/bin,因此我在上面連結的上一個答案表明可能適用 SELinux 問題,但我不相信它已啟用:(-bash: getenforce: command not found)。我正在執行 Debian 10.4,並相信它預設被禁用。

$ ls -al /usr/bin/bitcoind 
lrwxrwxrwx 1 root root 34 May  5  2019 /usr/bin/bitcoind -> /home/$MY_NAME/src/bitcoin/src/bitcoind
$ ls -al /home/$MY_NAME/src/bitcoin/src/bitcoind
-rwxr-xr-x 1 bitcoin bitcoin 175058584 Jul  7 20:40 /home/$MY_NAME/src/bitcoin/src/bitcoind

一切都設置為在“比特幣”nologin 使用者下執行:

$ id bitcoin
uid=999(bitcoin) gid=999(bitcoin) groups=999(bitcoin)
$ cat /etc/passwd
...
bitcoin:x:999:999::/home/bitcoin:/bin/false
...

以下是相關目錄的權限:

$ ls -al /etc/bitcoin
total 12
drwx--x---  2 bitcoin bitcoin 4096 Jul 11 22:30 .
drwxr-xr-x 87 root    root    4096 Jul 12 15:58 ..
-rw-rw----  1 bitcoin bitcoin  601 Jul 11 22:30 bitcoin.conf
$ ls -al /var/lib/bitcoind
total 21896
drwx--x---  5 bitcoin bitcoin     4096 Jul  9 11:55 .
drwxr-xr-x 32 root    root        4096 Dec  5  2019 ..
...
$ ls -al /run
total 24
drwxr-xr-x 18 root        root         560 Jul 12 15:59 .
drwxr-xr-x 22 root        root        4096 Jun  2 17:46 ..
...

我很難過 - 非常感謝任何輸入。

編輯 - 二進製文件路徑的權限:

$ ls -al /home/$MY_NAME
total 160
drwxr-xr-x 11 XXX  XXX   4096 Jul 12 15:58 .
drwxr-xr-x  3 root root  4096 May  4  2019 ..
...
drwxr-xr-x  6 XXX  XXX   4096 Oct 25  2019 src
...
$ ls -al /home/$MY_NAME/src
total 24
drwxr-xr-x  6 XXX XXX 4096 Oct 25  2019 .
drwxr-xr-x 11 XXX XXX 4096 Jul 12 15:58 ..
drwxr-xr-x 15 XXX XXX 4096 Jul  7 20:26 bitcoin
...
$ ls -al /home/$MY_NAME/src/bitcoin
total 1976
drwxr-xr-x 15 XXX XXX    4096 Jul  7 20:26 .
drwxr-xr-x  6 XXX XXX    4096 Oct 25  2019 ..
...
drwxr-xr-x 28 XXX XXX   12288 Jul  7 21:01 src
...
$ ls -al /home/$MY_NAME/src/bitcoin/src
total 936796
drwxr-xr-x 28 XXX     XXX         12288 Jul  7 21:01 .
drwxr-xr-x 15 XXX     XXX          4096 Jul  7 20:26 ..
...
-rwxr-xr-x  1 bitcoin bitcoin 175058584 Jul  7 20:40 bitcoind
...

在 中正確安裝二進製文件/usr/bin,因為它應該已經安裝,然後重試。

systemd 單元對服務做了很多限制,被拒絕的一件事是訪問使用者主目錄。當作為系統服務執行時,它不需要訪問使用者主目錄。

引用自:https://serverfault.com/questions/1024958