linux文件权限错误,错误修改linux系统文件权限的补救方法

为了方便操作,一般我都是使用root登录管理vps。在这至高无上的权限面前,一个不慎就会发生各种各样的悲剧。前两天,原本打算执行 chmod -R 777 ./* ,结果手滑打少了一个.。虽然及时按 ctrl + c 终止命令,但悲剧已经发生。

在 rm -rf / 面前,上面的误操作其实还是可以挽救的。下面就说一下如何最大程度恢复原来正确的权限。

最重要的一点:

执行命令后千万不要关闭当前窗口!

因为这个时候新建一个Terminal,已经不能通过ssh连上这台vps了。因此首先需要修复SSH的相关权限。

在一台正常的Linux主机上查看SSH相关文件的正确权限,执行下面的操作:

cd /etc

chmod 644 passwd group shadow

chmod 400 gshadow

cd ssh

chmod 600 moduli ssh_host_dsa_key ssh_host_key ssh_host_rsa_key

chmod 644 ssh_config ssh_host_dsa_key.pub ssh_host_key.pub ssh_host_rsa_key.pub

chmod 640 sshd_config

尝试登录SSH,发现已经正常,但不能切换到root账号。

$ su - root

su: cannot set groups: Operation not permitted

查阅相关资料后发现,su必须有s权限才能预读取root的相关配置,于是执行下面的命令,让su的owner权限加上s:

chmod u+s `which su`

完成后就可以以root身份进入系统了。

完成上面的步骤,只是扫清了以root进入系统的障碍,以防当前窗口关闭后不能重新登录。下面进行其余文件的权限修复。

找一台尽量干净的Linux机器,把上面的权限导出:

getfacl -R / > ./linux.chmod.bak

然后通过ftp或者scp命令传到目标机器上:

scp linux.chmod.bak root@192.168.31.111:/root/

在目标机器上导入权限文件:

setfacl --restore=/root/linux.chmod.bak

导入完成后需要重启机器才能生效。这时机器基本就恢复正常了,起码在系统功能上没有问题。

为了保险起见,我们在导入权限文件之前,可以把前面修复SSH的方法写成脚本然后在 rc.local 中延时执行。这样就算出问题需要强制重启,我们还能通过SSH登录回来。

把内容写到 /root/tmp.sh 里面:

cat /root/tmp.sh

cd /etc

chmod 644 passwd group shadow

chmod 400 gshadow

cd ssh

chmod 600 moduli ssh_host_dsa_key ssh_host_key ssh_host_rsa_key

chmod 644 ssh_config ssh_host_dsa_key.pub ssh_host_key.pub ssh_host_rsa_key.pub

chmod 640 sshd_config

chmod u+s `which su`

然后把脚本放到开机启动:

echo '/root/sh/sshtmp.sh &' >> /etc/rc.local

接下来就可以放心的导入权限文件然后reboot了。

重启后如果一切正常,记得到 /etc/rc.local 中去掉脚本。

由于我们导入的是干净的Linux权限列表,所以我们只是把系统原有的文件进行权限修复。至于安装的程序和放在vps上的文件,暂时还没想好怎么修复。难道就只有重装了么!?

在血的教训面前,以后不能轻易就用root了... (╯‵□′)╯︵┻━┻

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值