本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规。大家都是程序员,不要闹得不开心。

苏南大叔为某个目录用shell脚本更改755权限的时候,误操作,少打了一个点。本来是对当前目录的操作,变成了对根目录的操作。这操作的范围其实扩大到了整个系统文件!好吧,这样的弱智错误,相信很多人都干过。我也只是其中一员。用ctrl+c也无法停止,就眼看着屏幕上一堆log日志输出了。想着,也许不会有太大危害,然后就悲剧了。ssh无法进入了,如下图所示。

苏南大叔:centos 系统 etc 目录 chmod 误操作后无法进入 ssh 的挽救措施 - ssh_error
centos 系统 etc 目录 chmod 误操作后无法进入 ssh 的挽救措施(图2-1)

解决方案

首先,你需要还有一个能进入服务器的办法,苏南大叔的宝塔面板这次起到了这个桥梁作用。利用的是宝塔面板里面的计划任务来执行的修复脚本。当然,也可以使用宝塔里面的文件管理功能。如果你没有办法再进入服务器了,那么只能暂时建议你重做系统了。

究其原因,就是文件系统的权限错乱了。所以如果你有权限信息的备份文件就好了。但是....俺没有。从别人系统里面拿到的acl.bak文件其实也不适合自己的。修复完成后,利用adduser新增的用户的权限,也似乎是具有错误的属性的。看来,如果事先有当前用户的acl备份,就再好不过的方案了。所以,有必要再增加个计划任务,备份系统权限信息。anyway,这里先向大家演示备份和恢复的脚本。如果您的centos还没有备份这个文件,那么请备份,以备急需。
备份脚本:

getfacl -R ./ > ~\acl.bak

恢复脚本:

setfacl --restore ~\acl.bak 

治标方案

单单就本次事件而言,既然无法治本(没有acl备份),那就先治标吧(进入ssh)。目标文件(夹),/etc/ssh/,目标权限400。所以,脚本为:

chmod -R 400 /etc/ssh/

或者利用宝塔的文件管理功能修改权限也可以,如下图所示。

苏南大叔:centos 系统 etc 目录 chmod 误操作后无法进入 ssh 的挽救措施 - ssh_error_5
centos 系统 etc 目录 chmod 误操作后无法进入 ssh 的挽救措施(图2-2)

修改完毕,顺利进入ssh... 暂时解决问题... 大家敲命令的时候,千万要小心啊,不要再犯这样的弱智错误。如果这次不能通过宝塔面板对系统进行管理的话,估计就只能重做系统了。虽然各种备份都有,还是要费很大力气,才能再次搭建起来整个环境。是非常痛苦的说。

结论

good good study,day day up。面对问题,就要解决问题。加油! 更多苏南大叔带来的宝塔面板经验,请点击这里查看:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。