我正在将 Debian init.d 脚本移植到 CentOS。在 Debian 脚本中,它使用 start-stop-daemon 来启动进程。该脚本使用 start-stop-daemon 的 --group 标志在启动守护进程时更改为不同的组 ID。
如何在 CentOS 上的 init 脚本中设置守护进程的 group-id?
答案1
如果 CentOS 没有提供任何更好的方法(这会让我有点惊讶),您可以依靠su
鲜为人知的对应方法sg
:
sg foogroup -c 'exec foodaemon --bar'
答案2
CentOS 初始化脚本使用 /etc/init.d/functions,它声明了大多数其他初始化脚本使用的“守护进程”函数。但守护进程不接受任何组标志。
它最终调用:
$nice runuser -s /bin/bash - $user -c "$corelimit >/dev/null 2>&1 ; $*"
快速/sbin/runuser --help
显示 runuser 接受指定组的标志,因此请尝试:
runuser -g $group; daemon ...
答案3
答案4
很老的问题,但我想我可以补充几分:
您可以简单地使用守护进程调用 /sbin/runuser 的本质上有缺陷的方式进行支付,并将您的用户名设置为如下所示:
echo -n "Starting ${prog}"
daemon --user='nobody -Gnogroup' $exec &
echo
它会起作用的。
它特别脏,但允许您搭载守护进程,而不必直接调用 runuser(或两次)。