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