zoukankan      html  css  js  c++  java
  • 【转】解决Debian下sudo命令unable to initialize PAM问题

    配置的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能够正常使用了,问题已经解决!

    参考文档:

    《PAM configuration guide for Debian》

    《Quick solution for sudo issue with missing pam configuration file》

    from:https://wangye.org/blog/archives/528/

  • 相关阅读:
    Linux 系统的启动过程
    Oracle中row_number()、rank()、dense_rank() 的区别
    Java 动态打印菱形代码之for循环的使用
    Oracle 体系结构chapter2
    Oracle 11g 概述 chaper1
    go解决ctrl+鼠标左键或F12失效问题
    解决unrecognized import path "golang.org/x/sys/windows"问题
    设计规范
    性能分析
    用IDEA导入项目时,项目中的SpringBoot注解无法识别
  • 原文地址:https://www.cnblogs.com/xuan52rock/p/12486192.html
Copyright © 2011-2022 走看看