解决Debian下sudo命令unable to initialize PAM问题

!本文可能 超过1年没有更新,今后内容也许不会被维护或者支持,部分内容可能具有时效性,涉及技术细节或者软件使用方面,本人不保证相应的兼容和可操作性。

配置的Debian系统,先是用root账户apt-get install sudo安装sudo命令;然后通过useradd命令建立子账户;最后修改sudoers通过添加相应账户名来开放执行sudo的权限。

本以为做完一切万事大吉,可以切换到子账户痛快的用sudo了。其实不然,当我切换到刚才建立的子账户并执行sudo命令时出现了下面的错误提示:

$ sudo ls
sudo: unable to initialize PAM: No such file or directory

无法初始化PAM,什么是PAM?引用百度百科上的描述:

PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。

实际上这是通过配置模块实现认证的认证模式,PAM的配置文件均位于Debian下/etc/pam.d目录下,通过ls列出该目录当前文件,发现sudo果然在其中。使用cat /etc/pam.d/sudo出现以下信息:

# cat /etc/pam.d/sudo
#%PAM-1.0
 
@include common-auth
@include common-account
@include common-session-noninteractive

这里分别通过@include指令包含了三类共享的认证模块配置文件,这些文件也处于/etc/pam.d目录下,好,问题也来了,我竟然没有找到common-session-noninteractive这个配置文件,联想到刚才PAM错误的No such file or directory消息,基本可以推断是这个配置文件丢失导致PAM无法引导sudo启动。

上网搜索了一下,得知关于common-session-noninteractive配置文件的内容如下:

session		[default=1]						pam_permit.so
session		requisite						pam_deny.so
session		required						pam_permit.so
session		required						pam_unix.so

当然我们可以根据上述内容自己建立一个common-session-noninteractive配置文件,好了,做完这些我们再一次进入子账户,然后尝试sudo ls,呵呵,发现sudo能够正常使用了,问题已经解决!

参考文档:

  1. 《PAM configuration guide for Debian》
  2. 《Quick solution for sudo issue with missing pam configuration file》
若无特别说明,本网站文章均为原创,原则上这些文章不允许转载,但是如果阁下是出于研究学习目的可以转载到阁下的个人博客或者主页,转载遵循创作共同性“署名-非商业性使用-相同方式共享”原则,请转载时注明作者出处谢绝商业性、非署名、采集站、垃圾站或者纯粹为了流量的转载。谢谢合作!
请稍后...

发表评论

电子邮件地址不会被公开。 必填项已用*标注