1. 程式人生 > >【Linux】Linux許可權詳解

【Linux】Linux許可權詳解

什麼是許可權?
  在多使用者計算機系統的管理中,許可權是指某個特定的使用者具有特定的系統資源使用權力,像是資料夾,特定系統指令的使用或儲存量的限制。通常,系統管理員,或者在網路中的網路管理員,對某個特定資源的使用分配給使用者不同的許可權,系統軟體則自動地強制執行這些許可權。
在Linux系統下
  Linux系統下有兩種使用者,即:超級使用者(root)和普通使用者。
  超級使用者:可以在Linux系統下不受限制地做任何事情。
  普通使用者:可以在Linux系統下做有限的事情。
這裡寫圖片描述
  超級使用者root切換到普通使用者user,則使用su user;從普通使用者切換到超級使用者,則使用su root(root可以省略),並提示輸入root使用者的密碼。同時可以看到,超級使用者的命令提示符是“#”,而普通使用者的命令提示符是“$”。
  建立一個新的使用者:useradd,此時檔案/etc/passwd會多出一行內容:
這裡寫圖片描述


設定密碼:passwd,只能由root設定:
這裡寫圖片描述
刪除使用者:userdel,刪除之後,檔案/etc/passwd 中少了一行
這裡寫圖片描述
Linux許可權管理
  檔案或目錄的訪問者包括以下三類:
(1)檔案和目錄的所有者:u—User;
(2)檔案和目錄的所有者所在組的使用者:g—Group;
(3)其他使用者:o—Others。
  每個檔案和目錄都有訪問許可許可權,用它來確定誰能通過哪種方式對檔案和目錄進行訪問和操作。檔案或目錄的訪問許可權分為以下三種:
(1)讀(Read):r,對檔案而言,具有讀取檔案內容的許可權;對目錄來說,具有瀏覽該目錄資訊的許可權。
(2)寫(Write):w,對檔案而言,具有修改檔案內容的許可權;對目錄來說,具有刪除或移動目錄內檔案的許可權。
(3)執行(Execute):x,對檔案而言,具有執行檔案的許可權;對目錄來說,具有進入該目錄的許可權。
這裡寫圖片描述

  下面對紅色方框中每組內容做一解釋:
(1)檔案擁有者的許可權:
這裡寫圖片描述
其中,“-”表示不具有該項許可權。
(2)檔案擁有者所屬組的同組成員的許可權:
這裡寫圖片描述
(3)其他使用者的許可權:
這裡寫圖片描述
(4)檔案型別:
這裡寫圖片描述
說到檔案型別,在Linux系統下,共有7種檔案型別:
①“-”:普通檔案,指普通意義上的檔案,如資料檔案,可執行檔案。本質上就是儲存普通資料,一般為字串。
②“d”:目錄檔案,本質上儲存了一張表。
③“p”:管道檔案,下面舉個例子:
  在一個終端中建立一個管道檔案pipe.p,並向其中寫入一個字串,然後再開啟一個終端,檢視管道檔案pipe.p中的內容:
這裡寫圖片描述
④“l”:軟連結檔案,又叫符號連結檔案。這個檔案包含了另一個檔案的路徑名。可以是任意檔案或目錄,可以連結不同檔案系統的檔案。軟連結檔案只是其原始檔的一個標記,當刪除了原始檔後,連結檔案不能獨立存在,雖然仍保留檔名,但卻不能檢視軟連結檔案的內容了。
  建立一個軟連結檔案:ln -s 已有檔名 新檔名
這裡寫圖片描述

當刪除原始檔src後,已不能檢視軟連結檔案的內容:
這裡寫圖片描述
⑤“c”:字元裝置檔案,它以特別檔案方式在檔案目錄樹中佔據位置並擁有相應的結點。
⑥“b”:塊裝置檔案。
⑦“s”:socket檔案,即套接字檔案。
如何表示檔案的許可權值?有兩種方法:字元表示法和八進位制數值表示法。
  字元表示法
這裡寫圖片描述
  八進位制數值表示法
這裡寫圖片描述
【注】對於目錄:
有無“r”許可權決定是否可以進行ls操作;
有無“w”許可權決定是否可以進行建立操作;
有無“x”許可權決定是否可以進行cd操作。
檔案訪問許可權的相關設定
(1)設定檔案的訪問許可權:chmod [引數] 許可權 檔名
【注】只有檔案的擁有者和root才可修改檔案的許可權
格式①:“chmod 使用者符號+/-/=許可權字元 檔名”
使用者符號:
u:擁有者
g:擁有者的同組使用者
o:其他使用者
a:所有使用者
“+”:表示向許可權範圍增加許可權代號所表示的許可權;
“-”:表示向許可權範圍取消許可權代號所表示的許可權;
“=”:表示向許可權範圍賦予許可權代號所表示的許可權;
下面,首先建立了三個普通檔案,可見每個檔案對於其擁有者無任何許可權,對擁有者同組使用者以及其他使用者都是隻有可寫的許可權:
這裡寫圖片描述
現在,可以進行如下操作:
對檔案t1.txt的擁有者增加可讀許可權,對檔案t2.txt的擁有者的同組使用者取消可寫許可權,對檔案t3.txt的其他使用者賦予可執行許可權:
這裡寫圖片描述
這裡寫圖片描述
格式②:使用三位八進位制數字
對上面的普通檔案t2.txt進行許可權的修改:
這裡寫圖片描述
“7”表示擁有者具有可讀可寫可執行的許可權;“2”表示擁有者的同組使用者具有可寫許可權;“4”表示其他使用者具有可讀許可權。(這樣的方式可以覆蓋該檔案之前的許可權)
這裡寫圖片描述
(2)修改檔案的擁有者:chown [引數] 使用者名稱 檔名
(3)修改檔案或目錄的所屬組:chgrp [引數] 使用者組名 檔名
(4)檢視或修改檔案掩碼:umask 許可權值
這裡寫圖片描述
【注】
①新建目錄預設許可權=0777 - 許可權掩碼;
②超級使用者root建立檔案預設掩碼值為0022。
關於粘滯位
舉個例子來說明一下:
  張三和李四都具有對同一目錄的讀寫許可權。該目錄中包含檔案zhangsan.c,張三把檔案設定為只有自己能讀寫,其他人都讀寫不了,但是李四仍然可以將目錄中的檔案zhangsan.c刪除。
  為了解決這一問題,就需要為該目錄設定粘滯位。設定之後,雖然李四還是具有對該目錄的讀寫許可權,但他只能刪除或移動他自己的檔案,而不能刪除或移動其他使用者的檔案。
  在實際應用中,粘滯位一般用於/tmp目錄,以防止普通使用者刪除或移動其他使用者的檔案。
  設定粘滯位:chmod +t 目錄
  當一個目錄被設定了粘滯位,則該目錄下的檔案只能由以下三種人刪除(或移動):
(1)超級使用者root;
(2)該目錄的所有者;
(3)所操作檔案的所有者。