Linux 文件權限管理

對於多用戶,多任務的Linux來說,文件和目錄的權限管理非常重要。在Linux中目錄是一種特殊的文件,這裏將文件和目錄統稱爲文件。

文件權限就是指對文件的訪問控制,決定哪些用戶,哪些組對文件具有哪種訪問權限。

Linux將文件訪問者身份分爲3個類別:

  • 所有者owner
  • 所屬組group
  • 其他用戶others

然後將訪問權限,也分爲3種:

  • 讀read
  • 寫write
  • 執行execute

那麼對文件權限管理,就包括這兩個方面,即文件的訪問者身份和不同身份對文件的訪問權限。

 

 

1. 訪問者身份

訪問者身份分爲上面的三種,所有者,所屬組,其他用戶,下面我們依次來簡單說一下,

 

(1)所有者

每個文件都有它的所有者,默認情況下,文件的創建者即爲其所有者,所有者對文件具有所有權,是一種特別權限。

只有root賬戶可以將文件的所有全轉讓給其他用戶,使其對文件具有所有權,成爲所有者。使用chown命令可修改文件所有者

chown命令格式如:

chown [選項] [新所有者] 文件列表
示例:
# 將文件test.txt的所有者改爲user1
chown user1 test.txt

# —R參數,遞歸改變整個test目錄及子目錄所有文件的所有者爲user1
chown -R user1 test/

 

(2)所屬組

這是指文件所有者所屬的組,可爲該組指定訪問權限。默認情況下,文件創建者的主要組即爲該文件的所屬組。

root賬戶同樣可以修改文件的所屬組。使用chgrp命令修改所屬組,文件所有者用戶也可以修改文件所屬組,但是所有者用戶必須是修改的目標所屬組的組員,否則無法修改。

chgrp命令格式如下:

chgrp [選項] [新的所屬組] 文件列表
示例:
# 修改test.txt文件的所屬組爲group1
chgrp group1 test.txt

# -R參數,通chwon,遞歸修改整個test目錄及子目錄所有文件的所屬組爲group1
chgrp -R group1 test/

 

(3)其他用戶

其他用戶就是指文件所有者和所屬組之外的所有用戶,可以授予最低級別的權限。

 

 

2. 訪問權限

上面說了,訪問權限有3種,讀,寫,執行,然後對於每一個訪問者身份都有這3種權限。

文件的訪問權限在文件屬性中,通過ls -l就可以查看到文件權限和屬性。如下:

$ ls -l
-rw-r--r--  1 root root      358 May 14 15:23 test.txt

如上,第一個root爲文件的所有者,第二個root爲文件的所屬組。文件屬性的第一個參數就是文件的權限:-rw-r--r--這個就是文件權限,一共爲10個字符,代表的意思如下:

  • 第一個字符:文件類型
  • 字符2-4:所有者權限
  • 字符5-7:所屬組權限
  • 字符8-10:其他用戶權限

第一個字符表示文件類型,常見的文件類型有:

  • -:表示文件
  • d:表示目錄
  • l:表示鏈接文件
  • b:表示塊設置文件
  • c:表示字符設備文件

接下來的字符,以3個爲一組,分別表示所有者,所屬組,其他用戶的權限,每一種訪問者身份的3種訪問權限依次用r,w,x分別表示讀,寫,執行。這3種訪問權限的位置不會變,如果沒有此權限,則使用-表示。

所以上面的文件權限:

-rw-r--r--  1 root root      358 May 14 15:23 test.txt

理解爲,這是一個文件,所有者的權限爲rw,可讀寫。 所屬組的權限爲r,只讀。其他用戶的權限爲r,只讀。

此文件的所有者爲root,所屬組也爲root。

 

 

3. 修改訪問權限

root用戶和文件所有者可以修改文件訪問權限,使用命令chmod來修改文件權限,格式爲:

chmod [選項] [模式] 文件

同樣,使用-R參數,可以遞歸修改整個目錄及子目錄的所有文件的訪問權限。

文件權限可以用字符或者數字來表示。所以相對的,修改文件訪問權限,也可以通過字符或者數字:

(1)通過字符修改權限

這時需要具體操作符號來修改權限,

  • +:表示增加某種權限
  • -:表示取消某種權限
  • =:表示指定某種權限
  • u:表示所有者
  • g:表示所屬組
  • o:表示其他用戶
  • a:表示所有用戶(即上面3種用戶)
  • r,w,x:表示3種權限,讀,寫,執行

下面列舉幾個例子:

# 所屬組增加寫權限,其他用戶增加讀權限
chmod g+w,o+r test.txt

# 同時取消所屬組和其他用戶的讀權限
chmod go-r test.txt

# 對所有用戶的權限都設置爲讀和執行
chmod a=rx test.txt

# 對所有用戶都增加執行權限
chmod +x test.txt

 

(2)通過數字修改權限

將3種權限,分別用數字進行表示:

  • 4:表示讀權限r
  • 2:表示寫權限w
  • 1:表示執行權限x

每一類訪問身份的權限用各項訪問權限所對應的數字的和表示,依次爲所有者,所屬組,其他用戶設置權限,使用3個數字表示這3個身份的權限。

比如:

644 :表示所有者爲讀寫權限,所屬組和其他用戶爲只讀權限
754 : 表示所有者的權限爲rwx,所屬組的權限爲rx,其他用戶的權限爲r

同樣使用命令chmod修改文件權限,示例如下:

# 修改文件的權限爲,所有者爲rwx,所屬組爲rw,其他用戶爲r。
chmod 764 test.txt
等同於
chmod u=rwx,g=rw,o=r test.txt

 

 

修改默認的訪問權限

你會發現,我們創建文件時,並沒有指定文件的權限,就會有一個默認的文件權限:

  • 文件的默認權限爲644
  • 目錄的默認權限爲755

默認權限實際上是通過umask(掩碼)來實現的,該掩碼用數字表示,實際上是文件權限碼的“補碼”,默認爲022。

創建目錄的最大權限爲777,減去umask的值022,就等於755,也就是創建文件時的默認權限。

由於文件創建時不能有執行權限,所有創建文件的最大權限爲666,減去umask的值022,就等於644,也就是創建文件的默認權限。

可使用umask命令來查看和修改umask的值:

# 查看當前的umask
$ umask
0022    # 最前面的0表示特殊權限,可忽略不看

# 臨時修改umask爲022,重新登錄或者打開新的shell則失效。
$ umask 002

如果想永久修改umask的值,可以修改/etc/profile文件中關於umask值的設置:

 

 

總結

Linux的文件權限管理就說到這裏,這是Linux系統中的基礎知識,作爲運維人員是必須瞭解的。

有任何問題,歡迎留言

 

更多內容,查看我的個人博客,文章首發地址:

https://amos-x.com

 

發佈了115 篇原創文章 · 獲贊 132 · 訪問量 49萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章