軟鏈接、硬連接node
能夠用ln命令對一個已經存在的文件再創建一個新的鏈接,而不復制文件的內容。鏈接有軟鏈接和硬鏈接之分,軟鏈接又叫符號鏈接。它們各自的特色是:linux
硬鏈接:是給文件一個副本,原文件名和鏈接文件名都指向相同的物理地址。目錄不能有硬鏈接;硬鏈接不能跨越文件系統(不能跨越不一樣的分區)文件在磁盤中只有一個拷貝,節省硬盤空間;shell
修改其中一個,與其鏈接的文件同時被修改。若是刪除其中任意一個其他的文件將不受影響。
因爲刪除文件要在同一個索引節點屬於惟一的鏈接時才能成功,所以能夠防止沒必要要的誤刪除。
符號鏈接(軟鏈接):用ln -s命令創建文件的符號鏈接符號鏈接是linux特殊文件的一種,做爲一個文件,它的數據是它所鏈接的文件的路徑名。相似windows下的快捷方式。
固然刪除這個鏈接,也不會影響到源文件,但對鏈接文件的使用、引用都是直接調用源文件的。vim
具體關係 :windows
軟連接和硬連接bash
硬連接和軟連接的區別:函數
1:硬連接原文件和新文件的inode編號一致。而軟連接不同。ui
2:對原文件刪除,會致使軟連接不可用,而硬連接不受影響。spa
3:對原文件的修改,軟、硬連接文件內容也同樣的修改,由於都是指向同一個文件內容的。操作系統
2.18 特殊權限set_uid
set命令:做用主要是顯示系統中已經存在的shell變量,以及設置shell變量的新變量值。使用set更改shell特性時,符號"+"和"-"的做用分別是打開和關閉指定的模式。set命令不可以定義新的shell變量。若是要定義新的變量,可使用declare命令以變量名=值
的格式進行定義便可。
Set_UID命令:在Linux的命令行下執行「ps -aux」命令時,就會列出當前系統中的全部進程,在其中能夠看到每一個進程都和用戶的真實id關聯,實際上,Linux中的每一個進程還跟一個稱爲有效用戶id(set User id)緊密關聯。前者用於表示該進程由那個用戶控制,後者用於爲新創建的文件分配全部權,檢查文件訪問許可等操做,同時有效用戶爲該文件的全部者。linux系統內核容許一個進程以調用一個SetUID程序(或顯示執行SetUID系統調用)的方式,來改變其自身的有效用戶id。如何設置SetUID權限呢?使用「chmod」命令便可爲指定文件設置SetUID權限,例如「chmod 4xxx filename」命令,取消SetUID權限的命令爲「chmod xxx filename」。相似的,執行「chmod 2xxx filename」命令能夠設置SetGID權限,使用「chmod xxx filename」命令便可取消SetGID權限,若是執行「chmod 6xxx filename」命令,便可同時爲指定文件設置SetUID和SetGID,執行命令「chmod 0xxx filename」,便可同時取消指定文件的SetUID和SetGID權限。命令"chmod 6755 /usr/bin/vim",就能夠將「vi」命令的全部者更改成Root,
set(選項)(參數)
-a:標示已修改的變量,以供輸出至環境變量。 -b:使被停止的後臺程序馬上回報執行狀態。 -C:轉向所產生的文件沒法覆蓋已存在的文件。 -d:Shell預設會用雜湊表記憶使用過的指令,以加速指令的執行。使用-d參數可取消。 -e:若指令傳回值不等於0,則當即退出shell。 -f:取消使用通配符。 -h:自動記錄函數的所在位置。 -H Shell:可利用"!"加<指令編號>的方式來執行history中記錄的指令。 -k:指令所給的參數都會被視爲此指令的環境變量。 -l:記錄for循環的變量名稱。 -m:使用監視模式。 -n:只讀取指令,而不實際執行。 -p:啓動優先順序模式。 -P:啓動-P參數後,執行指令時,會以實際的文件或目錄來取代符號鏈接。 -t:執行完隨後的指令,即退出shell。 -u:當執行時使用到未定義過的變量,則顯示錯誤信息。 -v:顯示shell所讀取的輸入值。 -x:執行指令後,會先顯示該指令及所下的參數。
取消某個set曾啓動的參數。
使用declare命令定義一個新的環境變量"mylove",而且將其值設置爲"Visual C++",輸入以下命令:
declare mylove='Visual C++' #定義新環境變量
再使用set命令將新定義的變量輸出爲環境變量,輸入以下命令:
set -a mylove #設置爲環境變量
執行該命令後,將會新添加對應的環境變量。用戶可使用env命令和grep命令分別顯示和搜索環境變量"mylove",輸入命令以下:
env | grep mylove #顯示環境變量值
此時,該命令執行後,將輸出查詢到的環境變量值。
set_uid的表現,權限上添加了小寫的s,
更改密碼的文件/etc/shadow,root也沒法更改。
ls能夠查看root權限時。是添加了set_uid權限。
去掉set_uid權限方法。
普通用戶用ls命令查看root權限。能顯示的內容。
2.19 特殊權限set_gid
(1)、設置set_gid的方法。設置過的文件會變成黃(橙)色。
(2)、更改所屬組方法。
在ls命令前面添加!號,顯示的全面。
2.20 特殊權限stick_bit
(1).防刪除,在權限中以t顯示。
設置777權限,所屬者,所屬組。
2.21 軟連接文件(symbolic link)
Symbolic Links : 跟hard link不一樣,這個是創建一個獨立的文件,而這個文件的做用是當讀取這個連接文件時,它會把讀取的行爲轉發到該文件所link的文件上。這樣講,也許比較繞口,那麼就來舉一個例子。如今有文件a,咱們作了一個軟連接文件b(只是一個連接文件,很是小),b指向了文件a。當讀取b時,那麼b就會把讀取的動做轉發到a上,這樣就讀取到了文件a。因此,當你刪除文件a時,文件b並不會被刪除,可是再讀取b時,會提示沒法打開文件。而,當你刪除b時,a是不會有任何影響的。
符號(軟)連接 :
一、可應用於目錄;
二、能夠跨文件系統;
三、不會增長被連接文件的連接次數;
四、其大小爲指定的路徑所包含的字符個數;
命令: ln
語法 : ln [-s] [來源文件] [目的文件]
-v : 顯示過程
ln 經常使用的選項就一個 ‘-s’, 若是不加就是創建硬連接,加上就創建軟連接。
[root@localhost ~]# mkdir 123 [root@localhost ~]# cd 123 [root@localhost 123]# cp /etc/passwd ./ [root@localhost 123]# ll 總用量 4 -rw-r--r-- 1 root root 1097 5月 10 17:08 passwd [root@localhost 123]# du -sk 8 . [root@localhost 123]# ln passwd passwd-hard [root@localhost 123]# ll 總用量 8 -rw-r--r-- 2 root root 1097 5月 10 17:08 passwd -rw-r--r-- 2 root root 1097 5月 10 17:08 passwd-hard [root@localhost 123]# du -sk 8
實例淺綠色
若是刪除掉源文件,則軟連接文件不能讀取了,並且使用 ‘ll’ 查看發現顏色也變了。
[root@localhost ~]# ln -s 456 789 [root@localhost ~]# ls -ld 456 789 drwxr-xr-x 2 root root 4096 5月 10 17:22 456 lrwxrwxrwx 1 root root 3 5月 10 17:29 789 -> 456
注意:建立軟鏈接時,源文件(左邊的)要用絕對路徑,防止該軟連接文件路徑變化時,找不到路徑。大文件放在前面;作軟鏈接儘可能使用絕對路徑。
軟連接的做用 :
1)方便訪問一個文件
2)一個文件我想在多個地方都能訪問到
/tmp/abc/1.txt /root/123/1.txt
3)磁盤擴容
舉例 : 系統裏面有兩個分區 : /123 /abc ,其中/123/快用滿了,還要寫一個文件寫道/123/aaa(要寫進去意味着/123/着分區要寫滿了,而且還不夠。)此時看到/abc/還有不少不少空間,因此咱們就想到了要借用一下/abc/的空間,如何借用?用軟連接。
/123/aaa --->mv /abc/aaa -->經過/123/aaa/能夠訪問到。ln -s /abc/aaa ----> 再寫數據到aaa實際上寫到了/abc/aaa,同時能夠經過/123/aaa能訪問。
2.22 硬鏈接文件(hard link)
Hard Links : 當系統要讀取一個文件時,就會先去讀inode table,而後再去根據inode中的信息到塊區域去將數據取出來。而hard link 是直接再創建一個inode連接到文件放置的塊區域。也就是說,進行hard link的時候實際上該文件內容沒有任何變化,只是增長了一個指到這個文件的inode, hard link 有兩個限制:(1)不能跨文件系統,由於不一樣的文件系統有不一樣的inode table; (2) 不能連接目錄。?
‘ll’ 命令等同於 ‘ls -l’, 請使用 ‘which’ 命令查看一下。作了硬連接後,雖然兩個文件大小都爲 ‘1097’, 可是目錄的大小並無變化。
一個目錄的(ls -l)第二列的數字,其實就是該目錄下面有幾個子目錄(含隱藏的目錄.和..)
注意 : 目錄沒法作硬連接,硬連接沒法跨磁盤或者分區。
硬連接 :
一、只能對文件建立,不能應用用於目錄;
二、不能跨文件系統;
三、建立硬連接會增長文件被連接的次數
[root@localhost 123]# ll 總用量 4 -rw-r--r-- 1 root root 1097 5月 10 17:08 passwd-hard [root@localhost 123]# rm -f passwd [root@localhost 123]# du -sk 8 .
刪除源文件passwd, 空間依舊不變。這說明硬連接只是複製了一份inode信息。
[root@localhost ~]# ln 123 456 ln: "123": 不容許將硬連接指向目錄
硬連接不能用於目錄。
[root@localhost ~]# mkdir 456 [root@localhost ~]# cd 456 [root@localhost 456]# cp /etc/passwd ./ [root@localhost 456]# ln -s passwd passwd-soft [root@localhost 456]# ll 總用量 4 -rw-r--r-- 1 root root 1097 5月 10 17:18 passwd lrwxrwxrwx 1 root root 6 5月 10 17:19 passwd-soft -> passwd [root@localhost 456]# head -n1 passwd-soft root:x:0:0:root:/root:/bin/bash [root@localhost 456]# head -n1 passwd root:x:0:0:root:/root:/bin/bash [root@localhost 456]# rm -f passwd [root@localhost 456]# head -n1 passwd-soft head: 沒法打開"passwd-soft" 讀取數據: 沒有那個文件或目錄 [root@localhost 456]# ll 總用量 0 lrwxrwxrwx 1 root root 6 5月 10 17:19 passwd-soft -> passw
注意:兩種連接的本質區別關鍵點在於inode.
軟連接與硬連接的區別
軟連接:
1.軟連接:以路徑的形式存在,相似於Windows操做系統中的快捷方式;
2.軟連接:能夠 跨文件系統 ,硬連接不能夠;
3.軟連接:能夠對一個不存在的文件名進行連接;
4.軟連接:能夠對目錄進行連接;
硬連接:
1.硬連接:以文件副本的形式存在。但不佔用實際空間。
2.不容許給目錄建立硬連接
3.硬連接只有在同一個文件系統中才能建立
參考連接 :
https://mp.weixin.qq.com/s/RAReIQsXJhv750xw4wILjg