是否可以使用 Slurm 在 chroot 环境中 运行 用户的工作

Is it possible to run users' jobs in chroot environment using Slurm

我正在使用 Slurm。我希望用户只能访问他们自己的 /home/ 目录(或他们执行工作的目录)、ubuntu 由 sudo 用户安装的软件包和二进制文件用户 /bin,例如:lscatrm

我不希望每个用户都read/write 访问其他用户的文件和重要文件,例如/etc/passwd

我观察到当一个新用户下的任何slurm-job 运行时,它可以read root (/)目录下的所有文件如/etc/passwd.


的答案出发,已经推荐使用chroot:

If you want to make sure your job has no way to write outside of a specific directory, you can use the chroot command in your job submission script, but that seems a bit odd and less easy to manage than UNIX permissions.


The chroot() system call changes the process’s root directory to the directory specified by pathname

是否可以使用 Slurm 在 chroot 环境 (chroot()-jailed) 中 运行 用户的作业?


作为替代解决方案,我通过UNIX权限控制文件访问,其中作业只能在提交用户有写入权限的地方写入,请参见:

您不必使用 chroot 来实现您想要的,因为您想要的是正常行为。因此,我认为您的设置有问题。运行 slurmd 守护程序的配置参数 SlurmdUser 默认为 root,但即使在那种情况下,由 slurmd 启动的作业本身也应该拥有由提交作业的用户。然后用户只能对具有适当权限的资源进行读写访问,例如他们自己的 home 目录。

综上所述,其实我并没有在 Ubuntun 上使用 Slurm 的经验,所以这里可能确实有些问题。

I do not want each user to have any read/write access to the other users' files and important files such as /etc/passwd.

允许用户阅读是正常的/etc/passwd,很多操作都是必须的。密码哈希等敏感信息最初存储在 /etc/passwd 中,如今在所有 Linux 发行版中都存储在 /etc/shadown 中。

I observe that when any slurm-job runs under a new user, it can read all files under the root (/) directory such as /etc/passwd.

同样,普通用户能够读取 / 中的文件是正常的;它使他们能够访问已安装的软件、查看有关其进程的信息等。

只有 /root 应该只能被 root 读取。

至于其他用户的文件,它们通常位于 /home 中,因此请确保 /home 中的子目录 700 由其各自的用户拥有.

/etc 中的文件也可能包含敏感信息,但包管理器通常会确保对这些文件设置适当的权限。

如果您关心隐私,您还应该配置 Slurm 以禁用节点共享并保持记帐信息的私密性。查看更多信息 here