PAM(Pluggable Authentication Modules)是 Linux 系统上用于为应用与服务提供动态认证支持的组件。系统的某些配置可能导致所配置的 PAM 认证过程失败,从而使 OCP-Agent 的 pos_proxy 进程执行命令失败。
问题现象
当 OCP-Agent 2.4.0 及以上版本运行在 redhat、centos、alios 7 等 Linux 操作系统时,
-
添加主机,子任务失败且日志包含
sudo: pam_open_session: Permission denied
报错信息。
-
部署集群,子任务失败且日志包含
sudo: pam_open_session: Permission denied
报错信息。
-
部署 OBProxy ,某些子任务失败且日志包含
sudo: pam_open_session: Permission denied
报错信息。
可能原因
系统中所配置的 Session 类型的 PAM 模块在验证相关状态时失败,可能原因如下:
解决方法
-
使用 root 用户登录操作系统。
-
打开
/etc/sudoers
文件:
vim /etc/sudoers
-
修改 root 与 admin 用户的权限,并保存文件:
root ALL=(ALL) ALLadmin ALL=(ALL) ALL
-
重启 OCP-Agent:
export PYTHONPATH=/home/admin/ocp_agent/libs && cd /home/admin/ocp_agent && ./ocp_agentd.py stop basesleep 10export PYTHONPATH=/home/admin/ocp_agent/libs && cd /home/admin/ocp_agent && ./ocp_agentd.py start base
-
使用 root 用户登录操作系统。
-
查看内核允许的进程最大打开文件数。
cat /proc/sys/fs/nr_open
-
进入
/etc/security/limits.conf
文件,配置小于
/proc/sys/fs/nr_open
的文件打开数限制:
# 假设655360小于/proc/sys/fs/nr_opencat >> /etc/security/limits.conf <<EOF* soft nofile 655360* hard nofile 655360EOF
-
重启 OCP-Agent:
export PYTHONPATH=/home/admin/ocp_agent/libs && cd /home/admin/ocp_agent && ./ocp_agentd.py stop basesleep 10export PYTHONPATH=/home/admin/ocp_agent/libs && cd /home/admin/ocp_agent && ./ocp_agentd.py start base
-
使用 root 用户登录操作系统。
-
打开 PAM 配置文件:
vim /etc/pam.d/sudo
-
将以下行删除,并保存文件:
session required pam_limits.so
-
重启 OCP-Agent:
export PYTHONPATH=/home/admin/ocp_agent/libs && cd /home/admin/ocp_agent && ./ocp_agentd.py stop basesleep 10export PYTHONPATH=/home/admin/ocp_agent/libs && cd /home/admin/ocp_agent && ./ocp_agentd.py start base