- 金錢
- 1528
- 威望
- 5296
- 貢獻值
- 378
- 推廣值
- 2
- 性別
- 男
- 在線時間
- 401 小時
- 最後登錄
- 2024-11-14
- 主題
- 989
- 精華
- 0
- 閱讀權限
- 90
- 註冊時間
- 2011-12-29
- 帖子
- 0
TA的每日心情 | 怒 2024-11-3 15:50 |
---|
簽到天數: 1258 天 [LV.10]以壇為家III - 推廣值
- 2
- 貢獻值
- 378
- 金錢
- 1528
- 威望
- 5296
- 主題
- 989
|
樓主
發表於 2012-9-21 23:40:18
etc/passwd和/etc/shadow对于整个系统来说是至关重要的,关乎到系统能否正常使用和登陆。本人就linux主机灾难恢复阐述/etc/passwd作用。
故障起因:
创建账户useradd sky然后将root加入到sky用户组usermod -G sky root,之后将用户sky删除userdel –r sky,然后又新建了用户sky,将其加入到test用户组中,useradd -g test sky,重启之后发现系统无法进入,报错如下:
login as: root
root@192.168.192.129's password:
Last login: Sat Jul 31 18:48:53 2010 from 192.168.192.1
-bash-3.2#
使用其他用户登录也无法登陆:
login as: test
sungh@192.168.192.129's password:
Last login: Sat Jul 31 18:36:25 2010 from 192.168.192.1
[sungh@localhost ~]$ su -
口令:
su: warning: cannot change directory to sky: 没有那个文件或目录
-bash-3.2#进入图形化界面tty7也报错,报错信息如下图所示:
-bash-3.2# ls /home #可以看出系统中并无sky用户
small sungh test
后果就是无法登陆进入系统,系统处于瘫痪中。
故障分析:
根据报错信息来看,su: warning: cannot change directory to sky: 没有那个文件或目录
Cat /etc/passwd查看如下:
-bash-3.2# cat /etc/passwd
root:x:0:0:sungh,china's office,110,120:sky:/bin/bash …………………………………………………………
test:x:502:504::/home/test:/bin/bash
系统中有sky用户组却没有sky这个用户,初步怀疑是/etc/passwd有问题导致
故障处理:
修改/etc/passwd的root字段,
修改为root:x:0:0:root:sungh:sky:/bin/bash。然后重启,使用root登陆,发现root都无法登陆了,更崩溃了。登陆提示如下:
login as: root root@172.19.10.39's password: Access denied
于是,进入单机模式,恢复之前修改的/etc/passwd文件的root字段,
进入单机用户模式的方法如下:
出现GRUB引导画面时,按字母e键,进入GRUB编辑状态。
按↑键或↓键选择相应的引导项,并再接字母e键进入命令行编辑。
在出现的命令行上添加"1"或single,并按键,返回GRUB编辑状态。
按字母b键,引导进入单用户模式。
之后仔细查看/etc/passwd字段的含义,发现之前的改动是错误的,严格对照错误信息进行改动,将root字段如下改动:
root:x:0:0:root:/root:/bin/bash恢复了系统的正常登陆。
/etc/passwd字段信息的含义如下所示:
LOGNAME:PASSWORD:UID:GID:USERINFO:HOME:SHELL
LOGNAME 用户登录名
PASSWORD 加密的密码存储在/etc/shadow中,此处显示x
UID 用户ID,任何拥有0值UID的用户都具有根用户(系统管理员)访问权限,通常500是默认的第一个新建用户的ID
GID 用户组ID,同上
USERINFO 备注信息
HOME 用户home目录路径,即用户的工作目录
SHELL 给用户指定的shell程序
故障总结:
故障的原因是由于/etc/passwd文件信息错误导致的。
起初将root字段改为root:x:0:0:root:sungh:sky:/bin/bash,与正确的字段对比发现,最后一个字段shell字段被挤到第八个字段中,系统只认得7个字段,导致用户root在登录时无法取得相应的shell,故登陆报错,访问拒绝。
而后恢复之前的信息,在仔细检查此字段,发现用户shell登陆的时候无法取得家目录,如上图截图所示,修改家目录sky为/root,其余无需改动,之后重启,登陆,问题解决。
userdel -r sky时,组sky已经删除,而root用户还有在组sky里,所以是可能导致进入-bash-3.2#模式的原因。(应该是shell)-bash- 3.2#是找不到默认bash配置文件的情况下bash这个shell初始的提示符。类似DOS提示符。
注:尽量不要使用root进行操作,权限太大~出现问题后,仔细分析,总会有解决办法的。
|
|