天天看點

初識 Linux 檔案權限--Linux基礎教程

初識 Linux 檔案權限--Linux基礎教程

在 Linux 中最基本的任務之一就是設定檔案權限。了解它們是如何實作的是你進入 Linux 世界的第一步。如您所料,這一基本操作在類 UNIX 作業系統中大同小異。實際上,權限系統就直接取自于 UNIX 檔案權限(甚至使用許多相同的工具)。

但不要以為了解檔案權限需要長時間的學習。事實上會很簡單,讓我們一起來看看你需要了解哪些内容以及如何使用它們。

基礎概念

你要明白的第一件事是檔案權限可以用來幹什麼。當你設定一個分組的權限時發生了什麼?讓我們将其展開來說,這個概念就真的簡單多了。那到底什麼是權限?什麼是分組呢?

你可以設定的3種權限:

讀 — 允許該分組讀檔案(用r表示)

寫 — 允許該分組寫檔案(用w表示)

執行 — 允許該分組執行(運作)檔案(用x表示)

為了更好地解釋這如何應用于一個分組,例如,你允許一個分組可以讀寫一個檔案,但不能執行。或者,你可以允許一個分組讀和執行一個檔案,但不能寫。甚至你可以允許一個分組有讀、寫、執行全部的權限,也可以删除全部權限來去除該組的權限

現在,什麼是分組呢,有以下4個:

user — 檔案實際的擁有者

group — 使用者所在的使用者組

others — 使用者組外的其他使用者

all — 所有使用者

大多數情況,你隻會對前3組進行操作,all 這一組隻是作為快捷方式(稍後我會解釋)。

到目前為止很簡單,接下來我們将深入一層,http://www.lampbrother.net。

如果你打開一個終端并運作指令 ls -l,你将會看到逐行列出目前工作目錄下所有的檔案和檔案夾的清單。

會留意到最左邊那列是像是 -rw-rw-r-- 這樣的。

實際上這清單應該這樣看:

rw- rw- r--

正如你所見,清單将其分為如下3部分:

rw-

r--

權限群組的順序都很重要,順序總是:

所屬者 所屬組 其他人 — 分組

讀 寫 執行 — 權限

在我們上面示例的權限清單中,所屬者擁有讀/寫權限,所屬組擁有讀/寫權限,其他人使用者僅擁有讀權限。這些分組中賦予執行權限的話,就用一個 x 表示。

等效數值

接下來我們讓它更複雜一些,每個權限都可以用一個數字表示。這些數字是:

讀 — 4

寫 — 2

執行— 1

數值代替不是一個一個的替換,你不能像這樣:

-42-42-4--

你該把每個分組的數值相加,給使用者讀和寫權限,你該用 4 + 2 得到 6。給使用者組相同的權限,也是使用相同的數值。假如你隻想給其他使用者讀的權限,那就設定它為4。現在用數值表示為:

664

如果你想給一個檔案664權限,你可以使用 chmod 指令,如:

chmod 664 FILENAME

FILENAME 處為檔案名。

更改權限

既然你已經了解了檔案權限,那是時候學習如何更改這些權限了。就是使用 chmod 指令來實作。第一步你要知道你能否更改檔案權限,你必須是檔案的所有者或者有權限編輯檔案(或者通過 su 或 sudo 得到權限)。正因為這樣,你不能随意切換目錄和更改檔案權限。

繼續用我們的例子 (-rw-rw-r--)。假設這個檔案(命名為 script.sh)實際是個shell腳本,需要被執行,但是你隻想讓自己有權限執行這個腳本。這個時候,你可能會想:“我需要是檔案的權限如 -rwx-rw-r--”。為了設定 x 權限位,你可以這樣使用 chmod 指令:

chmod u+x script.sh

這時候,清單中顯示的應該是 -rwx-rw-r-- 。

如果你想同時讓使用者及其所屬組同時擁有執行權限,指令應該這樣:

chmod ug+x script.sh

明白這是怎麼工作的了嗎?下面我們讓它更有趣些。不管什麼原因,你不小心給了所有分組對檔案的執行權限(清單中是這樣的 -rwx-rwx-r-x)。

如果你想去除其他使用者的執行權限,隻需運作指令:

chmod o-x script.sh

如果你想完全删除檔案的可執行權限,你可以用兩種方法:

chmod ugo-x script.sh

或者

chmod a-x script.sh

以上就是所有内容,能使操作更有效率。我希望能避免哪些可能會導緻一些問題的操作(例如你不小心對 script.sh 使用 a-rwx 這樣的 chmod 指令)。

目錄權限

你也可以對一個目錄執行 chmod 指令。當你作為使用者建立一個新的目錄,通常建立目錄具有這樣的權限:

drwxrwxr-x

注:開頭的 d 表示這是一個目錄。

正如你所見,使用者及其所在組都對檔案夾具有操作權限,但這并不意味着在這檔案夾中出建立的檔案也具有與其相同的權限(建立的檔案使用預設系統的權限 -rw-rw-r--)。但如果你想在新檔案夾中建立檔案,并且移除使用者組的寫權限,你不用切換到該目錄下并對所有檔案使用 chmod 指令。你可以用加上參數 R(意味着遞歸)的 chmod 指令,同時更改該檔案夾及其目錄下所有的檔案的權限。

現在,假設有一檔案夾 TEST,裡面有一些腳本,所有這些(包括 TEST 檔案夾)擁有權限 -rwxrwxr-x。如果你想移除使用者組的寫權限,你可以運作指令:

chmod -R g-w TEST

運作指令 ls -l,你講看到列出的 TEST 檔案夾的權限資訊是 drwxr-xr-x。使用者組被去除了寫權限(其目錄下的所有檔案也如此)。

總結

現在,你應該對基本的 Linux 檔案權限有了深入的了解。對于更進階的東西學起來會很輕松,像 setgid、setuid 和 ACL 這些。沒有良好的基礎,你很快就會混淆不清概念的。

繼續閱讀