一、權限
權限是操作系統用來限制資源訪問的機制,權限一般分為讀、寫、執行。
系統中每個文件都擁有特定的權限、所屬用戶及所屬組,通過這樣的機制來限制哪些用戶、哪些組可以對特定的文件進行什么樣的操作。
每個進程都是以某個用戶的身份運行,所以進程的權限與該用戶的權限一樣,用戶的權限越大,該進程所擁有的權限也就越大。
二、文件權限
Linux 中,每個文件擁有以下三種權限:
權限 | 對文件的影響 | 對目錄的影響 |
r(讀取) | 可讀取文件內容 | 可列出目錄內容 |
w(寫入) | 可以修改文件內容 | 可在目錄創建、刪除文件 |
x(執行) | 可以作為命令執行 | 可訪問目錄內容 |
所以,目錄必須擁有 "x" 權限才可查看其內容。很多時候,執行權限 "x" 對於目錄而言也叫瀏覽權限。僅有 "r" 權限是無法查看目錄內容的(因為連訪問都做不到)。
三、UGO模型
Linux 權限基於 UGO 模型進行控制:
- U 代表 User,是文件或文件夾所屬用戶的權限;G 代表 Group,是文件或文件夾所屬組的權限;O 代表 Other,是其他用戶對文件或文件夾的權限
- 每一個文件的權限基於 UGO 模型進行設置
- 權限三個一組(rwx),對應 UGO 分別設置(總共有 3 個組 9 個權限)
- 每一個文件擁有一個所屬用戶和所屬組,對應 U、G模型;不屬於該文件所屬用戶和所屬組的使用 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 給文件的所屬用戶添加rw權限 chmod g -x test.md 給文件的所屬組移除x權限 chmod go +r test.md 給文件的所屬組和其他用戶添加r權限 chmod a -x test.md 給文件的所屬UGO三個模型均移除x權限
命令 chmod 也支持以三位八進制數值的方式修改權限,rwx 權限值分別由數字表示如下:
r = 4 (2 ^ 2) w = 2 (2 ^ 1) x = 1 (2 ^ 0)
使用數字表示權限時,每組權限分別為對應數字之和:
rw = 4 + 2 = 6 rwx = 4 + 2 + 1 = 7 r-x = 4 + 1 = 5
所以,使用數字表示 UGO 權限時,可以用如下方式表示:
chmod 0660 test.md 設置 UGO 權限為 rw-rw---- chmod 0775 test.md 設置 UGO 權限為 rwxrwxr-x
六、實例
案例描述
現在有個某公司 Company,部門和員工如下:
部門 | 員工 |
培訓部(Training) | 李雷(LiLei) 王雪(WangXue) |
市場部(Market) | 韓梅梅(HanMeimei) 林立(LinLi) |
管理部(Manage) | 路人甲(User1) 路人乙(User2) |
不行了,名字想不出來了~~
現在,要為每個部門和員工建立相應的工作文件夾,要求如下:
- 所有目錄、文件均保存在一個統一的文件夾下
- 每個部門擁有一個獨立的文件夾
- 不同部門之間不能訪問對方文件夾
- 每個員工在所在部門文件夾下擁有一個所屬的文件夾
- 相同部門不同員工之間可以查看對方的文件夾,但不可修改,員工只能修改自己的文件夾
解決方案
好的,下面開始:
用組來表示部門,用用戶來表示員工,我以 root 用戶登錄添加組和用戶,並為用戶指定附屬組(部門):
為了讓整個公司的文件夾 Company 有足夠的訪問權限,在根目錄 "/" 下創建公司的文件夾目錄 /Company,並創建三個部門子目錄,去掉每個部門目錄的 O 模型權限並指定所屬部門:
OK,這樣就滿足了前 3 個要求:有統一文件夾和多個不同的部門目錄,並且不同部門之間全沒有 O 模型權限,不能訪問對方。
下面繼續創建員工目錄,並為每個目錄指定它的所屬員工和所屬部門:
好的,第 4 和第 5 個要求也滿足了:每個員工有自己的文件夾,並且不同員工之間只能查看不能修改。
最后測試一下,登錄 LiLei 賬號:
不同部門之間不能查看,同一部門之間可以查看不能修改,完成。
相關鏈接: