Linux 入門記錄:十二、Linux 權限機制


一、權限

權限是操作系統用來限制資源訪問的機制,權限一般分為讀、寫、執行。

系統中每個文件都擁有特定的權限、所屬用戶及所屬組,通過這樣的機制來限制哪些用戶、哪些組可以對特定的文件進行什么樣的操作。

每個進程都是以某個用戶的身份運行,所以進程的權限與該用戶的權限一樣,用戶的權限越大,該進程所擁有的權限也就越大。

 

二、文件權限

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)

不行了,名字想不出來了~~

現在,要為每個部門和員工建立相應的工作文件夾,要求如下:

  1. 所有目錄、文件均保存在一個統一的文件夾下
  2. 每個部門擁有一個獨立的文件夾
  3. 不同部門之間不能訪問對方文件夾
  4. 每個員工在所在部門文件夾下擁有一個所屬的文件夾
  5. 相同部門不同員工之間可以查看對方的文件夾,但不可修改,員工只能修改自己的文件夾

 

解決方案

好的,下面開始:

用組來表示部門,用用戶來表示員工,我以 root 用戶登錄添加組和用戶,並為用戶指定附屬組(部門):

為了讓整個公司的文件夾 Company 有足夠的訪問權限,在根目錄 "/" 下創建公司的文件夾目錄 /Company,並創建三個部門子目錄,去掉每個部門目錄的 O 模型權限並指定所屬部門:

OK,這樣就滿足了前 3 個要求:有統一文件夾和多個不同的部門目錄,並且不同部門之間全沒有 O 模型權限,不能訪問對方。

下面繼續創建員工目錄,並為每個目錄指定它的所屬員工和所屬部門:

好的,第 4 和第 5 個要求也滿足了:每個員工有自己的文件夾,並且不同員工之間只能查看不能修改。

最后測試一下,登錄 LiLei 賬號:

不同部門之間不能查看,同一部門之間可以查看不能修改,完成。

 

相關鏈接:

Linux安全體系的文件權限

linux文件權權限


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM