特殊權限和軟、硬連接介紹

軟鏈接、硬連接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

相關文章
相關標籤/搜索