为了获得最佳兼容性,我在Linux上的简单守护进程应该在哪个系统用户上作为默认值运行



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

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

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

这样你就可以严格控制它的权限,也可以严格控制由你的服务管理的文件。

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

useradd -s /sbin/nologin antoniod

然后你可以适当地选择/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

相关内容

最新更新