我想写一个守护进程启动后、登录前启动,进行后台通信USB-rawhid与Arduino微控制器。
我想以非 root 身份运行这个守护进程。
我还想避免仅为此守护进程创建新用户。
是否有任何系统通用用户可以(重新)用于此目的?
我在我的列表中看到/etc/shadow
一个用户,名为daemon
但是...
# su daemon
This account is currently not available.
我目前的目标是:
如果这个通用用户在默认的 Debian 和 Ubuntu 安装中可用,那就太好了。
答案1
正如@Bib 提到的,尝试切换到该daemon
用户时收到的错误消息是因为该用户的登录 shell 设置为/sbin/nologin
.这样一来,任何人都无法以该用户的身份在控制台上工作,这是合理的,以避免对以该用户身份运行的服务产生不必要的干扰。这并不意味着systemd
无法使用该用户的 UID 运行程序,因此您可以daemon
按照您想要的方式使用该用户。
但请注意,虽然看起来用户daemon
和组最初是正是为了这个目的而引入的,现在实际上是推荐的方法,为您要在计算机上设置的自定义服务创建专用的“低特权”用户。
由于您明确声明要使用 运行服务systemd
,因此您可以使用该User=
指令来指定运行二进制文件的用户。只需添加
User=daemon
到[Service]
您的文件的部分.service
。看文档systemd
了解更多信息。