我需要一个由 root 运行的工具,通过切换到另一个用户来放弃 root 权限,然后执行由命令行参数指定的另一个程序。用例:在非特权用户下从(自定义)初始化脚本运行某些程序。
我想避免使用su
或sudo
因为它们有不同的用途(为非特权用户提供成为 root 的交互方式),比此任务所需的要复杂得多,根据各种配置文件改变行为,并将内容写入系统日志。
有这样的工具可用吗?
更新:我找到了深藏的答案在 stackoverflow 上:它setuidgid
来自 daemontools(或s6-setuidgid
来自 s6)。显然,daemontools 的作者一些su
还有不用于运行守护进程的原因。
唯一的缺点是setuidgid
会随其启动的程序一起运行。理想情况下,我更希望它exec
代替spawn
/fork
以保持进程表更清洁,但这不是什么大问题。
答案1
runuser
用于此目的并且其通常从初始化脚本运行。
它基本上su
没有 PAM 集成。