登录Linux实例失败并报“login: Module is unknown”错误如何处理

本文介绍登录Linux实例失败并报“login: Module is unknown”错误时的问题原因和解决方案。

问题描述

登录Linux实例失败并且在secure日志中出现类似以下报错信息。

login: Module is unknown.
login: PAM unable to dlopen(/lib/security/pam_limits.so): /lib/security/pam_limits.so: cannot open shared object file: No such file or directory.

问题原因

每个启用PAM的应用程序,在/etc/pam.d目录中都有对应的同名配置文件。例如,login命令的配置文件是/etc/pam.d/login,可以在相应配置文件中配置具体的策略,如下所示。

文件

功能说明

/etc/pam.d/login

控制台(管理终端)对应配置文件。

/etc/pam.d/sshd

登录对应配置文件。

/etc/pam.d/system-auth

系统全局配置文件。

远程连接登录时,某些启用了PAM的应用程序加载模块失败,导致配置了相应策略的登录方式交互失败。此时,主要查看/etc/pam.d/sshd/etc/pam.d/system-auth文件的配置信息,管理终端的/etc/pam.d/login配置文件出错时,您需要提交工单联系阿里云技术支持。

解决方案

  1. 通过管理终端登录Linux实例。

  2. 参考如下命令,查看PAM配置文件,检查配置文件是否有类似如下配置信息。

    cat [$File_Name]
    说明

    [$File_Name]为相应PAM配置文件的绝对路径。

    具体信息如下所示。 Cat

  3. 执行如下命令,确认不存在pam_limits.so模块文件。

    说明

    在64位系统的Linux实例中,正确路径应该为/lib64/security

    ll /lib/security/pam_limits.so
  4. 执行如下命令,将pam_limits.so模块的路径修改为正确的路径,然后保存并退出。

    vi [$File_Name]
    说明

    [$File_Name]为相应PAM配置文件的绝对路径。

    修改后信息如下所示。

    session    required     /lib64/security/pam_limits.so
  5. 重新通过管理终端登录Linux实例。