Daemon
自定義守護程序:我可以使用哪個使用者來執行,以避免使用 root?
我想編寫一個在啟動後、登錄前啟動的守護程序,它通過USB-rawhid與Arduino 微控制器進行後台通信。
我想以非 root 身份執行這個守護程序。
我也想避免創建一個新使用者,只是為了這個守護程序。
是否有任何系統通用使用者可以(重新)用於此目的?
我在
/etc/shadow
列出的使用者中看到,命名daemon
但…# su daemon This account is currently not available.
我目前的目標是:
- Ubuntu 21.04
systemd
- 本機程式碼,C 語言,為 amd64 編譯
如果這個通用使用者可以在預設的 Debian 和 Ubuntu 安裝中使用,那將是一個獎勵。
正如@Bib 所提到的,您在嘗試切換到
daemon
使用者時收到的錯誤消息是因為該使用者的登錄 shell 設置為/sbin/nologin
. 這樣就沒有人可以在控制台上作為該使用者工作,這是合理的,以避免對作為該使用者操作的服務產生不必要的干擾。這並不意味著systemd
無法使用該使用者的 UID 執行程序,因此您可以daemon
按照您想要的方式使用該使用者。但是請注意,雖然最初引入
daemon
使用者和組的目的似乎是為了達到這個目的,但實際上現在推薦的方法是為您要在電腦上設置的自定義服務創建專用的“低權限”使用者。由於您明確聲明要使用 執行服務
systemd
,因此可以使用該User=
指令指定要執行二進製文件的使用者。只需添加User=daemon
到文件的
[Service]
部分.service
。有關更多資訊,systemd
請參閱文件。