防止普通用户在 PBS 系统之外的集群上运行代码

防止普通用户在 PBS 系统之外的集群上运行代码

在我们的集群中安装了 PBS 批处理系统(torque),我们希望所有用户都通过 qsub 执行他们的作业,以便可以很好地管理 CPU 资源。但是,我们发现集群中的用户仍然可以直接在他们的 bash shell 中运行他们的程序。

我注意到其他一些集群系统限制用户运行自己的二进制文件。他们的命令提示符与完全特权的命令提示符不同。(从~>开始)

qczhan2@barrine1:~>echo $0
-bash

在他们的配置中,用户可以运行基本命令,例如 ls、pwd、cp 和 cd,但是当我们运行自己的二进制文件时,系统会提醒“权限不允许”。

我只是想知道如何配置系统才能这样?

非常感谢。

更新:?我尝试过:

(a) 使用 noexec 选项挂载文件系统,但此方法不允许用户从 pbs 运行其二进制文件。

(b) 使用受限的 bash,但这种方法甚至不允许用户使用“cd”命令。

答案1

集群管理的问题在于,你总会发现有人想欺骗系统。问责制可以大大改变行为。你可能需要考虑改变队列中的优先级或取消问题用户的访问权限。

将 home 挂载为 noexec 似乎是一个不错的主意,但如果您没有一组集中管理的已安装程序,那么这种方法就会失败。我假设用户登录到节点并以交互方式运行命令。我快速谷歌搜索发现 Torque PAM 模块可用于将节点访问限制为当前在该节点上有作业的用户。在这种情况下,他们会窃取自己的 CPU。您也可以拒绝从头节点对计算节点的 ssh 访问,但您仍然需要允许节点之间的 ssh。

如果您处理的是大型单机或单系统映像集群,您可能能够对 CPU 限制进行一些操作。您需要为 CPU 时间分配一个较小的软限制和合理的硬限制。然后必须修改 /etc 中的 bash 配置文件以查找 Torque 设置的 PBS 环境变量并增加用户的软限制以匹配硬限制。当然,用户可以增加他们的软限制并仍然欺骗系统。

脚本中的一点创造力可以发挥很大的作用,但当用户抱怨时,制定一套策略总是有用的。如果你能用脚本识别有问题的进程,你总是可以用 cron 作业杀死它们或对它们进行清理。祝你好运

相关内容