Linux – 硬式 Hard & 軟式 Soft 連結

Loading

硬式與軟式連結
檔案的連結主要的作用是讓檔案有其他的分身,而連結有分為 I. 硬式連結 Hard Link 以及 II. 符號連結 (Symbol link) 也就是所謂的Soft Link

硬式連結 Hard Link

指令: #ln source target
所有的 Hard Link 都不會佔用 inode (關於 inode 請自行參考 https://benjr.tw/93162 ) ,與原始檔共用 inode.而他的 permission 與 source 的設定共用.
硬式連結有以下兩個限制:

  1. 檔案與硬式連結無法跨分割磁區,因為共用inode.
  2. 硬式連結無法指向目錄.

Ex: 建立硬式連結 Hard Link

[root@benjr ~]# touch source
[root@benjr ~]# ll -i
213043  -rw-rw-rw-   1  root  root  10 jan 6 20:06 source

[root@benjr ~]# ln source target
[root@benjr ~]# ll -i
213043  -rw-rw-rw-   2  root  root  10 jan 6 20:06 source
213043  -rw-rw-rw-   2  root  root  6  jan 6  20:11 target
  • source , target 的 inode 同為 213043 表示指向相同的 inode
  • 其中的 2 表示為 HardLink 數,2 表示有 1 個 Link 以及 1 個 source , 3 表示有 2 個 Link 以及 1 個 source ,以此類推當原先檔案刪除,並不會引響到其他的 hardlink.
[root@benjr ~]# chmod 777 source(or target)
[root@benjr ~]# ll
-rwxrwxrwx   1  root  root  10 jan 6 20:06 source
-rwxrwxrwx   2  root  root  6  jan 6  20:11 target

使用 chmod 後不管是 source 或 target 其權限都會同時更動.

符號連結 (Symbol link)也就是所謂的 Soft Link

指令:ln -s source target
所有的 Soft Link 都會佔用一個 inode ,而檔案標示會有一個l(小寫的L),而他的permission最終會指向原始的檔案設定,不管Link的設定為何,總之若要修改或執行檔案一定要有source的權限

Ex: 建立符號連結 Symbol link(Soft Link)

[root@benjr ~]# ll -i
213043   -rw-rw-r–   1  root  root  10 jan 6 20:06 source
[root@benjr ~]# ln -s source target
[root@benjr ~]# ll -i
213043   -rw-rw-r–   1  root  root  10 jan 6 20:06 source
213042    lrwxrwxrwx  1  root  root  6  jan 6  20:11 target -> source
  • l (小寫的L)表示為 softlink
  • 檔案大小為原始檔的路徑+名稱個數;source六個字元
  • target -> source指出檔案位址
  • source , target 的 inode 不同
[root@benjr ~]# chmod 444 target
[root@benjr ~]# ll
-r–r–r–   1  root  root  10 jan 6 20:06 source
lrwxrwxrwx   2  root  root   6  jan 6 20:11 target -> source

使用 chmod 後 source 其權限不會更動,只有 target 的權限會改變,雖然 target 的權限為全開,但是沒有 source 的權限還是無法執行或編譯,當原先檔案刪除,並會引響到其他的 softlink.因為他只儲存原始檔的名稱.

如果 softlink 為目錄時,需注意 rm (Remove 刪除 , 或是使用 unlink ) 時指定其 Soft Link名稱.

[root@benjr ~]# ln -s /etc/ ./
[root@benjr ~]# rm etc/
rm: cannot remove 'etc/': Is a directory
[root@benjr ~]# rm etc
rm: remove symbolic link 'etc'? y
沒有解決問題,試試搜尋本站其他內容

One thought on “Linux – 硬式 Hard & 軟式 Soft 連結

  1. 自動引用通知: Linux – File | Benjr.tw

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料