安装Slurm配置SSH访问限制时PAM加载libslurm.so.35错误求助
问题根因说明
- 共享库查找不依赖
PATH环境变量:PATH仅用于定位二进制可执行文件,动态链接器加载libslurm.so.35时不会读取该变量,你将/usr/local/lib加入PATH的操作对解决该问题无效。 - SSHD 作为特权服务会忽略
LD_LIBRARY_PATH:即使你配置了全局LD_LIBRARY_PATH变量,sshd 为了防止特权升级风险,会主动清空该环境变量,无法通过该方式指定动态库查找路径。 - 两台服务器表现不同的原因:
- 第二台服务器的
pam_slurm.so启用了加载失败放行的逻辑(通常是配置了allow_on_failure参数),因此依赖库加载失败后直接允许用户登录,看起来功能正常,实际上Slurm的SSH访问限制规则完全未生效,属于异常运行状态。 - 第一台服务器的PAM配置为严格模式,模块加载失败直接拒绝用户访问,因此返回fatal报错。
- 第二台服务器的
解决方案
- 第一步:将Slurm动态库路径加入系统动态链接配置
新建/etc/ld.so.conf.d/slurm.conf文件,写入以下内容:
执行/usr/local/libldconfig命令刷新系统动态链接缓存。 - 第二步:验证依赖加载正常
执行以下命令确认pam_slurm.so的所有依赖都能被正常找到(根据你的实际安装路径调整pam_slurm.so的路径,常见路径包括/lib64/security/pam_slurm.so、/usr/lib/x86_64-linux-gnu/security/pam_slurm.so):
确认输出中没有ldd /lib/security/pam_slurm.sonot found的依赖项。 - 第三步:修复第二台服务器的异常配置
检查第二台服务器/etc/pam.d/sshd文件中pam_slurm.so的加载参数,移除allow_on_failure这类失败放行参数,确保Slurm访问限制规则真实生效,避免未授权用户登录。 - 第四步:验证功能正常
重启sshd服务后,分别使用有运行中作业、无作业的普通用户测试SSH登录,确认访问限制规则符合预期。
内容的提问来源于stack exchange,提问作者b4shyou
相关产品推荐
相关产品推荐

