【运维问题】linux下chmod写错了权限怎么恢复

    今天在linux下执行命令,误写了chmod 777为-777,也就是把该文件夹下的权限关闭,连重新连接都不行了。

    1、如果你是完全误操作,还没有关闭连接,那恭喜你,可以快速恢复,我就是用的这个方法(secureFx下),右键属性,

如果是错误操作属性就是0,可以修改为755或者参考其他未修改的文件夹的属性是多少修改。如下图:

【运维问题】linux下chmod写错了权限怎么恢复_第1张图片

2、如果关闭了连接,这时候你再去连接就连接不上了,这时候你只能参考:https://blog.csdn.net/ycc541/article/details/45331377

Linux中,如果意外误操作将/目录权限批量设置,比如chmod -R 777 / ,系统中的大部分服务以及命令将无法使用,这时候可以通过系统自带的getfacl命令来拷贝和还原系统权限,若是其他系统目录被误操作,同样可行。修复的方法如下:





1、通过一台权限正常的Linux(最好内核版本和故障服务器相同) 通过getfacl -R / >systemp.bak将这个正常系统的/目录下所有文件的权限都备份保存在systemp.bak中,如图:

1.JPG




2、如果异常服务器未重启等操作并且连接未端,可以使用scp命令将正常的备份文件传至异常服务器中,命令如下:

    scp root@目标机器IP:system.bak文件路径  本地存放system.bak路径

    也可用其他方法把systemp.bak移动到异常服务器中。



3、在异常服务器中执行命令setfacl --restore=systemp.bak即可将现在的系统权限恢复成和正常系统一样



4、reboot重启系统

3、还有一种方法,就是需要工具了,但是如果预先没有安装备份工具,那这个方法就不行了,

http://blog.51cto.com/qujunorz/1676803

逛论坛看到一个帖子说chmod 000 /bin/chmod 之后,如何恢复chmod权限的问题,看到方法觉得很有意思,发现了busybox这个神奇工具,转载分享下。



解决方法1:直接运行加载程序,并将其传递给想要运行的命令
[root@localhost ~]#/lib64/ld-linux-x86-64.so.2 /bin/chmod 755 /bin/chmod
[root@localhost ~]# ll/bin/chmod 
-rwxr-xr-x. 1 root root 48712Oct 15  2014 /bin/chmod
说明:加载程序路径可能不同,32位系统应该是/lib/ld-linux.so,我没有测试

解决方法2:可以使用busybox的chmod授权
[root@localhost ~]# busybox chmod 755 /bin/chmod
[root@localhost ~]# ll/bin/chmod 
-rwxr-xr-x. 1 root root 48712Oct 15  2014 /bin/chmod

解决方法3:此方法我表示很喜欢
[root@localhost ~]# chmod 000 /bin/chmod 
[root@localhost ~]# ll /bin/chmod 
----------. 1 root root 48712Oct 15  2014 /bin/chmod
[root@localhost ~]# mv /bin/chmod /bin/chmod.orig
[root@localhost ~]# cp -a /bin/chown /bin/chmod
[root@localhost ~]# dd if=/bin/chmod.orig of=/bin/chmod
95+1 records in
95+1 records out
48712 bytes (49 kB) copied,0.00117323 s, 41.5 MB/s

解决方法4:使用facl额外授权
[root@localhost ~]# chmod 000 /bin/chmod 
[root@localhost ~]# ll /bin/chmod 
----------. 1 root root 48712Oct 15  2014 /bin/chmod
[root@localhost ~]# setfacl -m u::rx /bin/chmod 
[root@localhost ~]# chmod 755 /bin/chmod 
[root@localhost ~]# setfacl -b /bin/chmod 

解决方法5:复制一个可执行文件,然后使用chmod命令覆盖
[root@localhost ~]# ll /bin/chmod 
----------. 1 root root 48712Oct 15  2014 /bin/chmod
[root@localhost ~]# cp /bin/ls chmod
[root@localhost ~]# cp /bin/chmod .
cp: overwrite `./chmod'? y
[root@localhost ~]# cp -a chmod/bin /chmod 
cp: overwrite `/bin/chmod'? y
[root@localhost ~]# ll/bin/chmod 
-rwxr-xr-x. 1 root root 48712May 27 10:23 /bin/chmod

解决方法6:使用install命令的-m选项也可以设置权限
[root@localhost ~]# ll/bin/chmod
----------. 1 root root 48712May 27 10:04 /bin/chmod
[root@localhost ~]# install -ma+x /bin/chmod .
[root@localhost ~]# ./chmod 755/bin/chmod
[root@localhost ~]# ll/bin/chmod
-rwxr-xr-x. 1 root root 48712May 27 10:04 /bin/chmod

解决方法7:perl解决
[root@localhost ~]# ll /bin/chmod 
----------. 1 root root 48712Oct 15  2014 /bin/chmod
[root@localhost ~]# perl -e'chmod 0755, "/bin/chmod"'
[root@localhost ~]# ll /bin/chmod
-rwxr-xr-x. 1 root root 48712Oct 15  2014 /bin/chmod

解决方法8:Python解决
[root@localhost ~]# chmod 000/bin/chmod 
[root@localhost ~]# ll/bin/chmod 
----------. 1 root root 48712Oct 15  2014 /bin/chmod
[root@localhost ~]# python -c'import os; os.chmod("/bin/chmod", 0755)'
[root@localhost ~]# ll/bin/chmod 
-rwxr-xr-x. 1 root root 48712Oct 15  2014 /bin/chmod
总结一下:linux下误操作很常见,但要做好万全之策,所以在服务器上安装后有恢复的备份方案,最好每周或者每日做一下备份,即使出了再大的乱子,回滚也比重来好。

你可能感兴趣的:(代码部署管理,开发问题)