自定义守护进程:我可以使用哪个用户来运行,以避免使用 root?

自定义守护进程:我可以使用哪个用户来运行,以避免使用 root?

我想写一个守护进程启动后、登录前启动,进行后台通信USB-rawhidArduino微控制器

我想以非 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了解更多信息。

相关内容