1,226 瀏覽數

硬式與軟式連結

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

硬式連結 Hard Link

指令: #ln source target
所有的 Hard Link 都不會佔用 inode (關於 inode 請自行參考 http://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.因為他只儲存原始檔的名稱.

網友的想法

  1. 自動參照通知: Linux – File | Benjr.tw

發表迴響