Linux基礎學習-屬性與權限控制

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 等等。我們必須要先知道的,系統上的使用者個人家目錄在 /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 ,也可以保留一些剩餘空間來作爲以後的安裝與設定用啊!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章