linux中的群組與許可權
使用者與群組
1.檔案擁有者
初次接觸linux的朋友會覺得很差異,怎麼linux那麼多的使用者,還分什麼群組,有什麼用?這個使用者與群組的功能是相當的健全而又好用的以一個安全防護呢。怎麼說呢,由於linux是多人多工的系統,因此可能常常有人同時使用這部主機進行工作的情況發生,為了考慮每個人的隱私以及每個人喜好的工作環境,因此這個檔案擁有者的角色就顯得相當的重要了。
例如將你的email情書轉換為檔案之後,放在自己的家目錄,你總不希望被其他人看到自己的情書吧。這個時候,你就把該檔案設定成只有檔案擁有者,也就是我,才能看到這個檔案的內容,那麼即使其他人知道你有這個相當有趣的檔案,不過由於你有設定適當的許可權,所以其他人自然也就無法知道該檔案的內容了。
2.群組概念
那麼群組呢?為何要設定檔案檔案還有所屬群組?其實群組是最有用的功能之一,就是當你在團隊開發資源的時候!舉例來說,假設有兩組專題生在我的主機裡面。第一額專題組為prijecta,裡面成員有class1,class2,class三個;第二個專題組別為projectb,裡面的成員有class4,class5,class6,這兩個專題之間是有競爭的,但是要交統一份報告。每組的組員之間必須能夠相互修改對方的資料,但是其他組的組員則不能看到本組自己的檔案內容。
在linux下這樣的限制是很簡單的,我們可以由簡易的檔案許可權設定,就能限制非自己團隊(亦即是群組)的其他人不能查閱內容奧。而且可以讓自己的團隊成員修改我所建立的檔案。如果我自己還有私人的隱祕檔案,仍然可以設定成讓自己的團隊成員也看不到我的檔案資料。
另外,如果teacher這個帳號是projecta與projectbb這兩個專題的老師。他想要同時觀察兩者的進度,因此需要能夠進入兩個群組的許可權時,你可以設定teacher這個帳號,同時支援prijecta和projectb這兩個群組,也就是說,每個帳號都可以有所群組的支援呢。
這樣說或許你還不容易理解這個使用者與群組的關係吧?沒關係,我們可以使用目前『家庭』的觀念來進行解說喔! 假設有一家人,家裡只有三兄弟,分別是王大毛、王二毛與王三毛三個人, 而這個家庭是登記在王大毛的名下的!所以,『王大毛家有三個人,分別是王大毛、王二毛與王三毛』, 而且這三個人都有自己的房間,並且共同擁有一個客廳喔!
使用者的意義:由於王家三人各自擁有自己的房間,所以, 王二毛雖然可以進入王三毛的房間,但是二毛不能翻三毛的抽屜喔!那樣會被三毛 K 的! 因為抽屜裡面可能有三毛自己私人的東西,例如情書啦,日記啦等等的,這是『私人的空間』,所以當然不能讓二毛拿囉!
群組的概念:由於共同擁有客廳,所以王家三兄弟可以在客廳開啟電視機啦、 翻閱報紙啦、坐在沙發上面發呆啦等等的! 反正,只要是在客廳的玩意兒,三兄弟都可以使用喔! 因為大家都是一家人嘛!
這樣說來應該有點曉得了喔!那個『王大毛家』就是所謂的『群組』囉, 至於三兄弟就是分別為三個『使用者』,而這三個使用者是在同一個群組裡面的喔! 而三個使用者雖然在同一群組內,但是我們可以設定『許可權』, 好讓某些使用者個人的資訊不被群組的擁有者查詢,以保有個人『私人的空間』啦! 而設定群組共享,則可讓大家共同分享喔!
3.其他人的概念
好了,那麼今天又有個人,叫做張小豬,他是張小豬家的人,與王家沒有關係啦! 這個時候,除非王家認識張小豬,然後開門讓張小豬進來王家,否則張小豬永遠沒有辦法進入王家, 更不要說進到王三毛的房間啦!不過,如果張小豬透過關係認識了三毛,並且跟王三毛成為好朋友,那麼張小豬就可以透過三毛進入王家啦!呵呵!沒錯!那個張小豬就是所謂的『其他人
因此,我們就可以知道,在linux裡面,任何一個檔案都具有User,Group以及Other。
我們以王三毛為例,王三毛這個檔案的擁有者為王三毛,它屬於王大毛這個群組,而張小豬相對於王三毛,則只是一個『其他人Other』而已。
不過,這裡有個特殊的人物來介紹,那就是萬能的天神,這個天神具有無限的神力,所以他可以到達任何他想要去的地方,呵呵,這個身份就是root。
Linux使用者身份與群組記錄的檔案
在我們linux系統中,預設情況下,所有的系統上的帳號與一般身份使用者,還有那個root的相關資訊,都是記錄在/etc/passwd這個檔案內的。至於個人密碼都是記錄在/etc/shadow這個檔案內的。此外,linux所有的組名都記錄在/etc/group內!
linux檔案許可權概念
大致瞭解 了linux的使用者與群組之後,接著下來,我們要來談談,這個檔案的許可權要如何針對這些所謂使用者和群組來設定呢。這個部分相當的重要,因為檔案的許可權與屬性是學習linux的一個重要的關卡,如果沒有這部分的概念,那將會很困難。
Linux檔案屬性
既然要了解linux的檔案屬性,那麼有個重要的也是常用的指令要先說一下羅。那就是ls檢視檔案的指令。在你以root的身份登陸linux後,下達ls -al看到:
ls是list的意思,重點在顯示檔案的檔案名與屬性,而選項-al則表示列出所有檔案的許可權與屬性(包含隱藏檔案,就是檔名的第一個字元為.的檔案),如上所表示,第一次以root身份登陸linux時,如果輸入上述指令之後,應該有上列幾個東西,先解釋以下上面7個子段分別的意思:
第一欄代表這個檔案的型別和許可權(permission):
這個地方需要特別注意了,仔細看的話,你應該可以發現這一欄目共有10個字元
第一個字元代表這個檔案是目錄/檔案/連結檔案等等
當為d則是目錄,例如上表檔名為.gconf的那一行;
當為-則是檔案,例如上表檔名為install.log那一行;
若是l則表示為連結(link file)
若是b則表示為裝置檔案裡面的可供儲存的藉口裝置(可隨機存取裝置)
若是c則表示為裝置檔案裡面的串列埠裝置,例如鍵盤/滑鼠(一次性讀取裝置)
接下來的字元中,以三個分為一組,且均為rwx的三個引數組合,其中r代表可讀,w代表可寫,x代表可執行。要注意的是,這三個許可權的位置不會改變,如果沒有許可權,就會出現-而已。
第一組為檔案擁有者的許可權,以install.log那個檔案為例,該檔案的擁有者可以讀寫,但是不可執行。
第二組為同群組的許可權
第三組為其他分群組的許可權
第二欄表示有多少檔名連結到此節點(i-node)
每個檔案都會將他的許可權與屬性記錄到檔案系統的i-node中,不過,我們使用的目錄樹卻是使用檔名來記錄,因此每個檔名就會連線到一個i-node。這個屬性記錄的,就是有多少不同的檔名連線到相同的i-node號碼就是了。
第三欄表示這個檔案(或者目錄)的擁有者帳號
第四欄表示這個檔案的所屬群組
在linux系統中,你的帳號會附屬於一個或者多個的群組中。舉我們剛剛提到的例子,class1,class2,class3三人對於該檔案都具有可讀可寫可執行的許可權(看群組許可權)。但如果不屬於projecta的其他帳號,對於此檔案就不具有任何許可權了。
第五個為這個檔案的容量大小,預設單位為bytes;
第六個欄為這個檔案的建檔日期
第七欄為這個檔案的檔名