Linux檔案屬性與許可權控制

來源:互聯網
上載者:User

1 多使用者多任務-->需要許可權控制:

    存取方式:owner(所有者) group(組) other(其他)
    檔案屬性:通過檔案屬性的設定來控制以上三種方式的存取權限

2 重點檔案屬性的格式和各項欄位含義    ////實踐

 
 用ls -al  以長格式的形式查看家目錄下的檔案:

  

 

每一行代表了一個檔案屬性所具有的內容。我們以某個檔案test來說明各個欄位:

檔案屬性  串連數  所有者  所屬群組  檔案大小  最後修改時間      檔案名

例如:

-rwxrwxr-x  2    jmz    jmz    1698    2012-3-12  19:00      test

1)檔案屬性:-rwxrwxr-x

10個字元,第一個代表這個檔案是『目錄、檔案或連結檔案等等』:
  當為[ d ]則是目錄
  當為[ - ]則是檔案
  若是[ l ]則表示為連結檔(link file);
  若是[ b ]則表示為裝置檔案裡面的可供儲存的介面裝置;
  若是[ c ]則表示為裝置檔案裡面的序列埠裝置,例如鍵盤、滑鼠。

上述test為檔案

後面9個字元3個為一組,分別代表檔案所有者,群組成員,其他成員對該檔案的許可權。

例如:rwxrwxr-x表示該檔案所有者對它可讀可寫可執行,群組成員對它可讀可寫可執行,其他成員可讀可執行,但不可寫。

注意,當檔案是目錄的時候,要想對它可讀可寫,必須要先具備可執行檔條件才行,所以假設-drwxr--r--的時候,群組成員和其他成員對它可讀嗎?答案是否定的,因為該檔案是目錄,對目錄不可執行(訪問,後面會解釋)就不能進行讀寫。

在windows下,檔案時候可執行是由檔案的附檔名(即尾碼名)來決定的,例如exe,bat,com檔案,但是在linux下附檔名和檔案是否可執行沒有關係,檔案的可執行是另外一層含義,下面會解釋。

2)  串連數

  串連佔用的節點數(inode),如果是目錄的話,就與該目錄下還有多少目錄有關。後面介紹。

3)  表示這個檔案的所有者

4)  表示這個檔案的擁有任所在的群組

5)  檔案大小 

6)  最後修改時間

7)  設定檔名稱

  

3   重點如何改變檔案許可權    ///實踐
   
1)  改變所有者   chown
    
  chown   -R   newusr  filename/dirname

  將檔案的所有者改為newusr,若為目錄,還可一使用R參數使目錄下的檔案都遞迴的改變。
    

2)  改變所屬群組  chgrp

    方法同上

3)  改變9個屬性: chmod 


    兩種方式:

      A  數字方式:三個字元rwx分別代表4,2,1

      [root@linux ~]# chmod   [-R]   xyz   檔案或目錄
      參數:
        xyz : 就是剛剛提到的數字類型的許可權屬性,為 rwx 屬性數值的相加。
        -R : 進行遞迴( recursive )的持續變更,亦即連同次目錄下的所有檔案、目錄
        都更新成為這個群組之意。常常用在變更某一目錄的情況。

      例如chomod  -R  740  testDir

      740即rwxr-----的意思

      B  符號類型改變檔案許可權
        還有一個改變屬性的方法呦!從之前的介紹中我們可以發現,基本上就九個屬性分別是(1)user (2)group
        (3)others 三群啦!那麼我們就可以藉由 u, g, o 來代表三群的屬性!此外, a 則代表 all 亦即全部的三群!

        例如:chmod  u=rwx,go=rx  .bashrc

        等價與第一種的chomod    755  .bashrc


4 知道目錄的屬性的含義

    

  剛剛上面我們提到的屬性幾乎都是針對一般檔案的特性在說明,那麼如果是針對目錄時, 那個 r, w, x 對
目錄是什麼意義呢?簡單的說:

  •   r (read contents in directory): 表示具有讀取目錄結構清單的許可權,所以當您具有讀取 (r)
  一個目錄的許可權時, 您就可以利用 ls 這個指令將該目錄的內容列表顯示出來!

  •  w (modify contents of directory): 這個可寫入的許可權對目錄來說,是很了不起的! 因為他
  表示您將具有異動該目錄結構清單的許可權,也就是底下這些許可權:
    o 建立新的檔案與目錄;
    o 刪除已經存在的檔案與目錄(不論該檔案是屬於誰的!)
    o 將已存在的檔案或目錄進行更名;
    o 搬移該目錄內的檔案、目錄位置。

  所以說,如果您是一般身份使用者,例如鳥哥的帳號 dmtsai ,那麼在 /home/dmtsai 這個家目錄內, 無論是誰 (包括 root) 建立的檔案,無論該檔案屬於誰,無論該檔案的屬性是什麼,dmtsai 這個使用者都『有權力將該檔案刪除』的喔!
  
  •x (access directory): 這個在上頭我們已經稍微提過了, x 與能否進入該目錄有關!!

5   瞭解知道檔案的種類介紹

  任何裝置在 Linux 底下都是檔案, 不僅如此,連資料溝通的介面也有專屬的檔案在負責~所以,您會瞭解到, Linux 的檔案種類真的很多~ 除了前面提到的那個 -, d 亦即所謂的一般檔案與目錄檔案之外,還有哪些種類的檔案呢?

1)  正規檔案 (regular file ):

  就是一般我們在進行存取的類型的檔案,在由 ls –al 所顯示出來的屬性方面,第一個屬性為 [ - ],例如 [-rwxrwxrwx ]。另外,依照檔案的內容,又大略可以分為:

  o純文字檔案(ASCII):這是 Unix 系統中最多的一種檔案類型囉,稱為純文字檔案是因為內容為我們人類可以直接讀到的資料, 例如數字、字母等等。

  o二進位檔案(binary):還記得我們在『 Linux 是什麼 』那一章裡面的 GNU 發展史中提過, 我們的系統其實僅認識且可以執行二進位檔案 (binary file) 吧?沒錯可執行檔 (scripts, 文字型批次檔案不算) 就是這種格式
  
  o資料格式檔案(data): 有些程式在運作的過程當中會讀取某些特定格式的檔案,那些特定格式的檔案可以被稱為資料檔案 (data file)。該檔案是一個 datafile ,他能夠透過 last 這個指令讀出來! 但是使用 cat 時,會讀出亂碼~因為他是屬於一種特殊格式的檔案。

2)  目錄 (directory):

  就是目錄囉~第一個屬性為 [ d ],例如 [drwxrwxrwx]。

3)   連結檔 (link):

  就是類似 Windows 底下的捷徑啦!第一個屬性為 [ l ], 例如[lrwxrwxrwx] ;

4)  裝置與裝置檔案 (device):

  與系統周邊及儲存等相關的一些檔案, 通常都集中在 /dev 這個目錄之下!通常又分為兩種:
  
  o區塊 (block) 裝置檔 :就是一些儲存資料, 以提供系統存取的介面裝置,簡單的說就是硬碟啦!例如你的一號硬碟的代碼是 /dev/hda1 等等的檔案啦!第一個屬性為 [ b ];

  o字元 (character) 裝置檔 :亦即是一些序列埠的介面裝置, 例如鍵盤、滑鼠等等!第一個屬性為 [ c ]。

5)  資料介面檔案 (sockets):
    
    既然被稱為資料介面檔案, 想當然爾,這種類型的檔案通常被用在網路上的資料承接了。我們可以啟動一個程式來監聽用戶端的要求, 而用戶端就可以透過這個socket 來進行資料的溝通了。第一個屬性為 [ s ], 最常在 /var/run 這個目錄中看到這種檔案類型了。

6)  資料輸送檔案 (FIFO, pipe):

   FIFO 也是一種特殊的檔案類型,他主要的目的在解決多個程式同時存取一個檔案所造成的錯誤問題。 FIFO 是 first-in-first-out 的縮寫。
第一個屬性為 [p] 。

6 熟悉目錄配置,各目錄的含義以及建議規劃,理解原理    ///原理

    

  因為 Linux 的開發人員實在太多了,如果每個人都發展出屬於自己的目錄配置方法, 那麼將可能會造成很多管理上的困擾。您能想象,您進入一個企業之後,所接觸到的 Linux 目錄配置方法竟然跟您以前學的完全不同嗎?!很難想象吧~所以,後來就有所謂的 Filesystem Hierarchy Standard (FHS) 標準的出爐了!這個 FHS ( http://www.pathname.com/fhs/ )

  FHS 定義出兩層規範出來,第一層是 / 底下的各個目錄應該要放置什麼樣內容的檔案資料,例如 /etc 應該要放置設定檔, /bin 與 /sbin 則應該要放置可執行檔等等。第二層則是針對 /usr 及 /var 這兩個目錄的次目錄來定義的。 例如 /var/log 放置系統登入檔案、 /usr/share放置共用資料等等。由於 FHS 僅是定義出最上層 (/) 及次層 (/usr, /var) 的目錄內容應該要放置的檔案資料, 因此,在其它個次目錄層級內,就可以隨開發人員自行來配置了。

  
  1)  建議不可與 root partition 分開的目錄
  

   那麼是否有『一定』要放在 root partition 內的目錄呢?有啊!那就是: /etc/, /sbin/,/bin/, /dev/ 以及 /lib/ 這幾個目錄了。為什麼呢?因為我們的 Linux 系統在開機的時候,一開始進行核心載入時, 只會掛載一個 partition ,那就是 / 。但是開機的時候會用到很多的指令與函式庫,舉例來說,要掛載, 就得需要 mount 這支程式,而且我們也需要 init 這支程式,還需要用到很多的設定檔,例如 /etc/inittab 等等。而我們核心的模組則是放置在 /lib 裡面。當然, /dev 是所有裝置放置的目錄, 也需要在開機的時候使用到的。因此,這些目錄都需要跟 / 綁在一起喔!

  2)  建議最好獨立成為單一 partition 的目錄
    
    至於有些目錄則是因為安全性與特殊功能性,而希望能夠獨立成為一個自己的 partition 呢!例如: /home, /usr, /var, /tmp 等等。我們必須要Crowdsourced Security Testing道的,系統上的使用者個人家目錄在 /home 裡面, 這個目錄也是可能被使用的最頻繁的目錄之一。此外,為了資源分派較為平均, 我們可能會希望針對每個人限制他可以使用的最大硬碟總量(quota),在這個前提之下, 您就必須要將 /home 獨立出來,而且最好這個 partition 能夠大一點,尤其是您的 Linux 是作為檔案伺服器 (file server) 時,就更形重要了。至於 /usr 則是一些程式安裝的目錄,也可以獨立出來的;還有 /var/, 這個目錄由於記錄了相當多的常用資料,讀取真的是很頻繁,所以是『很容易掛點的 partition 一! 如果能夠將他獨立出來,』那麼當 /var/真的、萬一、不小心掛點時,就不會影響到其它的 partition , 最起碼能有一定程度的安全性啦!

  3)  特別重要的幾個目錄
  
    除了針對 partition 的觀念來談目錄的重要性之外,有幾個比較重要的目錄您也需要瞭解一下:

•/etc:

  這個目錄是系統設定檔案放置的地方, 包括您系統上的帳號與密碼 (/etc/passwd,
/etc/shadow),還有開機時所要用到的各項設定值 (/etc/sysconfig/*) ,還有各主要的網路服
務的設定檔案,都在這個目錄中。 意思就是說,如果這個目錄底下的檔案被刪除或者是死掉了,
嘿嘿~ 您的系統大概也就需要『很花功夫』的重建了~ ^_^。因此, 一般鳥哥都會定期將這個
目錄的所有檔案給他備份下來, 反正這個目錄的大小應該不會超過 50MB 才對,多多備份,有備
無患啊!

•/usr/local:

  雖然說目前已經將這個目錄的重要性移動到 /opt 了, 但是鳥哥還是比較習慣將我
自己開發或自行額外安裝的軟體放置在這個 /usr/local 目錄下。 如果您的 Linux 系統是多人
共管的話,那麼,養成一個良好的操作習慣是有必要的。 那麼安裝軟體的習慣也要好好建立起來
啊~不要隨意安裝呢! 統一放置在 /usr/local 或者是 /opt 底下吧! ^_^

•/var:

  在上面提過一次,這裡再次強調。 這個目錄是在管理系統運作過程中的重要中間暫存資料
的,例如 /var/lib 與 /var/run 。 此外,最終的資料例如郵件 /var/spool/mail 也是放置在
這個目錄中~ 另外,幾乎所有服務的登入檔案 (可以記錄誰、什麼時候、由哪裡登入主機、做了
什麼事等等資訊!) 都放在 /var/log 這個目錄下,因此,這個目錄也很重要。記得常常去檢查
/var/log/messages 這個檔案是否有異常啊~

好了,知道了 Linux 的檔案許可權,目前也知道了各個檔案內可能擺放的資料是什麼了, 那麼再來說說你
的目錄與磁碟分割之間的相關性。通常一般的大型主機都不會將所有的資料放置在一個磁碟中 ( 就是只有
一個『 / 』根目錄 ),這有幾個目的:

•安全性考慮:
  你的系統通常是在 /usr/ 中,而個人資料則可能放置在 /home 當中,至於一些開機資料則放置
在 /etc 當中。如果將所有的資料放在一起,當你的系統不小心被駭客破壞,或者不小心自己砍
了一個小東西, 則所有的咚咚也都跟著不見了.....這對於我們市井小民或許無所謂,再安裝一
次就好了, 但是對於一些大型企業可不行這樣!因此需要將資料分別放置於不同的磁碟中,會比
較保險些。

•便利性:
  如果你需要升級你的系統的話,是否需要重新 format 安裝呢?有些資料例如 /home 裡面的資料為個人使用者的資料,似乎與系統無關!所以如果你將這些資料分別放置於不同的磁碟, 則你要升級或者進行一些系統更動時,將比較有彈性。

你或許可以將你的系統做成這樣的 partition 分布:
/
/boot
/usr
/home
/var

這是比較常見的磁碟分布情況,其中:
  • / 根目錄可以分配約 1 GB 以內;
  • /boot 大概在 50 MB 就可以了,因為開機檔案並不大;
  • /var 就至少需要 1GB 以上,因為你的 mail 、 proxy 預設的儲存區都在這個目錄中,除非你要將一些設定改變!
  •/home 與 /usr 通常是最大的,因為你所安裝的資料都是在 /usr/ 當中,而使用者資料則放置在/home 當中,因此通常大家都會建議你將所剩下的磁碟空間平均分配給這兩個目錄說! 不過也不一定啦! /usr 大概給個 10G 就很多了~其它的可以都給 /home ,也可以保留一些剩餘空間來作為以後的安裝與設定用啊!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.