Linux最優秀的地方之一,就在於它的多使用者、多工環境。為了讓使用者具有較安全的管理機制,檔案的許可權管理是很重要的。Linux通常將檔案的訪問方式分為分為三個類別,分別是owner/group/other,而且具有read/write/excute等許可權。在Linux下面這麼多的目錄/檔案,到底代表什麼意義呢?下面我們就來一一介紹。
一、使用者與使用者組
1. 檔案擁有者(使用者)
由於Linux是多使用者、多工的系統,可能常常會多人同時使用主機工作,考慮到每個人的隱私權以及每個人喜好的工作環境,“檔案擁有者”(owner)就相當重要了。例如,將電子郵件轉存為檔案後,放在你自己的主資料夾下,這個時候,就把該檔案設定成“只有檔案擁有者,才能檢視與修改這個檔案的內容”。即使其他人知道您擁有這個檔案,但由於該檔案設定了適當的許可權,他們也無法知道該檔案的內容。
2. 使用者組
使用者組(group)就是具有相同特徵的使用者(user)的集合體;比如有時我們要讓多個使用者具有相同的許可權,比如檢視、修改某一檔案或執行某個命令,這時我們需要使用者組,我們把使用者都定義到同一使用者組,我們通過修改檔案或目錄的許可權,讓使用者組具有一定的操作許可權,這樣使用者組下的使用者對該檔案或目錄都具有相同的許可權,這是我們通過定義組和修改檔案的許可權來實現的。
首先說明一點:檔案所有者與使用者組本身沒有什麼關係,比如使用者組可以是root,但是檔案所有者為user1;
案例分析:
(1)一個檔案的檔案所有者為user1,使用者組為root,當前登入使用者為user1,
如果想要讓檔案的所有者變成root,能成功嗎?不能;
(2)一個檔案的檔案所有者為user1,使用者組為root,當前登入使用者為root,
如果想要讓檔案的所有者變成root,能成功嗎?能;
總結一點:改檔案的所有者、使用者組應該是root使用者的職責;
再說明一點:一個使用者總會歸屬於一個或多個使用者組,一個使用者組裡可以有多個使用者,比如root使用者歸屬於root使用者組,但是我們也可以建立一個使用者user1,既歸屬於group1使用者組,又歸屬於group2使用者組;
3. 其他人
在Linux中,任何一個檔案都具有“使用者、使用者組和其他人”三個許可權。我們可以用圖1.1來解釋。此時,以圖中的王三毛為例,王三毛這個“檔案”的擁有者為王三毛,它屬於王大毛這個使用者組,而張小豬相對於王三毛,則只是一個其他人而已。
圖 1.1
解釋:root是Linux和unix系統中的超級管理員使用者帳戶,該帳戶擁有整個系統至高無上的權力,所有物件他都可以操作。
二、Linux檔案許可權
1. Linux檔案屬性
開啟終端,執行ls命令,查詢檔案資訊如下圖所示
注:“連線”的含義:指佔用的節點(i-node即I節點),新建的目錄其下含有“.和..”兩個目錄,連線為2,再新增子目錄,會依次增加連線數,但增加的檔案不會增加連線數。
2. Linux 檔案許可權屬性
範例:若有一個檔案的屬性為“-rwxr-xr—”,注意下面的數字表示第幾位,不表示許可權編碼。
說明如下: [-] [r w x] [r - x] [r - -]
1 2 3 4 5 6 7 8 9 0
1:表示這個檔名為目錄或檔案(上面為檔案)。
234:擁有者的許可權(上面為可讀、可寫、可執行)。
567:同使用者組使用者許可權(上面為可讀、可執行)。
890:其他使用者許可權(上面為僅可讀)。
(1) 上面的屬性情況表示一個檔案、這個檔案的擁有者可讀、可寫、可執行。但同使用者組的人僅可讀與執行。非同使用者組的使用者僅可讀的意思。
(2) 除此之外,需要特別注意的是x。若檔名為一個目錄的時候,x與目錄的關係相當重要,如果在該目錄下不能執行任何命令的話,那麼自然也就無法進入了,因此,請特別注意,如果想要開放某個目錄讓一些人進來的話,請記住,開放該目錄的x屬性。至於目錄的許可權相關說明,我們會在下面繼續介紹。
3. 更改檔案許可權
3.1 檔案許可權三劍客:chgrp , chown , chmod
·chgrp 更改所屬組:chgrp [-R] 組名 DIR/FILE(-R 遞迴子目錄下所有檔案、目錄都更新成此組):
把DIR或FILE給組名
·chown 更改所有者:chown [選項] 使用者[ . 組] file/dir :
選項:-V 顯示chown命令所做工作。
-R 同上,句點可用“:”代替
·chmod 更改許可權:chmod [-R]nnn 檔案或目錄
注意:shell 檔案用VI編輯後,許可權會改變,需要更改許可權。
3.2 修改許可權的方式
檔案屬性的改變使用chmod命令,但是,屬性的設定方法有兩種,分別可以使用數字或者是符號。
(1) 數字型別改變檔案許可權
Linux檔案的基本屬性有9個,分別是owner/group/others,組別的read/write/ excute屬性,先複習一下剛剛上面提到的資料:
–rwx rwx rwx
這9個屬性是三個一組。其中,可以使用數字來表示各個屬性,各屬性的對照表如下:
許可權代表數: r→4; w→2; x→1
同一組(owner/group/others)的3個屬性(r/w/x)是需要累加的,例如當屬性為 [-rwxrwx---] 則是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
所以,等一下設定屬性的更改時,該屬性的數字就是770。
更改屬性的命令chmod的語法是這樣的:
[root@linux ~]# chmod [-R]xyz 檔案或目錄
引數:
xyz : 就是剛剛提到的數字型別的許可權屬性,為 rwx 屬性數值的相加。
-R : 進行遞迴( recursive )的持續更改,即連同子目錄下的所有檔案、目錄都更新成為這個使用者組。常常用在更改某一目錄的情況。
(2) 符號型別改變檔案許可權
還有一個改變屬性的方法。從之前的介紹中可以發現,基本上就9個屬性,分別是 (1)user (2)group (3)others三組。我們就可以通過u, g, o來表示三組的屬性。此外,a表示all,即全部的三組。讀寫屬性可以寫成r, w, x。也就是可以使用下面的方式來看:
假如我們要“設定”一個檔案的屬性為“- rwx r-x r-x”,基本上就是:
user (u):具有可讀、可寫、可執行的許可權。
group與others (g/o):具有可讀與執行的許可權。
所以就是: chmod u=rwx,go=rx .bashrc
# 注意。那個 u=rwx,go=rx 是連在一起的,中間並沒有任何空格。