【Linux命令】文件基本屬性

文件基本屬性

Linux系統是一種典型的多用戶系統,不同的用戶處於不同的地位,擁有不同的權限。爲了保護系統的安全性,Linux系統對不同的用戶訪問同一文件(包括目錄文件)的權限做了不同的規定。

在Linux中我們可以使用ll或者ls –l命令來顯示一個文件的屬性以及文件所屬的用戶和組。

在Linux中第一個字符代表這個文件是目錄、文件或鏈接文件等等。

  • 當爲[ d ]則是目錄
  • 當爲[ - ]則是文件;
  • 若是[ l ]則表示爲鏈接文檔(link file),類似 Windows 的快捷方式;
  • 若是[ b ]則表示爲區塊 (block) 設備,裝置文件裏面的可供儲存的接口設備(可隨機存取裝置),就是一些儲存數據,以提供系統存取的接口設備,簡單的說就是硬盤!例如你的一號硬盤的代碼是 /dev/hda1 等等的文件;
  • 若是[ c ]則表示爲字符 (character) 設備,裝置文件裏面的串行端口設備,例如鍵盤、鼠標(一次性讀取裝置)。

在 Linux 系統當中,每個文件不止有文件的內容數據,還包括文件的種種屬性,所以Linux中,將每個文件的內容分爲兩個部分來儲存,一個是文件的屬性,另一個則是文件的內容。所以 ext2 規劃出 inode 與 Block 來分別儲存文件的屬性( 放在 inode 當中 )與文件的內容( 放置在 Block area 當中 )。當我們要將一個 partition 格式化( format )爲 ext2 時,就必須要指定 inode 與 Block 的大小才行,也就是說,當 partition 被格式化爲 ext2 的文件系統時,他一定會有 inode table 與 block area 這兩個區域。
Block 已經在前面說過了,他是數據儲存的最小單位。那麼Linux 的文件系統( inode ) 是什麼?!簡單的說, Block 是記錄『文件內容數據』的區域,至於 inode 則是記錄『該文件的相關屬性,以及文件內容放置在哪一個 Block 之內』的信息。簡單的說, inode 除了記錄文件的屬性外,同時還必須要具有指向( pointer )的功能,亦即指向文件內容放置的區塊之中,好讓操作系統可以正確的去取得文件的內容,比如:
該文件的擁有者與羣組(owner/group);
該文件的存取模式;
該文件的類型;
該文件的建立日期(ctime)、最近一次的讀取時間(atime)、最近修改的時間 (mtime);
該文件的容量;
定義文件特性的旗標(flag),如 SetUID...;
該文件真正內容的指向 (pointer);

文件讀寫執行權限

接下來的字符中,以三個爲一組,且均爲『rwx』 的三個參數的組合。其中,[ r ]代表可讀(read)、[ w ]代表可寫(write)、[ x ]代表可執行(execute)。 要注意的是,這三個權限的位置不會改變,如果沒有權限,就會出現減號[ - ]而已。

每個文件的屬性由左邊第一部分的10個字符來確定(如下圖)。


從左至右用0-9這些數字來表示。

第0位確定文件類型,

第1-3位確定屬主(該文件的所有者)擁有該文件的權限。

第4-6位確定屬組(所有者的同組用戶)擁有該文件的權限,

第7-9位確定其他用戶擁有該文件的權限。

其中,第1、4、7位表示讀權限,如果用"r"字符表示,則有讀權限,如果用"-"字符表示,則沒有讀權限;

第2、5、8位表示寫權限,如果用"w"字符表示,則有寫權限,如果用"-"字符表示沒有寫權限;

第3、6、9位表示可執行權限,如果用"x"字符表示,則有執行權限,

如果用"-"字符表示,則沒有執行權限。

文件屬主和屬組

對於文件來說,它都有一個特定的所有者,也就是對該文件具有所有權的用戶。

同時,在Linux系統中,用戶是按組分類的,一個用戶屬於一個或多個組。

文件所有者以外的用戶又可以分爲文件所有者的同組用戶和其他用戶。

因此,Linux系統按文件所有者、文件所有者同組用戶和其他用戶來規定了不同的文件訪問權限。

更改文件屬性

chgrp:更改文件屬組

語法:chgrp [-R] 屬組名文件名

參數選項

  • -R:遞歸更改文件屬組,就是在更改某個目錄文件的屬組時,如果加上-R的參數,那麼該目錄下的所有文件的屬組都會更改。

chown:更改文件屬主,也可以同時更改文件屬組

語法:

chown [–R] 屬主名 文件名
chown [-R] 屬主名:屬組名 文件名

chmod:更改文件9個屬性

Linux文件屬性有兩種設置方法,一種是數字,一種是符號。

數字類型改變文件權限

Linux文件的基本權限就有九個,分別是owner/group/others三種身份各有自己的read/write/execute權限。

先複習一下剛剛上面提到的數據:文件的權限字符爲:『-rwxrwxrwx』, 這九個權限是三個三個一組的!其中,我們可以使用數字來代表各個權限,各權限的分數對照表如下:

  • r:4
  • w:2
  • x:1

每種身份(owner/group/others)各自的三個權限(r/w/x)分數是需要累加的。

語法:chmod [-R] xyz 文件或目錄

選項與參數:

  • xyz : 就是剛剛提到的數字類型的權限屬性,爲 rwx 屬性數值的相加。
  • -R : 進行遞歸(recursive)的持續變更,亦即連同次目錄下的所有文件都會變更

符號類型改變文件權限

還有一個改變權限的方法呦!從之前的介紹中我們可以發現,基本上就九個權限分別是(1)user (2)group (3)others三種身份啦! 那麼我們就可以藉由u, g, o來代表三種身份的權限!

此外, a 則代表 all 亦即全部的身份!那麼讀寫的權限就可以寫成r, w, x!也就是可以使用底下的方式來看:

chmod u
g
o
a
+(加入)
-(除去)
=(設定)
r
w
x
文件或目錄

使用舉例:

chmod  a+w  .bashrc
chmod  a-x  .bashrc


以上內容參考了http://www.runoob.com/linux/linux-file-attr-permission.html。


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