1. 程式人生 > >2.18-2.20 特殊權限和軟硬鏈接

2.18-2.20 特殊權限和軟硬鏈接

centos linux

2.18-2.22特殊權限和軟硬鏈接


2.18-2.20 特殊權限

一、特殊權限之suid

set uid權限使普通用戶臨時擁有root賦予某個命令的特殊權限。即這個命令在普通用戶用起來和root用戶用起來效果是一樣的。

語法:chmod u+s 二進制可執行文件,例如:chmod u+s /bin/ls。這樣普通用戶可以用ls查看root文件夾。

註:如果權限中的s變成了S,是由於所有者沒有執行權限,加一個x可執行權限就變成小s了。umask第一位表示為4

二、特殊權限之set gid

set gid類似於suid,但它可以作用於目錄。

chmod g+s 命令/可執行文件:讓其他用戶臨時擁有該命令所屬組的權限

chmod g+s 目錄:

其他用戶在這個目錄下新建的一切目錄和文件都歸該目錄所屬組。

註:umask第一位表示為2

三、sticky_bit

作用於目錄,對文件沒有意義。

語法:chmod o+t 目錄

註:文件能否被其他用戶刪除,主要取決於文件所在的目錄是否對其他用戶有寫的權限。(如果目錄具有寫的權限,即使文件不能讀寫執行,也並沒有什麽用,還是能被其他用戶刪除和修改。)

四、為什麽要使用特殊權限

舉個例子,比如 /usr/bin/passwd 這個二進制文件。

它的權限是 -rwsr-xr-x ,我不是所有者,我具有"x"權限,我執行它時,獲得了它的所有者(即root)的權限,

所以在該二進制程序執行時,我可以用它來讀到我平時是沒有權限訪問的 /etc/shadow 文件

(-r--------),從而能更改我自己的密碼

五、修改SUID,SGID,SBIT權限

1.符號類型修改權限

chmod u+s test --為test文件加上suid權限

chmod g+s test --為test文件加上sgid權限

chmod o+t test --為test文件加上sbit權限

2.數字類型修改權限

我們知道普通文件的rwx權限修改

對於特殊權限,需要在最前面增加一位,SUID:4,SGID:2,SBIT:1

chmod 4777 test --test擁有SUID權限,rwsrwxrwx

chmod 2777 test --test擁有SGID權限,rwxrwsrwx

chmod 1777 test --test擁有SBIT權限,rwxrwxrwt


2.21-2.22 軟鏈接和硬鏈接

軟鏈接(symbolic link)和硬鏈接(hard link)。兩種鏈接的本質區別關鍵點在於inode。

軟連接 : 跟hard link不同,這個是建立一個獨立的文件,而這個文件的作用是當讀取這個鏈接文件時,它會把讀取的行為轉發到該文件所link的文件上。這樣講,也許比較繞口,那麽就來舉一個例子。現在有文件a,我們做了一個軟鏈接文件b(只是一個鏈接文件,非常小),b指向了文件a。當讀取b時,那麽b就會把讀取的動作轉發到a上,這樣就讀取到了文件a。所以,當您刪除文件a時,文件b並不會被刪除,但是再讀取b時,會提示無法打開文件。而,當您刪除b時,a是不會有任何影響的。

看樣子,似乎 hard link 比較安全,因為即使某一個 inode 被刪掉了,只要有任何一個 inode 存在,那麽該文件就不會消失不見!不過,不幸的是,由於 Hard Link 的限制太多了,包括無法做目錄的link ,所以在用途上面是比較受限的!反而是 Symbolic Link 的使用方向較廣!那麽如何建立軟鏈接和硬鏈接呢?這就用到了ln 命令。

硬鏈接 : 當系統要讀取一個文件時,就會先去讀inode table,然後再去根據inode中的信息到塊區域去將數據取出來。而hard link 是直接再建立一個inode鏈接到文件放置的塊區域。也就是說,進行hard link的時候實際上該文件內容沒有任何變化,只是增加了一個指到這個文件的inode, hard link 有

兩個限制:(1)不能跨文件系統,因為不同的文件系統有不同的inode table; (2) 不能鏈接目錄。

如何創建:

命令: ln

語法 : ln [-s] [來源文件] [目的文件]

ln 常用的選項就一個 ‘-s’, 如果不加就是建立硬鏈接,加上就建立軟鏈接。

創建軟連接的方式

#ln -s soure /file object

創建軟連接是連接文件本身,可以跨分區建立軟連接,不會應為不同分區而出現不能使用的問題。

在創建軟連接的文件中,修改一處文件另一處同時發生修改,當刪除軟連接對象時,不影響源文件使用,當刪除源文件後,連接對象失去作用

創建硬連接的方式

#ln soure /file object

硬連接在文件中使用inode號連接,兩個連接文件同事使用一個inode號進行文件表示,一處文件修改,修改針對文件底層數據塊修改,兩個文件同時修改內容

刪除一處文件,不會影響另一處文件的使用。因為硬連接使用inode號連接,所以只能在同分區能使用,不能跨分區使用。

舉例:

技術分享圖片

上例中的 ‘ll’ 命令等同於 ‘ls -l’, 請使用 ‘which’ 命令查看一下。做了硬鏈接後,雖然兩個文件大小都為 ‘1097’, 但是目錄的大小並沒有變化。

技術分享圖片

刪除源文件passwd, 空間依舊不變。這說明硬鏈接只是復制了一份inode信息。

技術分享圖片

硬鏈接不能用於目錄。

技術分享圖片

如果刪除掉源文件,則軟鏈接文件不能讀取了,而且使用 ‘ll’ 查看發現顏色也變了。

技術分享圖片

目錄是可以軟鏈接的。


2.18-2.20 特殊權限和軟硬鏈接