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.www58058.com/95036

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

相關推薦

評論列表(2條)

  • lhl123456
    lhl123456 2018-04-06 19:24

    辦法呢?

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

      @lhl123456解決方法里寫的很清楚啊

欧美性久久久久