标题已经说明了一切...
我们使用 SGE/OGE 将作业提交给一组工作节点,然后这些节点会对特定设备执行操作。已创建的用于操作此设备的程序和脚本依赖于以 root 身份运行。我希望 SGE 能够以考虑到用户、组、项目等的方式处理资源分配,但我还需要以 root 权限运行实际作业。
我已经读过 如何在 gridengine 中以 root 身份运行序言脚本?看看是否有相关内容,但似乎 SGE 专门为 prolog 和 epilog 类型的操作提供了“user@”类型的规范。作业本身是否有类似的功能?
我知道 su/sudo 方法,但这在这种环境下实际上不起作用,因为 sudoers 文件不是全局管理的(即我必须在许多机器上将一整组用户添加到 /etc/sudoers)。我目前正在研究一种 setuid 类型的解决方案,但如果 SGE 为我提供了一种方法来声明特定作业(或特定队列中的作业)始终需要以特定用户的权限运行,那么这肯定是一种不必要的解决方法。
答案1
Gridengine 似乎没有提供任何工具来配置以 root 或任何其他用户身份运行特定作业。
我认为实现这一点的一种方法是创建一个单独的队列,并将该队列的 shell 设置为以 root 身份启动 shell 的命令。然后,您需要为该队列创建一个强制复合体,以防止其他作业在其中运行,以及您做想要在其中奔跑就必须要求那么复杂。