1. 程式人生 > >理解Linux文檔的默認安全機制、隱藏屬性、特殊權限,媽媽在也不用擔心你從刪庫到跑路!!!

理解Linux文檔的默認安全機制、隱藏屬性、特殊權限,媽媽在也不用擔心你從刪庫到跑路!!!

img 過程 群組 媽媽 鏈接文件 現在 管理員 run 目錄下的文件

寫在前面

前面的章節 詳解Linux文檔屬性、擁有者、群組、權限、差異,介紹了文檔的基本權限,包括讀寫執行(r,w,x),還有若幹的屬性,包括是否為目錄(d)、文件(-)、鏈接文件(l)、擁有者、所屬群組、容量大小(字節數)、最後修改時間等等,可以通過chown、chgrp、chmod來變更這些屬性和權限。

默認安全機制

首先,我們使用管理員root賬戶分別創建文件file001和目錄dir001
技術分享圖片
從上圖可以看到,

  1. 文件file001的默認權限為rw-r--r--,即擁有者可讀寫,同群組下賬戶只能讀取文件,其他人也只能讀取文件。
  2. 目錄dir001的默認權限為rwxr-xr-x,即擁有者可訪問、進入、編輯、刪除目錄下的文件,同一群組下的賬戶可以訪問、進入該目錄,其他人也可以訪問、進入該目錄。

然後,我們再使用一般justmine賬戶分別創建文件file001和目錄dir001
技術分享圖片
從上圖可以看到,

  1. 文件file001的默認權限為rw-rw-r--,即擁有者可讀寫文件,同群組下的賬戶可讀寫文件,其他人只能讀取文件。
  2. 目錄dir001的默認權限為rwxrwxr-x,即擁有者可訪問、進入、編輯、刪除目錄下的文件,同群組下的賬戶可以訪問、進入、編輯、刪除目錄下的文件,其他人也可以訪問、進入該目錄。

看到了吧,不同賬戶創建的文檔,它們的默認權限是不一樣的,這是因為Linux系統應用了默認的文檔安全機制,那麽這些默認權限是如何計算出來的呢,這裏就需要弄清楚兩個概念。

文檔的默認權限

  1. 文件
    文件的默認權限為rw-rw-rw-
    ,即默認沒有x權限,數字分數表示為666。所以,我們為shell文件分配執行權限,因為默認去掉這個權限的,現在曉得了吧。
  2. 目錄
    目錄的默認權限為rwxrwxrwx,數字分數表示為777

umask

表示要拿掉的文檔默認權限。比如:002,即拿掉其他人的w權限。

我們知道r、w、x對應的權限分為4、2、1,權限次序為擁有者、群組、其他人,那麽如果拿掉其他人的w權限,umask應該設置為002。如果拿掉群組和其他人的w權限,umask應該設置為022。這兩種默認的文檔安全機制,分別應用於管理員和一般賬戶。

示例說明:
root賬戶:
技術分享圖片
justmine賬戶:
技術分享圖片

根據這兩種默認的安全機制,現在我們來計算文件和目錄的實際默認權限
root管理員賬戶

  • 創建文件時:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
  • 創建目錄時:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x

justmine一般賬戶

  • 創建文件時:(-rw-rw-rw-) - (--------w-) ==> -rw-rw-r--
  • 創建目錄時:(drwxrwxrwx) - (d-------w-) ==> drwxrwxr-x

瞧見了吧,文檔實際的默認權限就是這麽來的。明白了這個機制,大家應該可以舉一反三建立自己的文檔默認安全機制了吧,嘿嘿。那麽,如何修改umask呢,超級簡單,直接在後面輸入權限分數,如:umask 002。順便說一下,supervisor進程守護器就運用了這個機制來保護子進程,如下:
技術分享圖片

隱藏屬性

除了9大基本權限外,文檔還可以使用chattr來設置隱藏屬性,比如完全不可修改,連文檔擁有者都不可修改此文檔哦。這些隱藏屬性,只能通過lsattr來查看。

Centos7.x使用的xfs文件系統,而不是傳統的Ext2/Ext3/Ext4文件系統,並不支持所有的chattr參數。

語法

chattr [+-=] [文件|目錄]
+ 增加隱藏屬性
- 拿掉隱藏屬性
= 設置隱藏屬性

用法

  1. 變更目錄為完全不可修改
    技術分享圖片
  2. 變更文件為完全不可修改
    技術分享圖片
    看到了吧,這個屬性的作用,可以讓我們再也不用擔心誤操作rm -rf然後跑路了吧!!!
    尤其是在系統安全層面上,如果需要強烈的系統安全,那麽隱藏屬性就顯得非常有用了

特殊權限

什麽文檔還有特殊權限,前面9大權限腦殼都整大了,嗚嗚嗚。其實特殊權限才是最難理解的,包括SUID, SGID, SBIT

  1. SUID
    s占據文檔擁有者x權限的位置時,稱為 Set UID,簡稱為 SUID,如:-rwsr-xr-x。
    • SUID 權限僅對二進制程序(binary program)有效;
    • 執行者對於該程序需要具有 x 的可執行權限;
    • 僅在執行該程序的過程中有效(run-time);
    • 執行者將具有該程序擁有者 (owner)的權限(此權限最重要的作用,因為賦予了一般用戶通過二進制程序暫時獲得root賬戶的權利)。
  2. GUID
    s占據文檔群組x權限的位置時,稱為 Set GID,簡稱為 SGID,如:-rwxr-sr-x。
    • SGID 對二進制程序有用;
    • 程序執行者對於該程序來說,需具備 x 的權限;
    • 執行者在執行的過程中將會獲得該程序群組的支持(對於文檔多租戶的管理非常有用,請參考前面章節:Linux如何管理文檔多租戶);
  3. GBID
    • 當使用者對於此目錄具有 w, x 權限,亦即具有寫入的權限時;
    • 當使用者在該目錄下創建文件或目錄時,僅有自己與 root 才有權力刪除該文件;

      備註:SBIT只對目錄有效,對於文件沒有任何效果

特殊權限的設置

前面我們介紹使用數字法設置文檔基本權限,如:chmod 777,表示擁有者、群組、其他人的權限組合。那麽特殊權限的設置呢,它的位置在擁有者的前面。它們的權限分數分別為SUID=4,SGID=2,SBID=1

用法

設置文件test6的權限為-rwxr-sr-x,由於s占據了群組x的位置,所以特殊權限為SGID,那麽命令就為:chmod 2755 test6
技術分享圖片

總結

本篇我們詳細介紹了Linux文檔的默認安全機制、隱藏屬性、特殊權限,寫這幾篇的文章的目的,就是為了能夠玩轉Linux系統的多租戶。好記性不如爛筆頭,荀子說“不聞不若聞之,聞之不若見之,見之不若知之,知之不若行之,學至於行而止矣,行之,明也。”對於基礎知識的學習,光看過不了多久,可能就忘了,所以大家跟我一起行動起來吧。

如果你覺得本篇文章對您有幫助的話,感謝您的【推薦】
如果你對 linux 感興趣的話可以關註我,我會定期的在博客分享我的學習心得

理解Linux文檔的默認安全機制、隱藏屬性、特殊權限,媽媽在也不用擔心你從刪庫到跑路!!!