linux - 我在 Linux 上的简单守护程序应该在哪个系统用户上默认运行以获得最佳兼容性?

标签 linux daemon convention

我正在开发一个简单的 Linux 网络守护进程,它以 root 身份运行,chroot() 到数据文件目录并删除 root 权限.我喜欢“约定优于配置”的方法,即使我的软件有一个配置来设置它将使用哪个用户和组,我也想使用一个合理的默认值。

我应该使用哪个默认值?用户 nobody 和组 nogroup?用户 daemon 和组 daemon?另一个?

最佳答案

我建议您创建一个以您的服务命名的新用户。

通过这种方式,您可以对其权限进行严格控制,并对您的服务管理的文件进行更严格的控制。

像这样的东西(假设你的守护进程叫做 antoniod):

useradd -s /sbin/nologin antoniod

然后你可以适本地 chown/chmod 你的文件(假设你的二进制文件在/opt/antoniod 中,数据在/var/antoniod-data 中):

  chown -R antoniod:antoniod /opt/antoniod/
  chown -R antoniod:antoniod /var/antoniod-data/
  chmod -R 0550 /opt/antoniod/
  chmod -R 0770 /var/antoniod-data/

如果您需要有关启动脚本本身的建议,请查看特定于发行版的支持,例如daemon 函数 (RedHat) 或 stop-start-daemon (Debian)

HTH

关于linux - 我在 Linux 上的简单守护程序应该在哪个系统用户上默认运行以获得最佳兼容性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7086083/

相关文章:

c++ - 如何在 Linux 上使用 Boost.Filesystem?

linux - 如何仅显示来自 aws s3 ls 命令的文件?

bash - 自守护 bash 脚本

android - 声明在多个 Activity 中使用的常量的最佳实践

Linux 查找未命中目标?

go - Docker 守护进程不启动或重新启动

linux - update-rc.d 禁用/删除不会删除 etc/init.d/rc* 引用

php - 用于长 if 条件的 PSR-2 标准

Linux:如何检测进程是否抖动过多?