我正在开发一个简单的 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/