我想编写一个在启动后、登录前启动的守护程序,它通过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=
指令指定要运行二进制文件的用户。只需添加到文件的
[Service]
部分.service
。有关更多信息,systemd
请参阅文档。