我有一个 init.d 脚本,它使用 start-stop-daemon 启动|停止|重新启动守护进程。
此守护进程始终以 root 身份启动。我希望能够指定 init.d 脚本将用于启动守护进程的用户。
尝试使用 start-stop-daemon 的 --user 选项,但是不起作用。
有人可以建议如何做到这一点吗?
答案1
由于 Ubuntu 正在从 sysvinit 转换为 upstart,我建议您将脚本转换为 /etc/init/ 目录中的 upstart 作业。手册页为man 5 init
。
有 setuid 和 setgid 项用于设置运行 upstart 作业的用户和组。
假设您的脚本执行另一个脚本,我想您可以su userid
向其中添加命令以将有效 uid 和 gid 更改为其参数的 uid 和 gid。我不确定su
在 sysvinit 脚本本身中运行是否安全,而无需更改后续 /etc/init.d/ 脚本的这些内容,但也许这样也可以。