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

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

刚开始,我基于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

罗里吧嗦说了半天,主要分享一下这个奇葩的案例和解决过程。当搜索引擎都找不到的时候,那么恭喜你成为了第一个吃螃蟹的人,有了造福互联网的机会,赶紧解决问题再分享吧。。。
目前我开发的帐号管理系统运行良好,后续有时间再整理分享一下,也许有人需要,敬请期待!

 

原文来自:http://zhangge.net/5077.html

时间: 2025-01-29 20:02:25

Linux修改密码报PAM authentication failed错误解决办法的相关文章

svn上传报Authorization failed错误解决办法

svn上传文件时没有弹出用户登录界面,而是直接报Authorization failed错误.出现该问题基本都是三个配置文件的问题,下面把这个文件列出来 svnserve.conf配置文件中的 [general] anon-access = read auth-access = write password-db = passwd authz-db = authz 注意:这几个配置项都需要在[general]配置项下. passwd配置文件 [users] admin=123 authz配置文件

整理linux编译link出undefined reference’dlclose’错误解决办法

对于linux我持中立态度,而且我认为linux这么多年发展比较慢的原因是因为桌面化做的不好或者不够好,所以我比较偏爱ubuntu. 由于以前项目是makefile的,我个人不是很喜欢makefile,因为他看起来比较费劲,而且编译完成后出现问题调试是个大难题,不是每个人都精通gdb,而且vi上手比较难.所以将工程转为codeblocks的cbp,本来想使用cmake的,但是觉得要写的比较多,于是作罢,毕竟代码不是跨平台的,windows下没法用. 编译完link的时候,报了一句undefine

教育技术服务平台【用户名/密码】错误解决办法

  教育技术服务平台这款软件只能通过手机客户端注册,电脑客户端不提供注册服务,下载手机版教育技术服务平台运行点击"家长注册"根据提示一步步接下去即可注册成功! 注册码要通过班主任获得,已注册能没显示平台号:先输入您孩名字接着输入注册码再输入您昵称选择您与孩关系输入密码能显示平台号! 教育技术服务平台[用户名/密码]错误解决办法: 一.用户名或者密码输入错误! 这个需要用户重新检查一下自己输入的用户名和密码,是否哪里输入错误了,少输入了一个字母或数字?或者多输入了一个字母或数字,或者大小

php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法[原创]_php技巧

本文分析了php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法,分享给大家供大家参考,具体如下: 一.问题: 今天重装了本机php开发环境,使用了WampServer2.1a-x32集成安装包(之前使用的是appserv-win32-2.5.9集成安装包).顺便安装多版本php运行环境. 安装过程这里不再赘述.(此处wampserver安装在C盘根目录下)安装完毕后因为默认安装没有设置mysql密码,这里就修改了一下mysql密码(具体方法可参考前面的文章<如何修

hadoop 集群常见错误解决办法

hadoop 集群常见错误解决办法: (一)启动hadoop集群时易出现的错误: 1.   错误现象:java.net.NoRouteToHostException: No route to host.    原因:master服务器上的防火墙没有关闭.    解决方法: 在master上关闭防火墙: chkconfig iptables off. 2.    错误现象:org.apache.hadoop.ipc.RPC: Server at JMN/10.22.1.203:9000 not a

mysql中使用过程中常见错误解决办法收集

1.Mysql errono 1005 : 主外键不是完全一致 , 请检查如下几点:       a.字段是否存在       b.类型是否一致(注意unsigned , powerdesign 生成问题)       c.数据库引擎是否一致       d.字符编码是否一致       e.windows平台下注意修改lower_case_table_names = 0, windows本身不区分文件大小写,改为0之后就区分了可能造成找不到引用的表  2.Mysql errono  121: 

azure-想问一下,vm的root密码忘了,有什么解决办法

问题描述 想问一下,vm的root密码忘了,有什么解决办法 想问一下,vm的root密码忘了,有什么解决办法? 解决方案 您好, 请问你的虚拟机运行的是什么操作系统呢?如果是Windows Server并且你在创建虚拟机的时候安装了VM代理的话,你可以通过Azure PowerShell的命令来修改你创建虚拟机时所定义的账户的密码: 首先,请你查看是否安装了VM agent : (Get-AzureVM -ServiceName xxx -Name xxx).VM.ProvisionGuestA

Mysql5.6的1755错误解决办法

遇到的问题: 最近遇到一个Mysql5.6的主备复制问题,这个错误编号为1755: 1 Cannot execute the current event group in the parallel mode 2 ......此处省略...... 3 Reason: the event is a part of a group that is unsupported in the parallel execution mode. 从这个错误的翻译来看: 翻译:不能在并行模式下执行当前的事件组.事件

Android DaggerActivityComponent错误解决办法详解

Android DaggerActivityComponent错误解决办法详解 在使用dagger2的过程中,如果修改了某个类的内容,第一次编译运行时总会报错:错误: 找不到符号 符号: 类 DaggerActivityComponent 位置: 程序包 com--的错误,然后再重新编译一次,才会正常运行,经过仔细的检查终于找到问题的根源: 错误的原因是build.gradle(Module:app)引入'com.google.dagger:dagger-compiler:2.0.2'使用的是c