天天看點

Linux--權限

文章目錄

  • ​​1、所有者、組成員和其他所有使用者​​
  • ​​2、讀取、寫入和執行​​
  • ​​2.1、chmod--更改檔案模式​​
  • ​​2.1.1、八進制數字表示法​​
  • ​​2.1.2、符号表示法​​
  • ​​2.2、umask--設定預設權限​​
  • ​​3、更改身份​​
  • ​​3.1、su--以其他使用者群組ID的身份來運作shell​​
  • ​​3.2、sudo--以另一個使用者的身份執行指令​​
  • ​​3.3、chown--更改檔案所有者和所屬群組​​
  • ​​3.4、chgrp--更改檔案所屬群組​​
  • ​​4、更改使用者密碼​​

傳統的UNIX作業系統與那些MS-DOS作業系統不同,差別在于它們不僅是多重任務處理(multitasking)系統,而且還是多使用者(multiuser)系統。這意味着同一時間内可以有多個使用者使用同一台計算機,例如,如果計算機連接配接到一個網絡或者網際網路中,遠端使用者可以通過ssh(安全shell)登入并且操作這台計算機。

1、所有者、組成員和其他所有使用者

在UNIX安全模型中,一個使用者可以擁有檔案和目錄。當一個使用者擁有一個檔案或目錄時,它将對該檔案或目錄的通路權限擁有控制權。反過來,使用者又歸屬于一個群組(group),該群組有一個或者多個使用者組成,組中使用者對檔案和目錄的通路權限由其所有者授予。除了可以授予群組通路權限之外,檔案所有者也可以授予所有使用者一些通路權限,在UNIX術語中,所有使用者是指整個世界。使用​

​id​

​指令可以獲得使用者身份辨別的相關資訊。

在建立使用者賬号的時候,使用者将配置設定一個稱為使用者ID(user ID)或者uid的号碼。為了符合人們的使用習慣,使用者ID與使用者名一一映射。同時使用者将配置設定一個有效組ID(primary group ID)或者稱為gid,而且該使用者可以歸屬于其他的群組。

Linux--權限

使用者賬戶定義在檔案/etc/passwd中,使用者組定義在檔案/etc/group檔案中。在建立使用者賬号和群組時,這些檔案随着檔案/etc/shadow的變動而修改,檔案/etc/shadow中儲存了使用者的密碼資訊。對于每一個使用者賬戶,檔案/etc/passwd中都定義了對應使用者的使用者(登入)名、uid、gid、賬戶的的真實姓名、主目錄以及登入shell資訊。

2、讀取、寫入和執行

對檔案和目錄的通路權限是按照讀通路、寫通路以及執行通路來定義的。我們可以通過​

​ls -l​

​檢視檔案屬性(file attribute),檔案屬性一般由10個字元組成,其中第一個為檔案類型(file type),後九個為檔案模式(file mode)

Linux--權限
檔案類型 所有者權限 群組權限 其他使用者權限
- rw- r– r–

檔案類型

屬性 檔案類型
- 普通檔案
d 目錄檔案
l 符号連結。注意對于符号連結檔案,剩下的檔案屬性始終是rwxrwxrwx,它是個僞屬性值。符号連結指向的檔案的屬性才是真正的檔案屬性
c 字元裝置檔案。該檔案類型表示已位元組流形式處理資料的裝置,如終端或數據機
b 快裝置檔案。該檔案類型表示以資料塊方式處理資料的裝置,如硬碟驅動或者CD光牒驅動

檔案模式分别表示檔案所有者、檔案所屬群組以及其他所有使用者對該檔案的讀取、寫入和執行權限。分别設定r、w和x的模式屬性将會讀檔案和目錄帶來不同的影響。

屬性 檔案 目錄
r 允許打開和讀取檔案 如果設定了執行權限,那麼允許列出目錄下的内容
w 允許寫入或者截短檔案;如果也設定了執行權限,那麼目錄中的檔案允許被建立、被删除以及被命名 但是該權限不允許重命名或者删除檔案。是否能重命名和删除檔案由目錄權限決定
x 允許把檔案當做程式一樣來執行。用腳本語言寫的程式檔案必須被設定為可讀,以便能被執行 允許進入目錄下,例如cd directory

權限屬性執行個體

檔案屬性 含義
-rwx------ 普通檔案,檔案所有者具有讀取、寫入和執行權限。群組成員和其他所有使用者都沒有任何通路權限
-rw------- 普通檔案,檔案所有者具有讀取和寫入權限。群組成員和其他所有使用者都沒有任何通路權限
-rw-r–r-- 普通檔案,檔案所有者具有讀取和寫入權限。檔案所有者所在群組的成員可以讀取該檔案。該檔案對于所有使用者來說都是可讀的
-rwxr-xr-x 普通檔案,檔案所有者具有讀取、寫入和執行權限,其他所有使用者也可以讀取和執行改檔案
-rw-rw---- 普通檔案,之後檔案所有者和所有者所在群組的成員具有讀取和執行權限
Lrwxrwxrwx 符号連結,所有的符号連結檔案顯示的都是“僞”權限屬性,真正的權限屬性有符号連結指向的實際檔案決定
drwxrwx— 目錄檔案,檔案所有者和所有者所在群組的成員都可以進入該目錄,而且可以建立、重命名和删除該目錄下的檔案
drwxr-x— 目錄檔案,檔案所有者可以進入該目錄,而且可以建立、重命名和删除該目錄下的檔案。所有者所在群組的成員可以進入該目錄,但是不能建立、重命名和删除該目錄下的檔案

2.1、chmod–更改檔案模式

我們可以使用​

​chmod​

​​指令來更改檔案或者目錄的模式(權限)。需要注意的是隻有檔案所有者和超級使用者才可以更改檔案或者目錄的模式。​

​chmod​

​指令支援兩種不同的改變檔案模式的方式–八進制數字表示法和符号表示法。

2.1.1、八進制數字表示法

八進制表示法指的是使用八進制數字來設定所期望的權限模式。因為每個八進制數字對應着3個二進制數字,是以這種對應關系正好可以用來存儲檔案模式的結構方式一一映射。

八進制 二進制 檔案模式
000
1 001 –x
2 010 -w-
3 011 -wx
4 100 r–
5 101 r-x
6 110 rw-
7 111 rwx
Linux--權限

通過傳遞參數600,我們可以設定檔案所有者具有讀寫權限,而取消群組使用者和其他所有使用者的所有權限。

2.1.2、符号表示法

​chmod​

​指令支援一種符号表示法來指定檔案模式。該符号表示法分為三部分:更改會影響誰、要執行哪個操作以及要設定哪種權限。可以通過字元u、g、o和a的組合來指定要影響的對象。

chmod指令符号表示法

符号 含義
u user的簡寫,表示檔案或者目錄的所有者
g group的簡寫,檔案所屬群組
o others的簡寫,表示其他所有使用者
a all的簡寫,是‘u’,‘g’和‘o’三者的組合

如果沒有指定字元,則假定使用all。操作符​

​+​

​​表示添加一種權限,​

​-​

​​表示删除一種權限,​

​=​

​表示隻有指定的權限可用,其他使用者的權限都被删除。權限由字元‘r’、‘w’和‘x’來指定。

chmod指令符号表示法執行個體

符号 含義
u+x 為檔案所有者添加可執行權限
u-x 删除檔案所有者的可執行權限
+x 為檔案所有者、所屬群組和其他所有使用者添加可執行權限,等價于a+x
o-rw 除了檔案所有者和所屬群組外,删除其他所有使用者的讀寫權限
go=rw 除了檔案所有者之外,設定所屬群組和其他所有使用者具有讀寫權限。如果所屬群組或者其他所有使用者之前已經具有可執行權限,那麼删除他們的可執行權限
u+x,go=rx 為檔案所有者添加可執行權限,同時設定所屬群組和其他所有使用者具有讀權限和可執行權限。指定多種權限時,需用逗号分隔
Linux--權限

2.2、umask–設定預設權限

​umask​

​指令控制着建立檔案時指定給檔案的預設權限。它使用八進制表示法來表示從檔案模式屬性中删除一個位掩碼。

例如:​

​umask 0037​

​​ 掩碼:​

​umask 000 000 011 111​

​ 掩碼中出現1的地方,将會發現1的位置對應的屬性被删除

所有設定的權限為:rw-r-----

原始檔案模式 rw- rw- rw-
掩碼 000 000 011 111
結果 rw- rw- r–

3、更改身份

在很多時候,我們會發現可以擁有另一個使用者的身份是很有必要的。我們經常會需要獲得超級使用者的權限來執行一些管理任務,但是也可以“變成”另一個普通使用者來執行這些任務,就好像是在測試一個賬戶。有三種方法用來轉換身份,具體如下:

  • 登出系統并以其他使用者的身份重新登入系統
  • 使用su指令
  • 使用sudo指令

在shell會話狀态下,使用​

​su​

​​指令将允許你假定為另一個使用者的身份,既可以以這個使用者的ID來啟動一個新的shell會話,也可以以這個使用者的身份來釋出一個指令。使用​

​sudo​

​ 指令将允許管理者建立一個稱為/etc/sudoer的配置檔案,并且定義一些特定的指令,這些指令隻有被賦予為假定身份的特定使用者才允許執行。

3.1、su–以其他使用者群組ID的身份來運作shell

​su​

​指令用來以另一個使用者的身份來啟動shell,該指令的一般形式如下:

​su [-[l]] [user]​

如果包含​

​-l​

​​選項,那麼得到的shell會話界面将是用于指定使用者的登入shell界面。這就意味着,該指定使用者的運作環境将被加載,而且其工作目錄也将更改為指定使用者的主目錄。如果沒有指定使用者,那麼預設假定為超級使用者。需要注意的是,​

​-l​

​​可以縮寫為​

​-​

​,而且這一形式經常被使用。

Linux--權限

我們也可以使用​

​su​

​指令執行單個指令,而不需要開啟一個新的互動式指令界面,操作方式如下:

​su -c 'command'​

​​ 例如:​

​su -c 'ls -l /usr/bin'​

3.2、sudo–以另一個使用者的身份執行指令

​sudo​

​​指令在很多方面都類似于​

​su​

​​指令,但是它另外還有一些重要的功能。管理者可以通過配置​

​sudo​

​​指令,使系統已一種可控的方式,允許一個普通使用者以一個不同的使用者身份(通常是超級使用者)執行指令。在特定情況下,使用者可能被限制為隻能執行一條或者幾條特定指令,而對其他指令沒有執行權限。另一個重要的差別在于,使用​

​sudo​

​​指令并不需要輸入超級使用者的密碼。使用​

​sudo​

​​指令時,使用者隻需要輸入自己的面來進行認證。比如說,配置​

​sudo​

​指令來允許普通使用者運作一個虛構的備份程式(稱為backup_script),這個程式需要超級使用者的權限。

[pi@raspberrypi ~]$ sudo backup_script
Password:
System Backing Starting...      

在輸入​

​sudo​

​​指令後,系統将提示輸入使用者自己的密碼(而不是超級使用者的密碼),而且一點認證通過,指定的指令就将被執行。​

​su​

​​指令和​

​sudo​

​​指令之間的一個重要差別在于​

​sudo​

​​指令并不需要啟動一個新的shell環境,而且也不需要加載另一個使用者的運作環境。這意味着,使用​

​sudo​

​指令的時候并不需要使用單引号把指令行引起來。需要注意的是,我們可以通過指定不同的選項來改變指令執行的效果

3.3、chown–更改檔案所有者和所屬群組

​chown​

​​指令用來更改檔案或者目錄的所有者和所屬群組。使用這個指令需要超級使用者的權限。​

​chown​

​指令的文法格式如下:

chown [ower][:[group]] file...      

​chown​

​指令更改的是檔案所有者還是檔案所屬群組,或者對兩者都更改,取決于該指令的第一個參數。

​chown​

​指令參數執行個體

參數 結果
bob 把檔案所有者從目前所有者更改為使用者bob
bob:users 把檔案所有者從目前所有者更改為使用者bob,并把檔案所屬群組更改為users
:admins 把檔案所屬群組更改為admins,檔案所有者不變
bob: 把檔案所有者從目前所有者更改為使用者bob,并把檔案所屬群組更改為使用者bob登入系統時所屬的組

假設有兩個使用者–擁有超級使用者權限的張三和沒有該權限的李四。使用者張三想要從他的主目錄複制一個檔案到使用者李四的主目錄中。因為使用者張三希望李四能夠編輯改檔案,是以張三把檔案的所有者從張三更改為李四。

[張三@raspberrypi ~]$ sudo cp myfile.txt ~tony
Password:
[張三@raspberrypi ~]$ sudo chown      

3.4、chgrp–更改檔案所屬群組

在更早的UNIX版本中,​

​chown​

​​指令隻能更改檔案的所有者,而不能改變檔案所屬群組。為了達到這個目的,我們可以使用一個獨立的指令​

​chgrp​

​​來實作。該指令除了限制多一點之外,和​

​chown​

​指令的使用方式幾乎相同。

4、更改使用者密碼

如果使用者超級使用者權限,那麼也可以為其他的使用者設定密碼。使用​

​passwd​

​指令,可以設定或者更改密碼。該指令的文法格式如下:

passwd [user]      

如果要更改的是使用者自己的密碼,那麼隻需要輸入​

​passwd​

​指令。接下來将會提示使用者輸入舊密碼和新密碼:

Linux--權限