Linux 文件和目录的属性及权限
一、權限位說明
? ? ? ?Linux 文件或目錄的權限位是由9個權限位來控制,每三位為一組,它們分別是文件屬主(Owner)的讀、寫、執行,用戶組(Group)的讀、寫、執行以及(Other)其它用戶的讀、寫、執行:
文件屬主(Owner):讀 read、寫 write、執行 x
文件用戶組(Group):讀 r、寫 w 、執行 x
其它用戶(Other):讀 r、 寫 w、 執行 x
如果權限位不可讀、不可寫、不可執行,則用|來表示。
后面還會有特殊的權限位:t T s S X +
Linux 系統硬鏈接和軟鏈接
1.【鏈接的概念】
? ? ?在 Linux 系統中,鏈接可分為兩種:一種為硬鏈接(Hard Link),另一種為軟鏈接或符號鏈接(Symbolic Link)。ln命令就是創建鏈接文件的,在默認不帶參數的情況下,執行ln命令創建的鏈接是硬鏈接。
如果使用ln -s 創建鏈接則為軟鏈接。
1.1【硬鏈接】
? ? 硬鏈接是指通過索引節點(Inode)來進行鏈接。在Linux(ext2,ext3)文件系統中,保存在磁盤分區中的文件不管是什么類型都會給它分配一個編號,這個編號被稱為索引節點編號(Inode Index)簡稱 Inode,即在系統中文件的編號。
在linux文件系統中,多個文件名指向同一個索引節點(Inode)是正常且允許的。這種情況的文件就稱為硬鏈接。硬鏈接的作用之一是允許一個文件擁有多個有效路徑名(多個入口),這樣用戶就可以建立硬鏈接到重要的文件,以防止“誤刪”源數據(很多硬件存儲,如netapp)存儲中的快照功能就應用了這個原理,增加一個快照就多了一個硬鏈接)。為什么一個文件建立了硬鏈接就會防止數據誤刪呢?
因為文件系統(ext2)的原理是,只要文件的索引節點(Inode Index)還有一個或一個以上的硬鏈接。只刪除其中一個鏈接(即僅僅刪除了該文件的鏈接指向)并不影響索引節點本身和其它的鏈接(即數據文件實體并未被刪除),只有當文件的最后一個鏈接被刪除后,此時如果有新數據要存儲到硬盤上時或者系統通過類似fsck做磁盤檢查的時候。被刪除文件的數據塊及目錄的鏈接才會被釋放,空間被新數據占用并覆蓋。此時,數據就再也無法找回了。也就是說,在linux系統中,刪除靜態文件(目錄也是文件)的條件是與之相關的所有硬鏈接文件均被刪除。提示:硬鏈接就相當于文件的另外一個入口。
硬鏈接原理圖:
硬鏈接示意圖:
硬鏈接刪除原理圖:
1.2【軟鏈接】
? ? 軟鏈接也稱為符號鏈接(Symbolic Link)。linx 里的軟鏈接文件就類似于 Windows 系統中的快捷方式。它實際上是一個特殊的文件。在軟鏈接的文件。在軟鏈接中,軟鏈接文件實際上就是一個文本文件,這個文件包含有軟鏈接指向另一源文件的位置信息內容,因此,通過訪問這個“快捷方式”就可以迅速定位到軟鏈接所指向的源文件實體。
軟鏈接原理圖:
查看軟鏈接的 value:
readlink Print value of a symbolic link or canonical file name
[root@localhost application]# readlink apache
/application/apache2.2.17/
[root@localhost application]# ll
總用量 8
lrwxrwxrwx. 1 root root? ?26 3月? 13 07:43 apache -> /application/apache2.2.17/
drwxr-xr-x. 2 root root 4096 3月? 13 20:17 apache2.2.17
drwxr-xr-x. 2 root root 4096 3月? 13 21:45 apache2.2.18
軟鏈接的創建:
? ? 執行命令“ln -s 源文件? 軟鏈接文件”,即可完成創建軟鏈接。
小結:
1)軟鏈接類似 windows 里的快捷方式,軟鏈接里面存放的源文件的路徑,并且執行源文件。
2)刪除源文件,軟鏈接文件依然存在,但是無法訪問指向的路徑內容了。
3)執行命令“ln -s 源文件? 軟鏈接文件”,即可完成創建軟鏈接。
4)軟鏈接和源文件是不同類型的文件,也是不同的文件。inode 號不同。
5)rm -f 軟鏈接文件的刪除
2.1 文件示例:
硬鏈接文件的連接數增加了。
2.2 目錄示例
小結:ln 命令不能對目錄創建硬鏈接,但可以對目錄創建軟鏈接,對于目錄的軟鏈接也是生產場景運維中常用的功能。
說明:oldboydir 下的兩個點表示上級目錄,因此,和 oldboydir 的上級目錄 oldboy 具有相同的節點號。
2.3【刪除示例】
[root@localhost oldboy]# echo "I am oldboy" >oldboyfile
[root@localhost oldboy]# cat oldboyfile
I am oldboy
[root@localhost oldboy]# cat oldboy_file_hard_link
I am oldboy
[root@localhost oldboy]# cat oldboy_file_soft_link
I am oldboy
結論:往源文件 oldboyfile 里面寫入內容后,它的軟硬鏈接文件都有相同的內容。
提示:內容還在,其實就是因為 oldboyfile_hard_link 硬鏈接存在,因此即使刪除了源文件 oldboyfile,但是仍有硬鏈接指向著文件的 INODE 節點,所以,此時文件才不會被釋放刪除,當刪除文件 oldboyfile 時,僅僅刪除了 oldboyfile 到該文件 INODE 節點的鏈接而已,此時還有 oldboyfile_hard_link 硬鏈接在指向同一個 INODE 節點。
[root@localhost oldboy]# cat oldboyfile_hard_link
cat: oldboyfile_hard_link: 沒有那個文件或目錄
#由于軟鏈接僅僅為源文件 oldboyfile 的快捷方式,所以,此時在訪問軟鏈接文件,發現無法訪問了,文件不存在的錯誤。
小結:通過上面的測試可以看出:當刪除原始文件 oldboyfile 后,其硬鏈接文件 oldboyfile_hard_link 不受影響,對應的數據依然存在,但是其對應的軟鏈接文件 oldboyfile_soft_link 失效了,找不到源文件了,此時,可以刪除軟件連接文件重新創建,或者創建一個 oldboyfile_hard_link 的硬鏈接文件 oldboyfile。
3、【鏈接總結】
3.1【有關文件的鏈接小結】
一、刪除軟鏈接 oldboyfile_soft_link,對 oldboyfile,oldboyfile_hard_link 無影響;
? ? 全局結論:刪除軟鏈接文件對源文件及硬鏈接文件無任何影響。
二、刪除硬鏈接 oldboyfile_hard_link,對 oldboyfile,oldboyfile_soft_link 都無影響;
? ? 全局結論:刪除硬鏈接文件對源文件及軟鏈接文件無任何影響。
三、刪除原文件 oldboyfile,對硬鏈接 oldboyfile_hard_link 沒有影響,但是會導致軟鏈接 oldboyfile_soft_link 失效;
? ? 全局結論:刪除原文件,對硬鏈接文件沒有影響,但是會導致軟鏈接文件失效,白字紅底閃爍。
四、同時刪除原文件 oldboyfile,硬鏈接 oldboyfile_hard_link,整個文件會真正的被刪除。
五、很多硬件設備中的快照功能,就是利用了硬鏈接的原理。
六、源文件和硬鏈接文件具有相同的索引節點號,可以認為是同一個文件或一個文件的多個入口。
七、源文件和軟鏈接文件索引節點號不同,是不同的文件,軟鏈接相當于源文件的快捷方式,含有源文件的目錄的位置指向。
轉載于:https://blog.51cto.com/huyaping/1750761
總結
以上是生活随笔為你收集整理的Linux 文件和目录的属性及权限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 准备.Net转前端开发-WPF界面框架那
- 下一篇: linux 其他常用命令