在Linux中,我們可以對文件或文件夾設置權限(r,w,x,-)。然而,對文件和文件夾的權限設置,具有不同的意義。下面,通過幾個例子來了解一下權限的意義所在。在開始之前,我們需要了解幾個修改權限的命令:
備注:在測試環境中,通過兩組用戶名/用戶組來演示。這兩組分別為:root/root,Jonathan/Jonathan。此外,下面的例子都是連續的,也就是當前的例子是基於前面的例子。
chgrp - change group,用於修改文件/文件夾的用戶組。
現在,/home/Jonathan/JonathanTestFolder下面有一個JonathanFile.txt,先來看一下這個文件的屬性,通過ls -l列出:
下面,通過chgrp,將用戶組改成root,即:chgrp root JonathanFile.txt
chown - change ownership,使用該命令改變文件/文件夾的owner。其實,也可以通過該命令實現chgrp的功能,下面就通過幾個例子來說明:
更改JonathanFile.txt的owner為root:chown root JonathanFile.txt
更改JonathanFile.txt的owner/group為Jonathan/Jonathan:chown Jonathan:Jonathan JonathanFile.txt
更改JonathanFile.txt的group為root:chown :root JonathanFile.txt [其實,這里的冒號(:)也是可以用點(.)代替的,但是我們起用戶名的時候,可能也用到來點,所以還是統一用冒號吧]
chmod - change mode,使用該命令改變對文件/文件夾的權限(即rwx-)。改變權限,可以通過下面幾種方式:
1. rwx-對應了不同的數值,即r = 4,w = 2,x = 1,- = 0。所以,rwx = 4 + 2 +1 = 7,rw- = 4 + 2 + 0 = 6。那么,表示權限的字符串就可以用相應的數字組合表示。舉個例子,現在JonathanFile.txt的權限為:-rw-rw-r--,那么用數值表示就是:-664。現在,我們通過這個命令,改變這個對這個文件的權限為:-rwxrwx---。那么,我們可以執行: chmod 770 JonathanFile.txt (在命令中,第一個字符,也就是表示文件類型的字符不用包括進去)
2. 我們也可以直接用rwx來設置權限。使用這種方式,需要顯示制定用戶/用戶組的權限。在命令中通過ugoa來表示用戶/用戶組。u代表文件所屬着,也就是owner。以此類推:g表示用戶組,o表示others。a表示all,所有。上個例子中,我們已經把權限改成了rwx rwx ---,現在我們希望owner的權限依然為rwx,但是用戶組權限改為r--,others的權限改為r--,那么我們可以執行:chmod u=rwx,go=r-- JonathanFile.txt
3. 如果我們並不關心當前的權限怎樣,我們只是希望所有用戶(all)都有x的權限,那么我們可以執行:chmod a+x JonathanFile.txt (+表示增加某種權限,相應的,-表示去除某種權限)
到目前為止,相信我們對chgrp/chown/chmod都有一定的了解了。其實還有很多選項可以和這幾個命令組合使用,使用的過程中,就多man吧。那,權限對於文件/文件夾的意義到底是什么呢?
權限對於文件的意義:對於文件而言,權限決定了某個用戶可以對一個文件內容可以操縱的程度:對文件可讀、可寫還是可執行。需要值得注意的是,在Linux中,文件是否可執行並不是通過文件的擴展名控制的,而是看是否具有x權限。我們可能會遇到在網上下載的文件不可執行,那么這種情況可以先檢查一下對這個文件是否有x權限。/
權限對於文件夾的意義:其實文件價可以看成一個列表,這個列表里包括來文件價下面的所有文件/文件夾。對於文件夾,r和w都好理解,那么x呢?x代表什么?直接來幾個例子吧:
1. 我們修改一下JonathanTestFolder的權限,使得用戶Jonathan僅僅具有rw權限,但沒有x。那么,ls的時候,我們僅能知道該目錄下面有那么一個文件,但詳細信息都看不到的。
2. 接着上一個例子,沒有x,只有rw,我無法查看該文件夾下面的文件的詳細信息,那么我能在這個文件夾下面創建新文件么。答案是否定的,因為我沒辦法進入到這個文件夾里,就因為沒有x
通過以上例子,可以得出x對於文件夾,很重要。即使有rw卻沒有x,我們也沒辦法訪問文件夾下面的文件。
那么,是不是意味着對文件夾的x權限,都應該給呢?當然不是,當對文件夾有w和x的權限時,我們可以刪除文件夾下面的任意文件,即使我們本身對下面的文件沒有任何權限。下面來看一個例子:
1. 我們修改一下Jonathan對JonathanTestFolder的權限,使之為rwx
2. 使用root賬戶在JonathanTestFolder下面建立一個文件rootfile.txt,同時設置權限,使得Jonathan對這個文件沒任何權限
3. 使用Jonathan賬戶,刪除rootfile.txt成功!
所以,設置權限,一定要慎重哦!(本文完)