Linux 入門記錄:十二、Linux 許可權機制,linux許可權
一、許可權
許可權是作業系統用來限制資源訪問的機制,許可權一般分為讀、寫、執行。
系統中每個檔案都擁有特定的許可權、所屬使用者及所屬組,通過這樣的機制來限制哪些使用者、哪些組可以對特定的檔案進行什麼樣的操作。
每個進程都是以某個使用者的身份運行,所以進程的許可權與該使用者的許可權一樣,使用者的許可權越大,該進程所擁有的許可權也就越大。
二、檔案許可權
Linux 中,每個檔案擁有以下三種許可權:
| 許可權 |
對檔案的影響 |
對目錄的影響 |
| r(讀取) |
可讀取檔案內容 |
可列出目錄內容 |
| w(寫入) |
可以修改檔案內容 |
可在目錄建立、刪除檔案 |
| x(執行) |
可以作為命令執行 |
可訪問目錄內容 |
所以,目錄必須擁有 "x" 許可權才可查看其內容。很多時候,執行許可權 "x" 對於目錄而言也叫瀏覽許可權。僅有 "r" 許可權是無法查看目錄內容的(因為連訪問都做不到)。
三、UGO模型
Linux 許可權基於 UGO 模型進行控制:
- U 代表 User,是檔案或檔案夾所屬使用者的許可權;G 代表 Group,是檔案或檔案夾所屬組的許可權;O 代表 Other,是其他使用者對檔案或檔案夾的許可權
- 每一個檔案的許可權基於 UGO 模型進行設定
- 許可權三個一組(rwx),對應 UGO 分別設定(總共有 3 個組 9 個許可權)
- 每一個檔案擁有一個所屬使用者和所屬組,對應 UG,不屬於該檔案所屬使用者和所屬組的使用 O(Other)對應的許可權
命令 ls -l 可以查看目前的目錄下所有檔案的詳細資料:
中,每一行的格式如下:
| drwxr-xr-x. |
2 |
mingc |
mingc |
4096 |
Sep 23 14:54 |
Desktop |
UGO許可權 第1位是檔案類型描述符,"d"表示目錄,"-"表示檔案 第2-4位"rwx"是U許可權,可讀可寫可執行 第5-7位"r-x"是G許可權,可讀可執行,不可寫 第8-10位"r-x"是O許可權 |
連結數量 |
所屬使用者U |
所屬組G |
大小 |
日期時間 |
檔案或目錄名 |
四、修改檔案所屬使用者和組
命令 chown 用以改變檔案的所屬使用者:
chown username filename
常用參數:
-R 歸地修改目錄下所有檔案的所屬使用者
命令 chgrp 用以改變檔案的所屬組:
chgrp groupname filename
常用參數:
-R 遞迴地修改目錄下所有檔案的所屬組
五、修改檔案許可權
命令 chmod 用以修改檔案的許可權:
chmod mode filename
mode 參數格式如下:
u、g、o 分別代表使用者、組、其他a 代表ugo+、- 代表加入或刪除對應許可權r、w、x 代表三種許可權-R 遞迴地修改
樣本:
chmod u +rw test.md 給test.md檔案的所屬使用者添加rw許可權chmod g -x test.md 給test.md檔案的所屬組移除x許可權chmod go +r test.md 給test.md檔案的所屬組和其他使用者添加r許可權chmod a -x test.md 給test.md檔案的所屬UGO移除x許可權
命令 chmod 也支援以三位八位元值的方式修改許可權,rwx 許可權值分別由數字表示如下:
r = 4 (2 ^ 2)w = 2 (2 ^ 1)x = 1 (2 ^ 0)
使用數字表示許可權時,每組許可權分別為對應數字之和:
rw = 4 + 2 = 6rwx = 4 + 2 + 1 = 7r-x = 4 + 1 = 5
所以,使用數字表示 UGO 許可權時,可以用如下方式表示:
chmod 660 test.md 設定 UGO 許可權為 rw-rw----chmod 775 test.md 設定 UGO 許可權為 rwxrwxr-x
如果你對二進位位的概念不陌生,那麼 rwx 許可權就可以理解為:一個 4 位元組整數低位元組的低 3 位,x 在位 0(最低位),w 在位 1,r 在位 2,位 3 以上均為 0(關閉),從高向低看就是 rwx 的位排列。這 3 個位的開啟與關閉,就產生了 2 * 2 * 2 = 8 種位組合,再配合 UGO 模型,U、G、O 各自佔用 3 個二進位位,總共佔用 9 個二進位位,理論上就有 2 ^ 9 = 512 種不同角色的許可權組合(~~應該沒算錯吧)。
這裡沒有暫時沒有考慮特殊許可權,標準的 Linux UGO 許可權值是 4 個八進位位,最高位(3 個二進位位)是儲存特殊許可權的。
六、執行個體案例描述
現在有個某公司 Company,部門和員工如下:
| 部門 |
員工 |
| 培訓部(Training) |
李雷(LiLei) 王雪(WangXue) |
| 市場部(Market) |
韓梅梅(HanMeimei) 林立(LinLi) |
| 管理部(Manage) |
路人甲(User1) 路人乙(User2) |
不行了,名字想不出來了~~
現在,要為每個部門和員工建立相應的工作資料夾,要求如下:
解決方案
好的,下面開始:
用組來表示部門,用使用者來表示員工,我以 root 使用者登入添加組和使用者,並為使用者指定附屬組(部門):
為了讓整個公司的檔案夾 Company 有足夠的存取權限,在根目錄 "/" 下建立公司的檔案夾目錄 /Company,並建立三個部門子目錄,去掉每個部門目錄的 O 許可權和指定所屬部門:
OK,這樣就滿足了前 3 個要求:有統一檔案夾和多個不同的部門目錄,並且不同部門之間全沒有 O 許可權,不能訪問對方。
下面繼續建立員工目錄,並為每個目錄指定它的所屬員工和所屬部門:
好的,第 4 和第 5 個要求也滿足了:每個員工有自己的檔案夾,並且不同員工之間只能查看不能修改。
最後測試一下,登入 LiLei 帳號:
不同部門之間不能查看,同一部門之間可以查看不能修改,完成。
相關連結:
Linux安全體系的檔案許可權
linux檔案權許可權