zoukankan      html  css  js  c++  java
  • linux系统权限修复——学生误操作!

    http://sapling.me/unixlinux/linux-system-chmod.html

    linux系统权限修复

    linux系统如果执行了chmod -R 777 / 后,系统等于瘫痪。
    因为su,mount等需要s权限(4755)的命令无法使用,ssh的key和一些ssh相关的系统文件夹不能是777权限。那么,如果使用root用户改了错误的权限后,怎么恢复呢?
    思路是这样的:通过装一个相同的新系统,把系统文件的权限导出,再导入损坏系统。
    我就碰到过一次这样的情况,系统管理员误操作,改变了大部分的系统文件权限,现在把解决过程记录如下。

    1、尝试使用getfacl导出新系统的文件权限,再setfacl导入损坏系统;结果失败。

    这样看似简单可行,但是getfacl不会导出文件的Special Permissions权限。无法正确恢复su等命令的权限。
    关于Special Permissions可以看之前的文章:linux常用+经典命令:Special Permissions设置部分

    2、写个程序导出新系统文件权限再写个shell导入损坏系统。

    以下c程序make之后可以生成.out的可执行文件,使用filename.out /bin >> pe.txt 导出/bin目录下的文件权限到pe.txt文件。

    #include
    #include
    int list(const char *name, const struct stat *status, int type)
    {
    if(type == FTW_NS)
    return 0;
    printf(“”%s” 0%3o ”, name, status->st_mode & 07777);
    return 0;
    }

    int main(int argc, char *argv[])
    {
    if(argc == 1)
    ftw(“.”, list, 1);
    else
    ftw(argv[1], list, 2);
    exit(0);
    }

    将pe拷贝到损坏系统,使用如下脚本执行之:filename.sh pe.txt

    1. #!/bin/sh   
    2.   
    3. if [ $# != 1 ]  
    4. then  
    5.     echo Usage : $0   
    6.     exit  
    7. fi   
    8.   
    9. PERMFILE=$1   
    10.   
    11. cat $PERMFILE | while read LINE  
    12. do  
    13.     FILE=`echo $LINE | awk '{print $1}'`  
    14.     PERM=`echo $LINE | awk '{print $2}'`  
    15.     chmod $PERM $FILE  
    16.     #echo "chmod $PERM $FILE"  
    17. done   
    18.   
    19. echo "change perm finished! "  

    自己安装的软件的权限仍然是777,可以手动改回来或者重新安装。





    ++++++++++++++++++++++++++++++++++++++++++++++++++

    http://blog.sina.com.cn/s/blog_764cc7ef0100szui.html

    操作系统 RHEL5

     

    如果你在linux上执行了如下操作

    chmod -R 777 /  或者 chmod -R 700/

    那么恭喜你,你的系统即将崩溃,重启之后,你进不了图形界面,而且很多服务都起不来


    为什么呢?


    因为linux中,系统的有些文件和目录权限都是严格要求的,比如说/tmp和/root里的一些重要文件的权限都是至关重要的


    一旦文件权限受到破坏,会直接影响系统的正常启动及使用。


    那么我们碰到这种情况怎么办呢?


    1、手动的将各个文件的权限进行对照还原(假如你很有时间的话)

    2、找到一台环境相同的linux机器(最好干净一些),并进行下面操作
    1> getfacl -R />systemP.bak  将这个系统中的 / ,以及 /底下所有的文件及目录权限导出到一个文件中
    2> 将systemP.bak文件想办法拷贝到被破坏的机器上
       并执行setfacl--restore=systemP.bak

    3> 重启系统

    4> 将 passwd命令和 su命令的权限进行手动恢复

    chmod u+s `which passwd`

    chmod u+s `which su`

    看看是不是完活了


    注:可能不能完全还原,但起码可以进入一个较为完整的图形界面操作,其他的报错应该就可以在这个基础上进行解决了,比如有些服务。这里就不多讲了。

     

     

    希望能给大家带来帮助。也请其他大师们进行评价!



  • 相关阅读:
    hive与hbase整合
    待重写
    hive DML
    【知识强化】第六章 总线 6.1 总线概述
    【知识强化】第五章 中央处理器 5.1 CPU的功能和基本结构
    【知识强化】第四章 指令系统 4.3 CISC和RISC的基本概念
    【知识强化】第四章 指令系统 4.2 指令寻址方式
    【知识强化】第四章 指令系统 4.1 指令格式
    【知识强化】第三章 存储系统 3.6 高速缓冲存储器
    【知识强化】第三章 存储系统 3.5 双口RAM和多模块存储器
  • 原文地址:https://www.cnblogs.com/ztguang/p/12647363.html
Copyright © 2011-2022 走看看