我正在使用Slurm
。我希望用户仅访问自己的/home/
目录(或执行工作的目录),sudo
用户安装的ubuntu软件包以及二进制文件用户/bin
,例如:ls
,cat
,rm
等。
我不希望每个用户都可以read/write
访问其他用户的文件和重要文件,例如/etc/passwd
。
我观察到,当任何slurm-job
在新用户下运行时,它可以read
在根(/
)目录下的所有文件,例如/etc/passwd
。
从答案Is it possible to force SLURM to have access to only job's running folder and not alter any other file?的起点开始,建议使用chroot
:
如果您想确保您的工作没有办法在 特定目录,您可以在工作中使用
chroot
命令 提交脚本,但似乎有点奇怪并且较不易于管理 UNIX权限。
chroot()
系统调用将进程的根目录更改为 路径名指定的目录
是否可以使用chroot()-jailed
在chroot环境(Slurm
)中运行用户的作业?
作为一种替代解决方案,我控制了文件访问是通过UNIX权限进行的,其中作业只能在提交用户具有写入权限的地方进行写入,请参阅: slurm: How to submit a job under another user and prevent to read other users' files?
答案 0 :(得分:1)
我不希望每个用户都对其他用户的文件和重要文件(例如/ etc / passwd)具有任何读/写访问权限。
通常允许用户阅读/etc/passwd
,这对于许多操作都是必要的。如今,最初存储在/etc/passwd
中的敏感信息(例如密码哈希)现在已存储在所有Linux发行版的/etc/shadown
中。
我观察到,当在新用户下运行任何slurm-job时,它可以读取根(/)目录下的所有文件,例如/ etc / passwd。
同样,普通用户能够读取/
中的文件是正常的;它使他们能够访问已安装的软件,查看有关其过程的信息等。
/root
应该只能读取root
。
对于其他用户的文件,它们通常位于/home
中,因此请确保/home
中的子目录为700
归其各自用户所有。 / p>
/etc
中的文件也可能包含敏感信息,但是程序包管理器通常会确保对此文件设置了适当的权限。
如果您担心隐私,还应该配置Slurm以禁用节点共享并保持会计信息私有。查看更多信息here。
答案 1 :(得分:0)
您不必使用chroot
即可实现所需的功能,因为所需的功能是正常的行为。因此,我认为您的设置有问题。默认情况下,运行SlurmdUser
守护程序的配置参数slurmd
为root
,但即使在这种情况下,也应拥有由slurmd
开始的作业本身由提交作业的用户。然后,用户只能对具有适当权限的资源(例如其自己的home
目录)进行读写访问。
如上所述,我实际上没有在Ubuntun上使用Slurm的任何经验,因此那里确实确实有些问题。