SLURM提供了通过PAM插件限制普通用户随意登陆计算节点的功能。
(一)配置过程
(1)编译Slurm时指定编译参数--enable-pam。
(2)在slurm源码安装目录contribs/pam_slurm_adopt/目录下make && make install。
然后将生成的pam_slurm_adopt.a, pam_slurm_adopt.la和 pam_slurm_adopt.so 放到/lib64/security
(3)编辑SSHD的PAM配置文件/etc/pam.d/sshd
...
auth include password-auth
#newadd
account sufficient pam_listfile.so item=user sense=allow file=/etc/ssh/allowed_users onerr=fail
#newadd
account required pam_slurm_adopt.so
...
(4)编辑SSHD用户白名单文件。在步骤3完成后,所有用户(root除外)在没有作业运行的情况下是不能ssh登陆计算节点的。如果想对某些用户进行进行排除(即不受pam配置限制),可以在/etc/ssh/allowed_users(该文件位置由步骤3指定)中配置:
# cat /etc/ssh/allowed_users
root
youruser
然后 chmod 600 /etc/ssh/allowed_users 。
(5)在/etc/pam.d/system-auth和/etc/pam.d/password-auth中注释掉pam_localuser.so和pam_systemd.so
#account sufficient pam_localuser.so
#-session optional pam_systemd.so
(6)Slurm配置:
slurm.conf配置文件:
PrologFlags=CONTAIN
TaskPlugin=task/cgroup
ProctrackType=proctrack/cgroup
cgroup.conf配置文件:
CgroupAutomount=yes
ConstrainCores=yes
(7)其他配置
/etc/ssh/sshd_config确保UsePAM yes
禁用selinux
(8)注意事项:
所有节点同步/lib64/security/pam_slurm_adopt.a、/lib64/security/pam_slurm_adopt.la和/lib64/security/pam_slurm_adopt.so三个库。
所有节点同步/etc/pam.d/sshd、/etc/pam.d/system-auth、/etc/pam.d/password-auth三个配置文件和白名单文件/etc/ssh/allowed_users,然后重启sshd服务。
(二)测试结果
(1)已验证pam_slurm_adopt功能可以限制本地用户和ldap用户只能登陆自己有作业运行的计算节点。此外不管是作业被杀掉还是正常结束,ssh连接都会断掉。
(2)已验证白名单/etc/ssh/allowed_users内的用户可以登录到任意计算节点,而未加入白名单的用户只能登陆有自己作业运行的节点。
PS:
Slurm China社区,群里有很多大牛,感兴趣的同学可以加入。