創建軟鏈接時一定要寫目錄或文件的絕對路徑,哪怕是在當前路徑下鏈接的文件不可用 要編輯鏈接,也要寫絕對路徑,如果寫的相對路徑,雖然不會有報錯特提示,但是如果查看軟鏈接,你會發現這個軟鏈接是紅色閃爍的,表明該鏈接為無效鏈接。如下圖。
2.普通用戶對創建的軟鏈接的權限取決于該軟鏈接的源文件,而不是取決于該軟鏈接。
[root@localhost opt]# touch hello
[root@localhost opt]# ln -s /opt/hello /media/hello1
//下面我們使用普通用戶登錄
[shuai@localhost ~]$ ll /opt/hello
-rw-r--r--. 1 root root 0 8月 1 20:28 /opt/hello
[shuai@localhost ~]$ ll /media/hello1
lrwxrwxrwx. 1 root root 10 8月 1 20:30 /media/hello1 -> /opt/hello
[shuai@localhost ~]$ echo 1234 > /media/hello1
-bash: /media/hello1: 權限不夠
對上面的代碼做如下解釋:
首先用root用戶創建了一個hello文件,在/media目錄下創建一個hello文件的軟鏈接,然后使用一個普通用戶登錄,先后查看了hello文件的權限和軟鏈接的權限,普通用戶對hello文件沒有w(寫)權限,但對軟鏈接有寫權限,所以最后嘗試對軟鏈接寫入1234,但是卻發現權限不夠,這就說明普通用戶對創建的軟鏈接的權限取決于該軟鏈接的源文件,而不是取決于該軟鏈接。
硬鏈接
硬鏈鏈接創建的命令格式:ln 源文件路徑 目標路徑。
硬鏈接有以下幾個特點:
1、硬鏈接不可以跨分區。
[root@localhost opt]# touch hello
[root@localhost opt]# ln /opt/hello /boot/hello1 //試圖在/boot分區創建一個硬鏈接
ln: 無法創建硬鏈接'/boot/hello1' => '/opt/hello': 無效的跨設備鏈接
2、不可以對目錄創建硬鏈接。
[root@localhost opt]# mkdir test
[root@localhost opt]# ln /opt/test /media/test1

ln: /opt/test: 不允許將硬鏈接指向目錄
3、源文件刪除之后,硬鏈接依然可用。
[root@localhost opt]# rm -fr /opt/hello
[root@localhost opt]# ll /media
總用量 0
-rw-r--r--. 1 root root 0 8月 1 20:45 hello1
首先刪除我們在驗證硬鏈接不可以跨分區時創建的hello文件,然后利用ll命令查看該文件的硬鏈接,發現依然有效。
4、與軟鏈接不同鏈接的文件不可用 要編輯鏈接,硬鏈接的大小為0,且時間與源文件一致。
[root@localhost opt]# touch bb
[root@localhost opt]# ln /opt/bb /media
[root@localhost opt]# ll bb

-rw-r--r--. 2 root root 0 8月 1 21:02 bb
[root@localhost opt]# ll /media/bb
-rw-r--r--. 2 root root 0 8月 1 21:02 /media/bb
5、通過上面創建的硬鏈接文件可以看到,硬鏈接沒有指向源文件的箭頭。 6、硬鏈接與源文件的inode號一致。
[root@localhost opt]# ll -i bb
34457962 -rw-r--r--. 2 root root 0 8月 1 21:02 bb
[root@localhost opt]# ll -i /media/bb
34457962 -rw-r--r--. 2 root root 0 8月 1 21:02 /media/bb
軟鏈接與硬鏈接異同的總結
鏈接
跨分區
inode號
文件時間
有無指向源文件的箭頭
源文件刪除后,鏈接是否依然有效
鏈接大小
是否可以對目錄做鏈接
向源文件寫入內容時,鏈接是否會同步更新
軟鏈接
可以
與源文件不同
與源文件不一致
有
無效
非零
可以
無論向軟(硬)鏈接、源文件哪個寫入內容,其他兩個都會同步更新
硬鏈接
不可以
與源文件相同
與源文件一致
無
有效
0
不可以