今天有同事打电话来说有台机器不能更改root密码,而且root用户也没密码,于是普通用户登录上去,su到root,执行passwd命令
root@[/root]$ passwd
结果就一直挂在这了,没反应了,看日志也没消息。看见root用户后的提示符是$不是#,看是不是这里出了问题,查看下PS1变量
root@[/root]$ echo $PS1
root@[`pwd`]$
一切正常 ,没问题。
然后查看/etc/passwd 和/etc/shadow,一切正常,文件没问题。开始同事说是root用户不能改密码,于是我试了下别的用户,也是同样的效果。
然后试试:
mas@[/mas]$ echo "redhat"|passwd --stdin mas
z&rbbc]r#@^V
mas@[/mas]$
居然出现这样一堆东西。。。。
突然想了下,是不是别人把passwd这个文件的内容给改了,于是执行习惯性的执行下which passwd。。问题找到了。。
root@[/root]$ which passwd
/mas/bin/passwd ---很明显位置不对啊。
root@[/root]$
根本就不是系统的passwd命令,于是在查看环境变量
root@[/root]$ echo $PATH
/mas/bin:/app/jdk1.5.0_15/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
root@[/root]$ ls -l /mas/bin/passwd
-rwxr-xr-x 1 mas mas 6248 2007-05-26 /mas/bin/passwd
这下真相大白了,原来是应用里面也有个passwd文件, 而且正好在PATH路径的最前面,所以执行passwd命令的时候就执行的是/mas/bin/passwd,而不是系统的passwd命令。找个好的机器看下passwd路径
[oracle@xxx]$ which passwd
/usr/bin/passwd
于是在故障机上执行/usr/bin/passwd能改密码了。。问题解决
root@[/root]$ /usr/bin/passwd
Changing password for user root.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
root@[/root]$
以上就是解决这次小故障的过程和思路。。
阅读(2079) | 评论(1) | 转发(0) |