文中有不對或者有不清楚的地方,請你們告訴我,謝謝!
Linux文件基本屬性
Linux系統是一種典型的多用戶系統,不一樣的用戶處於不一樣的地位,擁有不一樣的權限。爲了保護系統的安全性,Linux系統對不一樣的用戶訪問同一文件(包括目錄文件)的權限作了不一樣的規定。
在Linux中咱們可使用ll或者ls –l命令來顯示一個文件的屬性以及文件所屬的用戶和組(如圖一)。
圖一:查看文件屬性
1. Linux文件類型
在Linux中第一位屬性用來肯定文件類型。在圖一中,咱們看到bin文件的第一個屬性用「d」表示。「d」在Linux中表明該文件是一個目錄文件。除了目錄文件外,Linux中還有其餘文件類型。
Linux主要文件類型:
① 普通文件(第一個屬性用「-」表示)
普通文件就是咱們一般訪問的文件,由ll命令顯示出來的屬性中,第一個屬性爲「-」,例如【-rwxr-----】。咱們根據文件的內容,又能夠將普通文件分爲如下幾種。
純文本文件(ASCII):Linux系統中最多的一種文件類型,它的內容咱們能夠直接讀取。文件的內容通常都是字母、數字以及一些符號等。配置文件基本都屬於這種文件類型。可使用cat命令查看文件內容。
二進制文件(Binary):系統其實只認識而且能夠執行二進制文件。Linux中的可執行文件就是這種格式,固然腳本、文本方式的批處理文件雖然可執行,但不是二進制文件。例如命令cat就是二進制文件。
數據格式的文件(Data):有些程序在運行過程當中會讀取某些特定格式的文件,這些特定格式的文件能夠稱爲數據文件。好比,Linux用戶在登錄系統時,會將登錄數據記錄在/var/log/wtmp文件內,這個文件就是一個數據文件。
② 目錄文件(directory)(第一個屬性用「d」表示)
目錄文件就是目錄,至關於windows中的文件夾。
③ 符號連接文件(link)(第一個屬性用「l」表示)
符號連接至關於windows中的快捷方式。在Linux中有兩種連接方式,軟連接(符號連接)和硬連接。
④ 設備文件(設備文件分爲塊設備文件和字符設備文件)
塊設備文件(block)(第一個屬性用「b」表示):塊設備是用來存儲數據以供系統訪問的接口設備,好比硬盤等。
字符設備文件(character)(第一個屬性用「c」表示):字符設備就是擁有串行端口的接口設備,好比鍵盤、鼠標等。
⑤ 套接字文件(sockets)(第一個屬性用「s」表示)
套接字文件一般用戶網絡數據鏈接。咱們能夠啓動一個程序來監聽客戶端的請求,客戶端就能夠經過套接字來進行數據通訊。一般能夠在/var/run/目錄中看到這類文件。
⑥ 管道文件(FIFO,pipe)(第一個屬性用「p」表示)
管道文件主要用來解決多個程序同時訪問一個文件所形成的錯誤。
2. Linux文件屬性
對於Linux系統的文件來講,其基本的屬性有三種:讀(r/4)、寫(w/2)、執行(x/1)。不一樣的用戶對於文件也擁有不一樣的讀、寫和執行權限。
讀權限:表示具備讀取目錄結構的權限,能夠查看和閱讀文件。
寫權限:能夠新建、刪除、重命名、移動目錄或文件(不過寫權限受父目錄權限控制)。好比/test目錄的屬性是【drwxr-xr-x】,屬主和屬組都是root。在/test目錄下有一個叫aa的普通文件,其屬性是【-rwxrw-rw-】,屬主和屬組都是root,那麼我想使用另一個用戶bob來刪除aa這個文件,是沒有權限的,雖然aa的other有讀和寫權限,可是其父目錄的other只有r權限,因此bob也不能刪除aa文件,受到父目錄權限的影響。
執行權限:文件擁有執行權限,才能夠運行。好比二進制文件和腳本文件。目錄文件要有執行權限才能夠進入。
每一個文件的屬性由左邊第一部分的10個字符來肯定(如圖二)。
圖二:文件屬性格式
從左至右用0-9這些數字來表示,第0位肯定文件類型,第1-3位肯定屬主(該文件的全部者)擁有該文件的權限,第4-6位肯定屬組(全部者的同組用戶)擁有該文件的權限,第7-9位肯定其餘用戶擁有該文件的權限。其中,第一、四、7位表示讀權限,若是用「r」字符表示,則有讀權限,若是用「-」字符表示,則沒有讀權限;第二、五、8位表示寫權限,若是用「w」字符表示,則有寫權限,若是用「-」字符表示沒有寫權限;第三、六、9位表示可執行權限,若是用「x」字符表示,則有執行權限,若是用「-」字符表示,則沒有執行權限。
3. Linux文件屬主和屬組
對於文件來講,它都有一個特定的全部者,也就是對該文件具備全部權的用戶。同時,在Linux系統中,用戶是按組分類的,一個用戶屬於一個或多個組。文件全部者之外的用戶又能夠分爲文件全部者的同組用戶和其餘用戶。所以,Linux系統按文件全部者、文件全部者同組用戶和其餘用戶來規定了不一樣的文件訪問權限。
在圖一中,bin文件是一個目錄文件,屬主和屬組都爲root,屬主有可讀、可寫、可執行的權限;與屬主同組的其餘用戶有可讀和可執行的權限;其餘用戶也有可讀和可執行的權限。
4. 更改文件屬性
① chgrp:更改文件屬組
chgrp [-R] 屬組名文件名
-R:遞歸更改文件屬組,就是在更改某個目錄文件的屬組時,若是加上-R的參數,那麼該目錄下的全部文件的屬組都會更改。
② chown:更改文件屬主,也能夠同時更改文件屬組
chown [–R] 屬主名 文件名
chown [-R] 屬主名:屬組名 文件名
③ chmod:更改文件9個屬性
Linux文件屬性有兩種設置方法,一種是數字,一種是符號。
以圖一bin文件的屬性爲例:
【drwxr-xr-x】
Linux文件的9個基本屬性:owner/group/other的read/write/excute。9個屬性中每3個爲一組。好比bin文件的owner是rwx;group是r-x;other是r-x。
數字表示法(也叫八進制表示法):
咱們將read/write/excute用數字表示就是:
read:r:4
write:w:2
excute:x:1
沒有權限:-:0
咱們用八進制表示:
---:0
--x:1
-w-:2
-wx:3
r--:4
r-x:5
-wx:6
rwx:7
所以,rwx=4+2+1=7,r-x=4+0+1=5。
那麼例子中bin文件owner/group/other的權限就能夠用755來表示。
使用數字更改文件屬性的命令格式就是:
chmod [-R] xyz 文件名
咱們使用數字來將bin文件的屬性【drwxr-xr-x】更改成【drwxrwx---】。
即chmod [–R] 770 bin
符號表示法:
Linux文件的9個屬性分爲三組:user、group和other,咱們能夠分別用u表示user、用g表示group、用o表示other、用a表示all全部。權限分爲三種:r、w和x。咱們用「+」來添加權限、用「-」來除去權限、用「=」來設置權限。
使用符號更改文件屬性的命令格式就是:
chmod [-R] [ugoa]*([-+=]([rwx]*|[ugo])) 文件名
咱們使用符號來將bin文件的屬性【drwxr-xr-x】更改成【drwxrwx---】。
即chmod [-R] ug=rwx,o=--- bin或者chmod [-R] g+w,o-rx bin。
符號表示法更加靈活。