Linux特殊權限set_uid、set_gid、stick_bit命令和軟鏈接文件、硬連接文件
特殊權限set_uid:
用ls -l查看 passwd命令文件的路徑可以看到這個文件和之前所看到的文件有些不同,有紅色的標記,而且有個s權限:
這個s就是set_uid的權限,這個權限可以讓普通用戶修改自己的密碼,這個權限的原理是:當普通用戶執行
註意:能夠有set_uid權限的文件,這個文件一定得是二進制的可執行文件。
普通用戶使用ls命令想要查看root目錄是權限不夠的,所以想要普通用戶也能使用ls命令查看root目錄或者查看需要root權限的文件、目錄的時候,我們可以給ls命令授予set_uid權限:
給ls命令授予set_uid權限:
這時候用普通用戶就可以查看root目錄了:
去掉set_uid權限:
另一種設置set_uid權限的方法:
想要將s變成小寫加個x權限即可:
目錄也是可以設置set_uid權限的,但是也因為目錄不是命令文件,沒有實際的執行意義,所以設置set_uid權限也是沒有意義的。
特殊權限set_gid:
set_gid和 set_uid挺像的,只不過這個set_gid權限是作用在所屬組上面的,給ls命令設置一個set_gid權限:
所以set_gid權限的作用是臨時給普通用戶擁有此文件所屬組的身份權限,目錄也是可以設置這個權限的:
上面我們把Test1目錄設置了set_gid權限,這時候把Test1目錄的所屬組改為user1後,在此目錄下所創建的子目錄或文件的所屬組都會和父目錄保持一致,也就是說它們的所屬組都會是user1:
特殊權限stick_bit:
tmp目錄有stick_bit權限,這個權限的表示字符是t:
這個stick_bit權限是用於防止自己的文件被其他用戶刪除的,設置了權限後除了這文件的所有者和所屬組之外的用戶是不能刪除的:
軟鏈接文件:
軟鏈接文件類似於windows的快捷方式:
軟鏈接文件相當於是存儲了一個路徑,所以這個軟鏈接文件的大小就取決於路徑的長度。
在lib64目錄下軟鏈接文件比較多:
軟鏈接文件的作用主要是節省存儲空間,因為當需要復制一個文件的時候只需要復制那個文件的軟鏈接文件即可,如果復制文件本身的話占用空間會大得多。
制作軟鏈接:
ln -s命令可以制作軟鏈接:
目錄也可以做一個軟鏈接:
制作相對路徑的軟鏈接:
相對路徑的軟鏈接有弊端,如果把這個目錄拷貝到別的計算機或者這個目錄的名稱發生改變的話,這個相對路徑的軟鏈接就會失效,所以制作軟鏈接盡量使用絕對路徑。
例如我將123.txt移動到Test1目錄下:
如果是使用的絕對路徑就不會有這種問題:
所以盡量使用絕對路徑。
軟鏈接還可以解決磁盤存儲空間不夠的問題,例如tmp目錄的快存儲滿了,但是這個目錄下有一個日誌文件需要一直被寫入數據,這個時候就可以將這個日誌文件先移動到一個磁盤空間大的目錄下,然後將這個日誌文件做一個軟鏈接,接著將這個軟鏈接文件放在tmp目錄下,這樣的話寫入的數據是寫入到原文件的,而不會寫入到軟鏈接文件,所以遇到這問題的時候可以用這種方式解決。
硬鏈接文件:
ln命令可以制作硬鏈接,硬鏈接有點類似於復制了原文件但又不完全是,因為這個復制不會占用磁盤空間,因為原文件和硬鏈接文件的inode號是一樣的,使用的是同一個inode號。
所以原文件和硬鏈接文件實際上是同一個文件,當原文件的內容改動時,硬鏈接的文件也會跟著改動,同樣的硬鏈接的文件內容改動時,原文件的內容也會跟著改動。硬鏈接只支持對文件進行制作,不能對目錄進行制作:
硬鏈接的特性:兩個文件相互為硬鏈接,並且信息一模一樣,使用的inode號也是同一個,硬鏈接的原文件即便被刪除了也不會影響到硬鏈接文件,因為原文件的inode還在被硬鏈接文件指向著。
這個inode號就像一個被多個包裝盒包裝著的氣體,這些包裝盒就是原文件和硬鏈接文件,不管你有多少個包裝盒,只要最後一個包裝盒沒有被撕掉,那麽這個氣體就不會消失,如果最後一個包裝盒都被撕掉了這個氣體自然就會流走了。所以不管刪除的是原文件還是硬鏈接文件,只要還剩最後一個文件指向著那個inode號,那麽這個文件就還存在,如果最後一個指向那個inode號的文件都被刪除了,那麽這個文件就是被徹底刪除了。
硬鏈接文件不會占用磁盤空間,因為它和原文件指向的是同一個inode,而且硬鏈接不允許跨目錄分區,因為每個目錄分區都有自己的inode體系:
本文出自 “12831981” 博客,請務必保留此出處http://12841981.blog.51cto.com/12831981/1972113
Linux特殊權限set_uid、set_gid、stick_bit命令和軟鏈接文件、硬連接文件