在使用LSF的时候,通常需要配合用户组来进行一些权限划分,而LSF管理员通常需要手动去编写这些内容。那么有没有一种方法,可以让LSF直接调用系统级的用户组来实现呢?当然有,以下就是一个方法:
如果某位读者/粉丝有其他方式,请文章下留言或者后台留言。
前提1、将Lsfmaster加入到你的认证体系中
无论是ldap,还是nis还是sssd,亦或者是本地passwd认证
需要使用getent命令来获取用户组信息
前提2、使用getent命令获取用户信息,并且确认获取正常
getent group xxxx
3、使用egroup的方式将用户组内容添加到lsf中
脚本如下:
#!/bin/bash
if [ "$1" == "-u" ]; then
group=`getent group $2|awk -F ":" '{print $4}'|tr ',' ' '`
echo $group
fi
释义:
$1是第一个参数, -u 代表的是获取用户信息,这是egroup定义的usergroup_name参数,参考以下链接
https://www.ibm.com/docs/en/spectrum-lsf/10.1.0?topic=groups-configuration-enable-external-host-user
$2是第二个参数 是用户组信息,这是getent的参数
通过getent group 用户组名 ,然后通过awk命令将用户识别出来
识别后的用户是 如下格式:
user1 user2 user3
需要通过tr替换方式将空格替换为逗号,方便lsf识别,替换后格式如下:
user1,user2,user3
这时候,我们就可以将egroup集成到lsf中
4、集成
将egroup文件放在$LSF_SERVERDIR目录下,注意,这个文件不需要后缀,但是实际是一个bash脚本
设置egroup文件权限为755
chmod 755 $LSF_SERVERDIR/egroup
重新读取配置
badmin ckconfig 检查配置是文件
badmin reconfig 重读配置文件
可以ckconfig看到有没有错误等信息,如果没有错误,就直接重读
5、配置用户
在配置好egroup之后,lsf并不能直接调用系统级的group信息,而是根据需求定义
配置lsb.users文件,将我们需要的组添加进去即可
例如:
Begin UserGroup
GROUP_NAME GROUP_MEMBER
Pro1 (!)
End UserGroup
其中,Pro1是需要调用的group,(!)代表使用egroup读取信息,配置之后记得重读配置reconfig
6、测试
通过bugroup命令来测试是否生效
输入bugroup或者bugroup 组名 ,可以看到所有的用户组和组成员信息
网友留言: