1. 程式人生 > >unix檔案的相關介紹——檔案許可權和連結

unix檔案的相關介紹——檔案許可權和連結

unix系統使用inode來表示內部的檔案。裡面儲存了有關於檔案大小,型別,連結數、許可權等等資訊。
1、可以對一個檔案使用stat命令來檢視資訊,一般得到的結果如下

[[email protected] sharedfolder]# stat temptwo
 File: “temptwo”
 Size: 11        Blocks: 8          IO Block: 4096   一般檔案
Device: fd00h/64768dInode: 3179306     Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-11-30 09:58:48.000000000 +0800
Modify: 2014-11-30 09:58:48.000000000 +0800
Change: 2014-11-30 09:58:48.000000000 +0800


需要解釋的幾個名詞:
IO block 指IO簇,簡單的理解就是系統中最小的儲存單元(硬碟上),所有的檔案大小都是這個的整數倍(這裡是4K,不同的系統也會不同)
Inode  索引節點(index node) 唯一的標識(unix檔案組織應該是樹形的)必須通過這個才能找到資料儲存的位置 
Links 硬連結數 表示有多少個檔名指向了這個節點(後面細將)

2.檔案許可權
0644/-rw-r--r-- 0644是八進位制,對應每個位。一種有十二位,前面3位表示檔案型別(3bit,7種類型,每一個型別均有一個特定符號),後面的9bit可以認為是3bit為一組,分別對應所有者、組、全域性的許可權讀、寫和執行許可權。
檔案型別,有以下其中
有以下:目錄(d)、套接字(s)、字元裝置檔案(c)、塊裝置檔案(b)、管道(p)、連結檔案(一般指軟連線)(l)、普通檔案(-),其中套接字和裝置檔案以及管道是不是很熟悉?想想在程式中是通過什麼來表示的?——檔案描述符

許可權的說明,r(表示可讀) w(表示可寫) x(表示可執行),注意:資料夾的可執行表示可以訪問該資料夾的內容

至於更改檔案的許可權,可以使用chmod

3、修改新建檔案的預設許可權
使用umask程式,預設的為0022,對應於前面所講的各個bit位,但是此處表示的意思是遮蔽,即指定位置為1表示沒有改許可權,為0則表示具備許可權。還需要注意的是,普通檔案預設是沒有執行許可權的,及時此處umask沒有遮蔽掉該該bit位,而資料夾的許可權,則需要看有沒有遮蔽響應的bit位。

4、連結
分為硬連結和符號連結(也成為軟連結,不過最好記憶為符號連結,命令中會通過關鍵字(s,是symbol?是soft?)來指定操作的型別,不過還有個api是symlink)


硬連結可以簡單的認為是指向該inode的“指標”,這種“指標”在unix系統中被稱為目錄項,基本的內容為[檔名+inode],它對應一個硬連結。從它的結構可以看出,一個檔名只能對應一個目錄項,但是可以建立多個硬連結(也就是多個目錄項),令其檔名不同而inode相同。那也就有個很多指向同一個indoe的硬連結。需要注意的是,inode中含有記錄實際資料塊的儲存位置的資訊,所以通過上述任意一個檔名對inode的指向的資料塊進行修改,都會對其他也會生效,因為他們是共享這一個資料內容的備份,所以建立新的硬連結也不會消耗實際的儲存空間。
如果刪除檔案,那inode會不會被刪除?那就需要看links的數目了。當連線數為0時就會被刪除,否則不會。
具體建立硬連結的命令為 ln


符號連結就是重新建立一個inode,不過這個inode的型別是連結檔案,inode對應的儲存空間裡面儲存的是一個硬連結。因此,建立符號連結不會影響對應對應inode的連結數。同時,如果刪除這個硬連結的話,這個符號連結也會隨之失效。可以講符號連結視為快捷方式。


建立符號連結的命令為 ln -s。
硬連結和符號連結均可由ln命令建立。