操作系统

解决Linux修改密码报PAM authentication failed错误

Jager · 12月12日 · 2015年 · · 11701次已读

最近接到一个运维开发任务,需要开发一个帐号管理系统,对手头三千多台 Linux 服务器的 root 帐号进行批量系统的管理,实现定期修改 root 为随机密码并加密存储,并向运维管理 WEB 前台提供密码查询解密接口等功能。解决Linux修改密码报PAM authentication failed错误

刚开始,我基于 php+ssh2_exec 开发了一套雏形。基本功能都实现了,结果老大说这里的运维就我稍微会点 php,后面可不好维护。本来也被我说服了,因为写都写好了,难道要重构?

后面线上测试发现,公司有部分系系统接入了 ldap 鉴权,php 的 ssh2_exec 就无法工作了,返回登陆失败的错误。

不得已,最后苦逼的用 python 将这个系统重构了一遍,并实现了多线程模式,因为不太会 python 的 cgi 框架,就用 php 搭的 api 接口,到此为止,基本全部搞定了。

在线上测试了几天后,发现总是有一台服务器要卡半天,登陆校验日志倒是成功的,但总是卡在修改密码那一步。

于是,print 一下过程,发现 chpasswd 改密码这一步报错了!导致 expect 卡住了。

看了下错误信息是:

chpasswd: PAM authentication failed

实际登陆这台机器,执行 chpasswd,发现也是报这个错误。

试着执行 passwd,也报错了:

passwd: pam_start() failed, error 26

搜了半天,也看了半天的洋文案例,都没找到一个贴切的解决办法。最终,我看到有一篇类似的案例,他是通过检查 /var/log/secure 日志文件找到的错误。

于是,我也试着碰碰运气,发现还真有记录!

在 /var/log/secure 中,发现我在执行 chpasswd 命令是会提示找不到/etc/pam.conf 文件。于是到其他系统上去看有没有这个文件,发现也没有的。

最终,我无奈之下,对比了 2 个系统的/etc 目录,让我发现了猫腻!不知道哪个无聊的人把这个系统的/etc/pam.d 给重命名为 pam.d_bak 了!!我去你 XXX,浪费我半天时间。

直接 mv pam.d_bak pam.d,然后就能够执行 echo 'root:newpassword'|chpasswd 来修改密码了。

这种奇葩的原因并不多见,所以出了问题不一定能在搜索引擎得到答案。

不过,我写这篇文章的时候,特意把 pam.d 再一次重命名,chpasswd 还是报一样的错,但是 passwd 报错却变成了:

passwd: Permission denied

罗里吧嗦说了半天,主要分享一下这个奇葩的案例和解决过程。当搜索引擎都找不到的时候,那么恭喜你成为了第一个吃螃蟹的人,有了造福互联网的机会,赶紧解决问题再分享吧。。。

目前我开发的帐号管理系统运行良好,后续有时间再整理分享一下,也许有人需要,敬请期待!

25 条回应
  1. aunsen 2015-12-13 · 12:37

    牛逼的人干牛逼的事!

    • avatar
      Jager 2015-12-13 · 14:20

      :arrow: 就是混口饭吃。。。你那浏览器折腾得牛逼多了。

      • 物联网说 2015-12-18 · 14:24

        说的这个http://sunbox.cc/博客,你不行去看看,反正我这里上不去

  2. aunsen 2015-12-13 · 15:23

    来看看IP到哪儿了,表打我! :grin:

    • 物联网说 2015-12-18 · 14:05

      在我这里只能打开你网站的首页,再往里走就白屏了太卡了 :sad:

      • avatar
        Jager 2015-12-18 · 14:10

        说的是我的博客?

  3. GoGo 2015-12-14 · 11:17

    想知道博主实现这个功能用了多久,不算debug PAM这个的话。

    • avatar
      Jager 2015-12-14 · 13:09

      PHP1天,python重构2天,1星期内稳定上线。

      • GoGo 2015-12-18 · 15:12

        你果然是高手 :mrgreen:

  4. 猫客工作室 2015-12-15 · 22:55

    不错的博客,欢迎大家找我交流推广经验!

  5. 猫客工作室 2015-12-16 · 15:13

    很好的贴 欢迎大家一起交流

  6. 我要网赚 2015-12-17 · 23:06

    你蛮有名气的啊

  7. 青年网 2015-12-18 · 21:26

    感谢分享、学习了

  8. 我要网赚 2015-12-19 · 19:29

    前来报到

  9. 郑州SEO优化 2015-12-20 · 13:38

    博主的博客越来越厉害了哈

  10. 外文网站 2015-12-22 · 11:03

    博主,非常感谢您,学到很多干活知识,能否加你qq,和你交流下,感谢!

  11. 中国淋浴房著名品牌 2015-12-23 · 16:05

    逛逛

  12. 大家学分享站 2015-12-24 · 14:41

    文章很不错的。

  13. app开发公司 2015-12-24 · 17:33

    路过,支持一下

  14. SG.明 2015-12-25 · 23:24

    :razz: 大神,请问你那导航条在手机上显示的【导航】【搜索】;这个是怎么做到的,研究好长时间了一直没弄明白,可以指点一下么~

    • avatar
      Jager 2016-1-17 · 0:31

      老版本就是这样显示的

  15. 大奔来袭 2015-12-28 · 12:38

    讲得很不错哦

  16. osblog 2015-12-29 · 11:50

    厉害啊,挺不错啊

  17. 户外公园椅 2015-12-29 · 21:30

    现在用的这个主机,不过一般对着不了解

  18. gitchu 2016-5-30 · 0:03

    期待看到博主的账号管理系统