Linux檔案屬性與目錄配置

使用者與羣組

初次接觸 Linux 的朋友大概會覺得很怪異,怎麼『Linux 有這麼多使用者,還分什麼羣組,有什麼用?』。這個『使用者與羣組』的功能可是相當健全而好用的一個安全防護呢!怎麼說呢?由於 Linux 是個多人多工的系統 ( 已經提過若干次囉! ),因此可能常常會有多人同時使用這部主機來進行工作的情況發生,爲了考慮每個人的隱私權,因此,這個『檔案擁有者』的角色就顯的相當的重要了!例如當你將你的e-mail情書轉存成檔案之後,放在您自己的家目錄,您總不希望被其他人看見自己的情書吧?這個時候,你就把該檔案設定成『只有檔案擁有者,就是我,才能看與修改這個檔案的內容』,那麼即使其他人知道你有這個相當『有趣』的檔案,不過由於您有設定適當的權限,所以其他人自然也就無法知道該檔案的內容囉!

那麼羣組呢?爲何要設定檔案還有所屬的羣組?其實,羣組最簡單的功能之一,就是當您在團隊開發資源的時候最有用啦!舉個例子來說好了,假如在我的主機上面有兩個團體,這第一個團體名稱爲 testgroup 而他的成員是 test1, test2, test3 三個,第二個團體名稱爲 treatgoup 他的團員爲 treat1, treat2, treat3,這兩個團體之間是互相有競爭性質的,但是卻又要繳交同一份報告,然而每組團員又需要同時可以修改自己的團體內任何人所建立的檔案,且不能讓非自己團體以外的人看到自己的檔案內容!這個時候怎麼辦?呵呵!在 Linux 底下可就很簡單啦!我可以經由簡易的檔案權限設定,就能限制非自己團隊( 亦即是羣組囉 )的其他人不能夠閱覽內容囉!而且亦可以讓自己的團隊成員可以修改我所建立的檔案!同時,如果我自己還有私人隱密的文件,仍然可以設定成讓自己的團隊成員也看不到我的檔案資料?很方便吧!另外,如果 teacher 這個帳號是 testgroup 與 treatgroup 這兩個羣組的老師,他想要同時觀察兩者的進度,因此需要兩邊的羣組都能夠進去觀看,這個時候,您可以設定 teacher 這個帳號,『同時支援 testgroup 與 treatgroup 這兩個羣組!』,也就是說,每個人都可以有多個羣組的支援呢!

這樣說或許你還不容易理解這個使用者與羣組的關係吧?沒關係,我們可以使用目前『家庭』的觀念來進行解說喔!假設有一家人,家裏只有三兄弟,分別是王大毛、王二毛與王三毛三個人,而這個家庭是登記在王大毛的名下的!所以,『王大毛家有三個人,分別是王大毛、王二毛與王三毛』,而且這三個人都有自己的房間,並且共同擁有一個客廳喔!

·由於王家三個人各自擁有自己的房間,所以,王二毛雖然可以進入王三毛的房間,但是二毛不能翻三毛的抽屜喔!那樣會被三毛 K 的!因爲抽屜裏面可能有三毛自己私人的東西,例如情書啦,日記啦等等的,這是『私人的空間』,所以當然不能讓二毛拿囉!

·由於共同擁有客廳,所以王家三兄弟可以在客廳打開電視機啦、翻閱報紙啦、坐在沙發上面發呆啦等等的!反正,只要是在客廳的玩意兒,三兄弟都可以使用喔!因爲大家都是一家人嘛!

這樣說來應該有點曉得了喔!那個『王大毛家』就是所謂的『羣組』囉,至於三兄弟就是分別爲三個『使用者』,而這三個使用者是在同一個羣組裏面的喔!而三個使用者雖然在同一羣組內,但是我們可以設定『權限』,好讓某些使用者個人的資訊不被羣組的所有人查詢,以保有個人『私人的空間』啦!而設定羣組共享,則可讓大家共同分享喔!

好了,那麼今天又有個人,叫做張小豬,他是張小豬家的人,與王家沒有關係啦!這個時候,除非王家認識張小豬,然後開門讓張小豬進來王家,否則張小豬永遠沒有辦法進入王家,更不要說進到王三毛的房間啦!不過,如果張小豬透過關係認識了三毛,並且跟王三毛成爲好朋友,那麼張小豬就可以透過三毛進入王家啦!呵呵!沒錯!那個張小豬就是所謂的『其他人, Others 』囉!因此,我們就可以知道啦,在 Linux 裏面,任何一個檔案都具有『User, Group 及 Others』三個權限!我們可以將上面的說明以底下的圖示來解釋:

 

不過,這裏有個特殊的人物要來介紹的,那就是『萬能的天神』!這個天神具有無限的神力,所以他可以到達任何他想要去的地方,呵呵!那個人在 Linux 系統中的身份代號是『 root 』啦!所以要小心喔!那個 root 可是『萬能的天神』喔!

無論如何,『使用者身份』,與該使用者所支援的『羣組』概念,在 Linux 的世界裏面是相當的重要的,他可以幫助您讓您的多工 Linux 環境變的更容易管理!更詳細的『身份與羣組』 設定,我們將在帳號管理再進行解說。底下我們將針對檔案系統與檔案權限來進行說明。

Linux 檔案屬性:

大致瞭解了 Linux 的使用者與羣組之後,接着下來,我們要來談一談,那麼這個檔案的權限要如何針對這些所謂的『使用者』與『羣組』來設定該檔案的權限呢?這個部分是相當的重要的,尤其對於初學者來說,因爲檔案的權限與屬性是學習 Linux 的一個相當重要的關卡,如果沒有這部份的概念,那麼您將老是聽不懂別人在講什麼呢!尤其是當您在您的螢幕前面出現了『Permission deny』的時候,不要擔心,『肯定是權限設定錯誤』啦!呵呵!好了,閒話不多聊,趕快來瞧一瞧先:

嗯!既然要讓你瞭解 Linux 的檔案屬性,那麼有個重要的也是常用的指令就必須要先跟你說囉!那一個?!就是『 ls 』這一個 list 檔案的指令囉!在你以 root 的身份登入 Linux 之後,下達『ls -al 』看看,會看到底下的幾個咚咚:

[root@tsai root]# ls -al total 64 drwxr-x---4 root root 4096 Feb 14 22:02 . drwxr-xr-x  23 root root 4096 Feb 16 13:35 .. -rw-r--r--1 root root 1210 Feb 10 06:03 anaconda-ks.cfg -rw-------1 root root12447 Feb 14 23:22 .bash_history -rw-r--r--1 root root  24 Jun 11 2000 .bash_logout -rw-r--r--1 root root 234 Jul 6 2001 .bash_profile -rw-r--r--1 root root 217 Feb 9 22:06 .bashrc -rw-r--r--1 root root 210 Jun 11 2000 .cshrc drwx------2 root root 4096 Feb 14 21:54 .gnupg -rw-------1 root root8 Feb 14 22:05 .mysql_history drwx------2 root root 4096 Feb 10 00:44 .ssh -rw-r--r--1 root root 196 Jul 11 2000 .tcshrc -rw-r--r--1 root root 1126 Aug 24 1995 .Xresources 第一欄 二 三 四五 六七 [檔案屬性][檔案數][擁有者][所有者羣組][大小][建檔日期][檔名]

ls 是『list』的意思,與在早期的 DOS 年代的 dir 類似功能。而參數『-al』則表示列出所有的檔案(包含隱藏檔,就是檔名前面第一個字元爲 . 的那種檔案)。如上所示,在你第一次以 root 身份登入 Linux 時,如果你輸入指令後,應該有上列的幾個東西,先解釋一下上面七個欄位個別的意思:

 

1. 第一欄代表這個檔案的屬性:這個地方最需要注意了!仔細看的話,你應該可以發現這一欄其實共有十個屬性:

 

1.

o第一個屬性代表這個檔案是『目錄、檔案或連結檔』:

§當爲[ d ]則是目錄,例如上表的第 11 行;

§爲[ - ]則是檔案,例如上表的第 5 行;

§若是[ l ]則表示爲連結檔(link file);

§若是[ b ]則表示爲裝置檔裏面的可供儲存的周邊設備;

§若是[ c ]則表示爲裝置檔裏面的序列埠設備,例如鍵盤、滑鼠。

o接下來的屬性中,三個爲一組,且均爲『rwx』的三個參數的組合。其中,[ r ]代表可讀、[ w ]代表可寫、[ x ]代表可執行:

§ 第一組爲『所有人的權限』,以第五行爲例,該檔案的所有人可以讀寫,但不可執行;

§第二組爲『同羣組的權限』;

§第三組爲『其他非本羣組的權限』。

範例:若有一個檔案的屬性爲『-rwxr-xr--』,簡單的可由下面說明之:

[-][rwx][r-x][r--] 1 234 567 890 1 爲:代表這個檔名爲目錄或檔案(上面爲檔案) 234爲:擁有人的權限(上面爲可讀、可寫、可執行) 567爲:同羣組使用者權限(上面爲可讀可執行) 890爲:其他使用者權限(上面爲僅可讀)

上面的屬性情況代表一個檔案、這個檔案的擁有人可讀可寫可執行、但同羣組的人僅可讀與執行,非同羣組的使用者僅可讀的意思!

o除此之外,需要特別留意的是 x 這個標號!若檔名爲一個目錄的時候,例如上表中的 .ssh 這個目錄:

drwx------2 root root 4096 Feb 10 00:44 .ssh

可以看到這是一個目錄,而且只有 root 可以讀寫與執行。但是若爲底下的樣式時,請問非 root 的其他人是否可以進入該目錄呢?

drwxr--r--2 root root 4096 Feb 10 00:44 .ssh

咦!似乎好象是可以喔!因爲有可讀[ r ]存在嘛!『錯!』答案是非 root 這個帳號的其他使用者均不可進入 .ssh 這個目錄,爲什麼呢?因爲 x 與 目錄 的關係相當的重要,如果您在該目錄底下不能執行任何指令的話,那麼自然也就無法執行 ls, cd 等指令,所以囉,也就無法進入了,因此,請特別留意的是,如果您想要開放某個目錄讓一些人進來的話,請記得將該目錄的 x 屬性給開放呦!

o另外,你也必須要更加的小心的是,在 Windows 底下一個檔案是否具有執行的能力是藉由『附檔名』來執行的,例如:.exe, .bat, .com 等等,但是在 Linux 底下,我們的檔案是否能執行,則是藉由是否具有 x 這個屬性來決定的!所以,跟檔名是沒有絕對的關係的!這點還請特別留意呢!

2.第二欄表示爲連結佔用的節點 (i-node) ( 若爲目錄時,通常與該目錄底下還有多少目錄有關 )這部分將在介紹連結 link 檔案時 (下一節) 再深入的介紹!;

3.第三欄表示這個檔案(或目錄)的『擁有人』;

4.第四欄表示擁有人的羣組;

這裏再次解釋一下,在 Linux 中,你的 ID ( 如 root 或 test 等帳號均是所謂的 ID ) 即是你的身份,而且你還有附屬在一個或多個羣組之下,例如剛剛我們上面提到的,你有一個團體 ( 即羣組 ) 代號爲 testgroup ,且這個羣體裏有三個人,其代號分別是 test1, test2, 與 test3,則這三個人爲同一羣組即 testgroup!那麼如果以上圖的[-rwxrwx---]的檔案屬性來看,如果該檔案屬於 test1 所有,那麼 test2, test3 亦有讀、寫、執行的權力,因爲他們都屬於同一個 group 呀!而如果您不是屬於 test1, test2, test3 的任何一個人,也不屬於 testgroup 這個羣組時,那麼您將不具備讀、寫、執行這個檔案的權限了!

5.第五欄爲這個檔案的大小;

6.第六欄爲這個檔案的建檔日期或者是最近的修改日期,分別爲月份、日期及時間。請特別留意,如果您是以繁體中文來進行安裝您的 Linux 時,那麼預設的語系可能會被改爲中文。而由於中文無法顯示在文字型態的終端機上面,所以這一欄會成爲怪怪的亂碼,這個時候,請修改一下 /etc/sysconfig/i18n 這個檔案,裏面的『 LC_TIME 』修改爲:『 LC_TIME=en 』再儲存離開,再登入一次,就可以得到英文字形顯示的日期了!那麼如何修改該檔案呢?呵呵!以 root 身份用 vi 修改! ;

7. 第七欄爲這個檔案的檔名,如果檔名之前多一個『 . 』,則代表這個檔案爲『隱藏檔』,例如上表第 6 行的『.bashrc_history』檔名即是隱藏檔,由於我們有下一個參數爲 ls -al,所以連隱藏檔都列出來,如果你只輸入 ls 則檔名有加『 . 』的檔案就不會被顯示出來!

對於更詳細的 ls 用法,還記得怎麼查詢嗎?對啦!使用 man ls 或 info ls 去看看他的基礎用法去!自我進修是很重要的,因爲『師傅帶進門,修行在個人!』,自古只有天才學生,沒有天才老師呦!加油吧! ^_^

·例題一:如果有下面的兩個檔案: -rw-r--r--  1 root root 238 Jun 18 17:22 test.txt -rwxr-xr--  1 test1testgroup5238 Jun 19 10:25 ping_tsai 請說明兩個檔案的擁有者與其相關的權限爲何? 答: o 檔案『 test.txt 』的擁有人爲 root ,羣組爲 root 。至於權限方面則只有 root 這個帳號可以存取此檔案,其他人則僅能讀此檔案; o 另一個檔案『 ping_tsai 』的擁有人爲 test1 ,而羣組爲 testgroup。其中, test1 可以針對此檔案具有可讀可寫可執行的權力,而同羣組的 test2, test3 兩個人與 test1 同樣是 testgroup 的羣組帳號,則僅可讀可執行但不能寫 (亦即不能修改),至於非 testgoup 這一個羣組的人則僅可以讀,不能寫也不能執行!

·例題二:如果我的目錄爲底下的樣式: drwxr-xr--  1 test1testgroup5238 Jun 19 10:25 groups/ 請問 testgroup 這個羣組的成員與其他人( others )是否可以進入本目錄? 答: o 檔案擁有者 test1 可以在本目錄中進行任何工作; o 而 testgroup 這個羣組的帳號,例如 test2, test3 亦可以進入本目錄進行工作,但是不能在本目錄下進行寫入的動作; o 至於 other 的權限中雖然有 r ,但是由於沒有 x 的權限,因此 others 的使用者,並不能進入此目錄!

Linux 檔案屬性的重要性:

與 Windows 系統不一樣的是,在 Linux 系統(或者說 Unix-Like 系統)當中,每一個檔案都多加了很多的屬性進來,尤其是羣組的概念,這樣有什麼用途呢?基本上,最大的用途是在『安全性』上面的。舉個簡單的例子,在你的系統中,關於系統服務的檔案通常只有 root 才能讀寫,或者是執行,例如 /etc/shadow這一個帳號管理的檔案,由於該檔案記錄了你的系統中的所有帳號的資料,因此是很重要的一個資訊檔,當然不能讓任何人讀取,只有 root 才能夠來讀取囉!所以該檔案的屬性就會成爲 [ -rw------- ]囉!

那麼,如果你有一個開發團隊,在你的團對中,你希望每個人都可以使用某一些目錄下的檔案,而非你的團隊的其他人則不予以開放呢?以上面的例子來說,testgroup 的團隊共有三個人,分別是 test1, test2, test3 !那麼我就可以將 test1 的檔案屬性訂爲 [ -rwxrwx--- ]來提供給 testgroup 的工作團隊使用囉!這可是相當重要的。

再舉個例子來說,如果你的目錄權限沒有作好的話,可能造成其他人都可以在你的系統上面亂搞囉!例如本來只有 root 才能做的開關機、ADSL 的撥接程式、新增或刪除使用者等等的指令,若被你改成任何人都可以執行的話,那麼如果使用者不小心給你重新開機啦!重新撥接啦!等等的!那麼你的系統不就會常常莫名其妙的掛掉囉!而且萬一你的使用者的密碼被其他不明人士取得的話,只要他登入你的系統就可以輕而易舉的執行一些 root 的工作!可怕吧!因此,在你修改你的 linux 檔案與目錄的屬性之前,一定要先搞清楚,什麼是可變的,什麼是不可變的!千萬注意囉!
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章