Chinaunix

标题: 误修改/etc/passwd导致root无法登录,求助 [打印本页]

作者: zrp999    时间: 2012-11-21 22:29
标题: 误修改/etc/passwd导致root无法登录,求助
本帖最后由 zrp999 于 2012-11-21 22:29 编辑

各位好,今天误操作把/etc/passwd文件root默认的ksh改为/usr/bin/bash,谁知道该目录下面居然没有bash程序(大意啊),结果导致无法用root登录,错误如下:

3004-009 Failed running login shell.
Connection closed.

用ssh scp sftp telnet全部试过,都无法登录,找了一天的资料,最常用的方法是用维护盘启动进维护模式修改,但该服务器业务比较重要,不允许宕机,请大家想想还有没有其它办法,我想过用普通用户修改或建立一个/usr/bin/ksh指向/usr/bin/bash的链接,但还是权限不足,先谢谢各位了。
PS: 是否有命令可以绕过默认的shell?su root 或者   su root -c /usr/bin/ksh这2个都不行,但不知道有没有其它方法可以这么做。
作者: hello_unix    时间: 2012-11-21 22:37
从别的机器scp一个文件过去看看,是否可以?
如果可以,还有戏
作者: zrp999    时间: 2012-11-21 22:54
回复 2# hello_unix

不能scp,这个在起初就试过了,行不通。
   
作者: InfoSVC    时间: 2012-11-22 10:37
sudo呢?
作者: zrp999    时间: 2012-11-22 12:32
sudo就没安装,所以也不符合目前的情况。
作者: zealotddv    时间: 2012-11-22 14:33
装个bash到/usr/bin/bash下试试呢?
作者: beyondfly    时间: 2012-11-22 19:28
关注中                    
作者: wushanyink    时间: 2012-11-23 15:21
不停止进维护模式没法搞的。。楼主。。
作者: zrp999    时间: 2012-11-30 17:35
本帖最后由 zrp999 于 2012-11-30 17:43 编辑

谢谢,关于这个问题我己经通过oracle成功修复了/etc/passwd文件,下面是我写的总结:

                                                                                        文字是从WORD文档拷贝过来,格式没排好。


使用oracle修改/etc/passwd

--/etc/passwd默认SHELL被修改后,无法登录的处理办法   
    使用oracle修改#etc#passwd.rar (180.02 KB, 下载次数: 3740)
作者: theguynewman    时间: 2012-12-02 19:41


问题解决后,写个总结造福大家,谢谢,学习学习。
作者: happy_gaoxing    时间: 2012-12-02 21:16
我猜猜,用Xmanager应该可以吧
作者: jat_15    时间: 2012-12-02 22:17
这个解决方式确实很牛B,佩服。
作者: xunaitian1987    时间: 2012-12-03 09:48
NB
作者: lucmyth    时间: 2012-12-09 22:01

作者: zealotddv    时间: 2012-12-10 09:33
楼主解决方法确实牛逼。不过当你有任意一个可以登录的用户时,为什么不直接用该用户su -s /usr/bin/ksh root
然后输入root密码,切换成root用户ksh模式,完成修改/etc/passwd。
之前11楼说的xmanager,我个人也觉得可以(图形界面)
作者: hello_unix    时间: 2012-12-11 21:39
这个可以加精华,支持探索精神
作者: tianlijian    时间: 2012-12-15 03:12
学习学习。1234:wink::wink::wink::wink::wink:
作者: sky_sky888    时间: 2012-12-15 12:31
做个u盘的ubuntu livecd
作者: AIX深入敌后    时间: 2012-12-16 16:03
赞一个
看看楼主的心得
作者: bobofan1995    时间: 2012-12-17 03:02
基本上linux配置好就不怎么改动的了
作者: wlx_87    时间: 2012-12-17 18:37
楼主这个解决方法真牛逼。。
作者: lightningfly    时间: 2012-12-17 22:12
通过SFTP下载、修改、覆盖的方法可以么
作者: 午夜幽魂    时间: 2012-12-19 01:15
好方法,谢谢分享,牛人
作者: 卡卡Don    时间: 2012-12-20 16:14
感谢楼主分享~~
作者: a1xidelu    时间: 2012-12-21 16:26
拜读了,思路懂了,我自己肯定写不出来这些脚本,佩服楼主
作者: fengyun530    时间: 2012-12-26 09:03
我觉得做一个U盘式的LIVECD,如果可以直接从U盘启动也能修复,不过缺点是必须重新设置引导。
作者: davidbeckham921    时间: 2012-12-26 16:37
真心牛掰啊,这种方法就避免了重启等等等等的问题。
作者: uriyliu    时间: 2012-12-30 15:59
貌是黑客的行为。
作者: hello_johnsonli    时间: 2013-01-02 11:07
谢谢楼主分享总结!
作者: 风见秋    时间: 2013-01-05 13:53
看看。。。。。。。。
作者: 风见秋    时间: 2013-01-05 14:02
有个问题不明白,既然su -s 可以指定shell而跳过 /etc/passwd文件中指定的shell。那直接su -s不可以吗?非要通过java来修改passwd文件。
作者: nanjingnew4    时间: 2013-01-06 10:27
风见秋 发表于 2013-01-05 14:02
有个问题不明白,既然su -s 可以指定shell而跳过 /etc/passwd文件中指定的shell。那直接su -s不可以吗?非要 ...



楼主貌似在文档里说普通用户也改成bash了,也就是所有用户都无法登陆
作者: lstars0507    时间: 2013-01-06 11:33
真是厚道的好人啊。
作者: MissYMOnce    时间: 2013-01-08 15:16
确实不错,学些了
作者: zavakid    时间: 2013-01-09 14:39
牛啊!
如果机器上没有安装oracle,应该怎么办?
作者: 风见秋    时间: 2013-01-09 16:44
今天看书学到了一个命令chsh,以后用这个命令修改就不会出错了。
作者: yifangyou    时间: 2013-01-13 15:08
oracle成功修复了/etc/passwd?
这个严重暴露出楼主的服务器可以通过数据库活动shell权限啊
作者: 雪剑20    时间: 2013-01-13 21:31
这个还是得小心操作呀
作者: didi12366    时间: 2013-01-14 11:42
目前还没遇到过这种问题,可以借鉴一下
作者: assault_cu    时间: 2013-01-16 15:33
大师啊。
作者: heady713    时间: 2013-01-18 15:04
谢谢楼主,下载学习了
作者: RUBIKS86    时间: 2013-01-22 23:13
学习了,多谢分享经验!
作者: wwr    时间: 2013-01-26 23:42
LZ人才!这么反过来说,会oracle能提升root权限啊!
作者: starggw    时间: 2013-01-27 11:43
解决的方法对ATX 及ORACLE 和JAVA 方面的知识都了解。楼主NB啊
作者: feitat    时间: 2013-02-01 11:23
谢谢分享,好人一个
作者: webdna    时间: 2013-02-07 10:37

作者: enjoyjava    时间: 2013-02-17 09:13
--/etc/passwd默认SHELL被修改后,无法登录,这个只是shell不能登陆,图形的应该还是可以的 我之前也遇到过这样的情况,不过处理没你那么复杂,我是直接用WinSCP432拷出passwd文件修改后替换掉原来的就行了,也没重启
作者: 625luojian    时间: 2013-03-01 11:16
thanks share
作者: silen_    时间: 2013-03-03 16:33
学习了。。。。
作者: reyleon    时间: 2013-03-05 10:08
学习了 楼主强大
作者: lloydm    时间: 2013-03-18 07:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: ZRyan    时间: 2013-04-10 09:39
可不可以重建一个root吧
作者: fuqnaqict    时间: 2013-04-17 10:51
探索精神强!
作者: caocanxxp    时间: 2013-06-11 10:13
谢谢分享,又多了一种解决方案
作者: winterdota    时间: 2013-06-21 12:14
谢谢,学习了
作者: jonesxiao    时间: 2013-07-13 10:37
光盘起,改回去
作者: CJ_ane    时间: 2013-11-21 17:43
……
牛到一种境界了
作者: wwr    时间: 2013-11-28 16:36
回复 1# zrp999


LZ, 如果普通用户能su到root的话那就不用这么折腾的解决办法了。
  1. su - -c "sed 's/bash/ksh/g' /etc/passwd >/etc/passwd.new"
  2. su - -c "mv /etc/passwd /etc/passwd.old;mv /etc/passwd.new /etc/passwd;chown root:security /etc/passwd"
复制代码
完成!
作者: zw421961    时间: 2013-12-29 22:35
看了附件之后,目测能想出这个解决方案的人很厉害,通过漏洞进行提权,貌似也是这样吧。佩服想出这个解决方案的人。发生这个事,也给经常使用root用户的大神们一个警告,能不用root用户进行操作,就尽量不在生产环境下操作,免得造成一些不必要的损失。
作者: kensniper    时间: 2014-04-22 20:08
mark 一下,回头有空再看
作者: bronts    时间: 2014-05-08 16:49
楼主太厉害了,还能修改回来,哎,太危险了
作者: wtkao    时间: 2014-05-19 15:50
很棒的經驗分享,但如果沒有Oracle DB的話,樓主的方法是不是就不管用了?
作者: lyhabc    时间: 2015-03-09 14:39
借鉴一下lz的方法
作者: kakakkkk    时间: 2015-05-03 19:09
啊哈,我有个类似的经历,同AIX操作系统,当时是安装JAVA的时候设置ROOT环境变量,一不小心把 ksh的默认路径取消了,只有JAVA的,结果什么命令的用不了,吓死我了,后来执行了 export 切换环境变量回去修改配置文件才成功
作者: 我还没醒    时间: 2015-05-19 17:00
谢谢分享 。。。需要无私的人哇!
作者: cypxx2003    时间: 2016-07-04 16:49
方法一:从别的环境ftp一个文件覆盖;
方法二:安装bash软件包
作者: zsc_2012    时间: 2016-12-08 13:57
我的也是这个问题,先试试,能修改不,实在不能就得换系统
作者: 童扬456    时间: 2017-12-17 23:49
感谢楼主分享

作者: zhguowen    时间: 2017-12-18 15:47
回复 15# zealotddv


通常这种关键的DB服务器,未必会启图形界面啊!看来开户图形界面也有好处,只不过必须能过security check.





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2