Dec 11, 2012 - linux    2 Comments

Save CentOS permissions

$ chmod -R 777 /

如果你不小心输入了这条命令,并打了回车,那么请千万不要reboot你的机器。否则就认真照着下面一步一步做吧!

重启后,你会发现你的root账号不能登录了,ssh也连不上了,mysql自然也连不上了。一切工作都只能停下来了。还好,我们可以通过single模式进入root账号

1. 在系统启动时按e,选择要进入的内核


2. 选中Kernel一行,还是按e

3. 在rugh quiet一行后添加空格single,再回车。以表示进入single模式。

4. 回车后退回如下菜单,按b以重启机器

5. 重启后进入single模式,拿到root权限了

先来一次整体的权限修复,虽然不可能修复到误操作之前的状态,但大多数权限应该都是可以恢复的。
首先,找一台干净的CentOS,其实也就是我的虚拟机。输入:

$ getfacl -R / >systempermissions.bak

然后把这个文件放到被误操作的服务器上去(我是通过samba放上去的),然后执行:

$ setfacl --restore=systempermissions.bak

然后重启机器,到此为止,大多数文件的权限应该都恢复了。
———————————————
但可耻是ssh还是不能连。继续修复ssh

$ cd /etc/ssh/
$ ll

发现这里的权限还全是777,参照虚拟机改之

$ chmod 600 sshd_config ssh_host_dsa_key ssh_host_key ssh_host_rsa_key
$ chmod 620 moduli
$ chmod 644 ssh_config ssh_host_dsa_key.pub ssh_host_key.pub ssh_host_rsa_key.pub

接着,

$ cd /var/empty
$ chmod 744 sshd

然后

$ service sshd start

ssh OK!!!
————————————

mysql的修复就简单多了

$ chomd 644 /etc/my.cnf

mysql ok!!!!

————————————

在这个时间点,reboot一下后,发现服务器本机root还是无法登录,但ssh root是可以登录的。

$ cd /etc/
$ chmod 600 securetty
$ chmod 600 security/

root登录 OK!!!!

2 Comments

  • 我昨天手贱用ftp把云服务器上的根目录改成了777
    是不是可以让服务商那边按您这个教程改过来?

    • 1. 根目录777和根目录下所有文件都777是两回事。
      2. 服务商可能会有更高端的方法哦!

Got anything to say? Go ahead and leave a comment!