LInux系统误将chmod 权限改成了000如何恢复?

需要解决方法的可直接跳跃至最后“解决方法目”;
解决方法用到了新学的灵活权限设置 ACL,正文对Linux权限,和ACL用法做了详细解释。

  • Linux权限设计

  1.  在Linux世界里,权限是写在文件或目录中的,针对不同的访问者,文件将对象分成了三类,

文件的所有者;owner:属主,u

文件的所属组;group:属组,g

其他访问者;     other:其他,o

2.  每个文件针对每类访问者都定义了三种权限

(1 文件:

r:可使用文件查看类工具查看其内容        —————————模式表示法中代表4

w:可修改其内容                                            —————————模式表示法中代表2

x:可把文件提请内核启动为一个进程        —————————模式表示法中代表1

(2 目录:

r:可使用ls查看此目录中的文件列表。

w:可在此目录中创建文件,也可以删除此目录中的文件。

x:可以查看此目录的列表,也可以cd进入目录,是目录的基础权限。

3.权限rwx以所有者,所属组,其他,这样的顺序排列一排放置在文件属性排头,通过ll 命令可查看,如       下图

TIM图片20180407192429

这一行最前面的6个字母分别是所有者和所属组还有other的权限了,可以很明显看出来f2文件的所有者和所属组都是root,这是权限的模式表示法,还有一种是数字法,就是对应把分组拥有的权限数字相加,

那么f2文件的权限设置就是777;现在知道了,我们把chmod权限设置成了000,代表对所所有的访问者剥夺了读写执行任何权限,包括root用户的。

  • 问题成因

文件通过rwx给对应类别的访问者开放相应的权限,而root用户是超脱于权限之外的上帝,它掌握了权限修改的生杀大权,chmod 就是它的工具;但是root用户本身也是受限的,就是不能执行对自己不开放执行权限的文件!因为系统认为执行这项操作太过于危险,即使是超级管理员也不能随意执行,但是root用户拥有给自己授权的能力;

但是chmod本身也是一个存放于/bin下的一个二进制文件,它的权限如果被自己改成了对所有用户没有任何权限!也就是我们目前所碰到的问题,那么root用户也就无法执行这个文件,更加要命的是,它也没有办法通过chmod 这个工具来给自己开放权限了!root用户也就丧失了为文件改变权限的能力。这是不是一个死循环!

别以为你找到了Linux系统的一个bug,万能的Linux 系统在基本的三类普通权限基础上有设计了灵活的权限管理,为特定用户或者用户组开逾越基础权限的特权通道那就是ACL (Access Control List )

  • ACL权限

1.除了文件的所有者,所属组,其他人,之外,可以为更多的用户设置凌驾于基础权限之外的特殊权限,不受基础三大权限限制。

2.Centos7 默认创建的xfs和ext4文件系统具有ACL功能。

3.Centos7之前的版本默认手工创建的ext4文件系统无ACL功能,需手动添加

tune2fs -o acl/dev/sdb1

mount -o acl /dev/sdb1  /mnt/test

4.ACL设置密令:

给用户设置特权 用到的密令       setfacl -m  u:user:rwx   f1

给用户组设置特权用到的密令    setfacl -m  g:group:rwx  f1

给文件设置mask值的密令           setfacl -m  mask::rwx  f1

清空所有ACL权限密令                 setfacl -b  f1

这里的mask特别说明一下,mask的权限值为所有ACL权限设置了一个上限值,拥有ACL权限的用户的权限不得超过mask权限,如果拥有了mask未规定的权限,那么默认不生效。

  • 解决方法

有了上面的知识储备,那么来解决题目中碰到的问题就太简单了。

两种办法,一种是直接把root用户设置ACL权限,另外一种是将root组设置ACL权限,但是无论哪种方法,最后修改 /bin/chmod 的用户必须是root用户,即使别的用户在root分组下,因为修改权限本就是系统管理员特有的权限,我们现在用第一种方法恢复故障。

1.首先我把/bin/chmod 的权限全部移除;TIM图片20180407202952

可以看到root用户限制都没有修改/bin/chmod 的权利了。

2.接下来我们给root用户设置rwx 的特权,然后通过getfacl 查看ACL权限设置情况;

TIM图片20180407203903

可以看到root 用户现在有了rwx 的权限了;

3.那么我们现在可以用root用户把 /bin/chmod 的权限恢复回去了,问题解决perfect!

2323

4.不过用完后记得把ACL权限给清理掉哦!

1

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95036

(9)
知行合一知行合一
上一篇 2018-04-05 23:37
下一篇 2018-04-06 20:02

相关推荐

  • 第二周总结

    反向单引号 ` `:执行能力强,可以执行命令 [等价于$()]单引号 ‘ ’:只显示字符双引号 “ ”:识别变量,不识别命令花括号{ }: 里面内容互相组合 打印重复字符串的简化形式echo file{1,3,5} 结果为:file1 file3 file5rm -f file{1,3,5} 删除file1 file3 file5echo file{1..1…

    Linux笔记 2018-07-29
  • 第三周博客作业

    1、列出当前系统上所有已登录的用户名,注意:同一用户登陆多次,则只显示一次即可。
    2、取出最后登录到当前系统的用户的相关信息。
    3、取出当前系统上被用户当作默认shell的最多的那个shell。
    4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
    5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
    6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
    7、显示/var目录下一级子目录或文件的总个数。
    8、取出/etc/group文件中第三个字段数值最小的10个组的名字。
    9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
    10、请总结描述用户和组管理类命令的使用方法并完成以下练习:

    Linux笔记 2018-03-27
  • 06葵花宝典之linux网络、进程管理和shell循环语句

    06葵花宝典之linux网络、进程管理和shell循环语句 作为服务器,其输入输出功能在大多数时候都是通过网络提供的,网络功能对于服务器而言是至关重要的。 一、OSI七层模型和TCP/IP四层模型 1、OSI七层模型 OSI七层模型是参考ISO(International Standard Organization国际标准化组织)所指定的一个用于通信系统间互…

    2018-04-15
  • Linux 第一週作業 (6.18–6.24)

    计算机的组成及其功能
    罗列Linux的发行版
    Linux的哲学思想
    一些簡單命令
    如何在Linux系统上获取命令的帮助信息
    Linux发行版的基础目录名称命名法则及功用规定

    Linux笔记 2018-06-23
  • route命令

    1.   使用背景         需要接入两个网络,一个是部署环境所在内网环境,这个环境是上不了外网, 外网环境很可能是一个无线网络。如果两者都连接上,很可能导致有一方不能起作用,即外网或内网上不了,常常需要使用繁琐的“禁用网络连接”、“启用网络连接”的操作来进行内外网的切换,甚是麻烦。         为了解决这个问题,可以使用route命令来使得同时内…

    Linux笔记 2018-05-01
  • Linux第一周命令总结

    hostname  完整主机名  cat +文件路径 可查看文件信息 cat /etc/centos-release 查看文件  版本的名称、发行时间所有shell cat/etc/shells  显示当前系统使用的 lsd_release -a  命令  查看版本 /etc/centos-release 是文本文件  cat是查看文本的命令 uname-r…

    2018-07-22

评论列表(2条)

  • lhl123456
    lhl123456 2018-04-06 19:24

    办法呢?

    • 知行合一
      知行合一 2018-04-14 20:09

      @lhl123456解决方法里写的很清楚啊