Linux中的用戶
Linux中的用戶有三類,分別是:
- 所有者(u)
- 同組用戶(g)
- 其他人(o)
如下圖所示,假設存在兩個組:groupA和groupB,rachel和ross屬於組groupA,monica屬於GroupB。

如果存在一個文件friends.c,其所有者是rachel,那么,該文件的同組用戶(g)是ross,其他用戶(o)是monica。需要注意的是在Linux中,存在一個至高無上的用戶:root,他默認屬於root組。
一個用戶可以屬於多個組 |
為了后續試驗方便,我們按照上圖創建groupA和groupB以及屬於這兩個組的用戶:

|
Linux中的權限
Linux中的權限分為3種,分別是讀(read)、寫(write)和執行(execute),在系統中分別記作:
r、w和x,或者用數字表示為
4、2和1。
下面我們把用戶切換為rachel,在rachel的家目錄/home/rachel下用vi命令創建文件純文本文件friends.c,內容如下:
include<stdio.h> int main() { printf("hello world\n"); }
也可以在桌面環境下使用文本編輯器(ubuntu中默認的是gedit)創建文件,但是很多人都喜歡用vi這個工具,筆者不是很熟,也無法體會vi有多么方便,不過想想拔了鼠標一頓敲鍵盤確實是XX不二利器啊。另外,如果Linux系統被當做服務器使用,那就沒有必要使用desktop版本了,在純字符環境下難免也要編輯一些文本,所有,vi是必須要了解的,最起碼了解一些基本功能,否則會氣瘋掉的........下面說說vi的基本功能:
更多vi使用方法可以去google搜索,或使用命令man vi 進行查看,以上三步驟僅僅能讓編輯者不至於瘋掉,還有很多功能呢......
|
創建完畢后使用ls -l 查看着文件的相關權限,如下圖所示:

|
請注意上圖中被熒光筆標注的“rw-r--r--”。前面說過Linux中的用戶分為三類,分別是所有者、同組用戶和其他用戶。從左往右:“rw-”表示所有者具有讀和寫的權限;“r--”表示同組用戶具有讀的權限;第二個"r--"表示 其他用戶也具有讀的權限。可見
“rw-r--r--”可三個三個分為三組,每組的第一個字符表示是否可讀(是用“r”表示,否用“-”表示),第二個字符表示是否可寫(
是用“w”表示,否用“-”表示),第三個字符表示是否可執行
(
是用“x”表示,否用“-”表示)。第一組表示所有者的權限,第二組表示同組用戶的權限,第三組表示其他用戶的權限。
例如: 一個文件的屬性是”rwxrwxrwx“則表示任何人對此文件都有讀寫執行的權限。
friends.c文件的權限默認屬性是:”rw-r--r--“,含義為:rachel(所有者)可以讀寫這個文件,ross(同組用戶)只可以讀這個文件、monica(其他用戶)也是可以讀這個文件,如果將用戶切換到ross或者是monica,然后再編輯並保存friends.c文件就會報權限錯誤的,因為他們沒有寫的權限。
權限對於文件的意義
- 讀:可查看文件的內容
- 寫:可修改文件的內容
- 執行:可執行文件
|
現在使用gcc命令編譯friends.c文件:
gcc friends.c -o friends.out
當前目錄下會生成一個friends.out的文件,我們來看看這個文件的屬性:

"rwxr-xr-x"表示 rachel可以讀、寫和執行這個文件;ross可以讀、執行這個文件;monic可以讀、執行這個文件,用rachel的身份打入如下命令:./friends.out
./ 表示當前目錄,其實friends.out本來就在當前目錄,但是如果不加./,Linux會去$PATH中找friends.out,結果當然是找不到,這點和windows不一樣 |
結果是我們熟悉的hello wolrd

下面我們把執行權限給去掉:chmod u-x friends.out

啊啊啊啊啊,執行不了。
4:r2:w1:x3 = 2 + 1:wx5 = 4 + 1:rx6 = 4 + 2:rw7 = 4 + 2 + 1:rwx
|
權限對於目錄的意義
權限對於文件的意義很好理解,但是目錄的讀、寫和執行是怎么回事呢?先來看下/home/rachel這個目錄的權限:

同組用戶ross對這個目錄是沒有寫權限的,這個意味着什么呢,現在將用戶切換到ross,試圖在/home/rachel底下用vi創建一個文本文件,果斷報錯如下:

切換回rachel,執行命令:chmod g+w /home/rachel ,在切換到ross,再試圖創建文件。哇塞,成功了。這個例子說明對於目錄的寫權限,就是指可以對這個目錄里面的內容進行刪除或創建的操作(或者說更改了目錄里的內容)。用類似的方法做實驗:
切換回rachel,把ross的讀(
chmod g-r /home/rachel
)權限干掉,再切換到ross,cd到/home/rachel,執行ls,報錯:

可見,如果對於一個目錄沒有讀權限,則不能看到這個目錄里有什么東西
切換回rachel,把ross的讀權限還原,把執行權限干掉(chmod g+r-x),在切換到ross,cd 到/home/rachel........等等,我去,cd命令無法執行了:

可見,如果對一個目錄沒有執行權限,那么這個目錄就不能cd進去,不能作為當前工作目錄,如果試圖打開、執行里面的文件的話毅然報權限錯誤(但是能夠執行ls /home/rachel命令,因為ross對這個目錄具有讀權限)
對於目錄,總結如下:
- 讀:可以查看目錄下的內容
- 寫:可修改目錄下的內容(新增或刪除)
- 執行:可將目錄作為當前工作目錄,可對目錄中的文件執行相應的操作(當然,如果對某文件沒有讀、寫或執行的權限,即使對其父目錄有執行權限也啥都干不了)
對於目錄,要想某用戶使用其中的文件,必須要賦予某用戶讀和執行的權限,但是寫權限不能輕易給予,因為對一個目錄具有了寫的權限意味着可以刪除目錄中的文件 |
后記
最近開始學習Linux。為了強迫自己使用Linux,把家里的電腦上了Ubuntu。我覺得Windows太好用了,會把人用懶,想必熟練了Linux后對操作系統應該會有一個更加深入的認識,此外,萬一哪天想起什么創業點子,也可以使用php、java等免費方案在費用較低的Linxu主機上部署網站之類的,是個省錢的好辦法。
本文適合初學者閱讀,也希望高手給予點評,不甚感激。