1. 程式人生 > >特殊權限以及軟、硬鏈接

特殊權限以及軟、硬鏈接

二周第四次課

特殊權限

文件或目錄的特殊權限共有三類:suid、sgid以及sticky。

root用戶是超級用戶,不管一個文件的權限(普通權限)是怎樣的,root都可以編輯。(若有隱藏權限,root可以先去掉隱藏權限,然後再編輯)

技術分享圖片

這裏的/etc/shadow文件沒有任何權限,但是root用戶依然可以編輯它,使用vi編輯器,然後wq!保存退出。


suid

針對可執行文件設置,運行該命令時,臨時獲得命令擁有者的權限。

例如,可執行文件/usr/bin/passwd,因為有suid權限,所以普通用戶在使用passwd這個命令時,將獲得擁有者root的權限。使用passwd命令,實際上是更改/etc/shadow這個密碼配置文件,這個配置文件沒有任何權限,只有root能修改,所以就算/usr/bin/passwd這個文件針對其他人有x權限,但也執行不成功,因為其他人沒有權限去修改/etc/shadow這個文件,所以需要給它suid權限,讓它以root的身份運行這個命令。

技術分享圖片


chmod u+s 文件名:設置suid權限。

chmod u-s 文件名:撤掉suid權限。

如果使用 chmod u=rws 文件名,那麽則會顯示rwS,因為沒有設置x權限。雖然一般不會出問題,但最好還是使用上面的+-來添加或刪除suid權限。

技術分享圖片


sgid

可以針對可執行文件設置,也可以針對目錄設置。


針對可執行文件設置時,運行該命令時,臨時獲得命令擁有組的權限。

chmod g+s 文件名:設置sgid權限。

chmod g-s 文件名:撤銷sgid權限。

技術分享圖片


針對目錄設置時,在該目錄下新創建的所有文件或目錄都會繼承父目錄的擁有組。(設置sgid之前本身就存在的子目錄或者子文件不受影響)

技術分享圖片


sticky

粘滯位,或者叫防刪除位。

針對目錄設置,在該目錄下的所有文件或目錄只能被以下三類人刪除:

1.該目錄下的文件或目錄的擁有者

2.該目錄的擁有者(若擁有w權限)

3.root用戶

chmod o+t 目錄名:設置sticky權限。

chmod o-t 目錄名:撤銷sticky權限。

技術分享圖片


一個文件或目錄能否被刪除不是看它自己的w權限,而是要看它上級目錄是否有w權限。

當一個目錄被設置了sticky位時,而某個用戶是這個目錄的擁有者且擁有w權限,那麽這個用戶可以刪除這個目錄裏面的所有文件,不管這些文件的擁有者是不是他。sticky權限只針對其他人!

技術分享圖片

技術分享圖片


數字法更改特殊權限:chmod ---- 文件名。(第一位數字代表特殊權限)

suid=4,sgid=2,sticky=1。

技術分享圖片


軟、硬鏈接

硬鏈接

linux下的文件是通過索引節點(Inode)來識別文件的,硬鏈接可以認為是一個指針,指向文件索引節點的指針,系統並不為它重新分配inode。多個文件名指向同一索引節點是存在的,一般這種鏈接就是硬鏈接。硬連接的作用是允許一個文件擁有多個有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止“誤刪”的功能。因為對應該索引節點有一個以上的鏈接,所以只刪除一個鏈接並不影響索引節點本身和其它的鏈接,只有當最後一個鏈接被刪除後,文件的數據塊才會被釋放,也就是說,文件才會被徹底刪除。

每添加一個硬鏈接,文件的鏈接數就加1。

互為硬鏈接的文件的所有屬性都相同(inode號、權限、修改時間等)。

硬鏈接之間存在同步機制,一處數據的改變會實時同步到另一處。

如果我們刪除硬鏈接文件的原文件,硬鏈接文件仍然存在,而且保留了原有的內容。這時,系統就“忘記”了它曾經是硬鏈接文件,而把它當成一個普通文件。(一般來說硬鏈接裏不存在原文件和鏈接文件的概念,只說它們互為硬鏈接,都一樣)

互為硬鏈接的文件雖然顯示的大小一樣,但實際上只占用一份磁盤空間。

硬鏈接不像軟鏈接那麽好找,不會直接標識出來,但後面講到的find命令可以找到硬鏈接。

硬鏈接有兩個限制:

1.硬鏈接只針對文件,不能用於目錄。

2.互為硬鏈接的文件必須在同一個文件系統(分區)裏。因為每個文件系統都有自己一套inode表,不同文件系統中可能會有inode號一樣的文件,這樣的話做硬鏈接就會出問題。

使用方法:ln 原文件 鏈接文件

技術分享圖片


軟鏈接

又叫符號鏈接,相當於windows中的快捷方式,裏面包含的是到原文件的路徑。

可以針對文件或目錄,也可以鏈接不同文件系統的文件。

軟鏈接原文件和鏈接文件擁有不同的inode號,表明他們是兩個不同的文件。他們的各項屬性均不相同。軟鏈接的大小跟到原文件的路徑有關,路徑越長軟鏈接越大。

對鏈接文件進行操作(讀寫),實際上是對原文件的操作。

刪除原文件或者移動原文件到其他路徑,則鏈接失效。

使用方法:ln -s 原文件 鏈接文件

技術分享圖片


特殊權限以及軟、硬鏈接