歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux命令find -perm使用方法

Linux命令find -perm使用方法

日期:2017/2/28 15:52:00   编辑:Linux教程
將Linux中find命令的-perm參數弄懂,分享一下。

find -perm,根據文件的權限來查找文件,有三種形式:
find -perm mode
find -perm -mode
find -perm +mode
那麼這三者之間有什麼區別呢?解釋之前首先得簡單說一下linux中文件權限位的概念。在linux中文件或目錄有三者權限r,w,x,代表的含義分別是讀、寫、可執行。而一個文件或目錄的屬性中又包括所屬用戶u、所屬組g、其他o三個部分的屬性,分別表示所屬用戶、所屬組、其他用戶對這個文件所擁有的權限。看起來大概是這個樣子:
所屬用戶 所屬組 其他
rwx rwx rwx
用戶在其擁有權限的位上設置1,沒有權限的位設置0。如果將每個部分的這些權限位看成二進制數,每個部分可以用3位二進制數表示,最大值為7(2^3-1),表示可讀、可寫、可執行。嚴格的來說,文件權限除了r、w、x以外還有setuid,setgid權限,等下再解釋。

好了,有了權限位的基礎,那麼再來看find -perm mode。mode是三個數字表示的,每個數字最大值是7(原因前面解釋過了)。
find -perm mode , 表示嚴格匹配,也就是你的文件權限位轉換成對應的十進制數字與mode一模一樣,那麼匹配成功,需要注意的是如果mode給的數字不足3位,那麼前面自動添0(嚴格的說是不足4位,原因就是前面所說的setuid,setgid,稍後解釋)

find -perm -mode , 表示mode中轉換成二進制的1在文件權限位裡面必須匹配,比如mode=644那麼轉換成二進制為110 100 100,而被查找的文件的權限位也可以被轉換成一個二進制數,兩者在位上為1的部分必須完全匹配,而0則不管。例如被查找的文件的權限為轉換成二進制數是111 111 111那麼這個比如被匹配,而假如是100 100 100那麼則不會匹配。所以這個'-'的作用歸結起來就是匹配比mode權限更充足的文件(找不到什麼詞語來形容了)

find -perm +mode , 與 -mode的區別是+mode只需其中的任意一個1的部分被匹配,-mode是所有1的部分都必須被匹配,同樣+mode也不管0位。

現在來解釋setuid,setgid,setuid權限是用來使其他用戶可以“越權”執行你的命令,而本質上的實現就是在權限檢查的時候,在進程的的有效UID裡面保存了這個其他用戶的UID,所以權限得意驗證通過(在這裡的注釋1裡面很簡單的介紹了一下),這些權限用一個新的3位二進制數表示,有4,2,1三種值,4表示有setuid權限,2表示有setgid權限,1表示有粘著位(t)權限(粘著位權限最典型的例子是/tmp,每個用戶可以在裡面創建、更新、刪除自己創建(文件所屬用戶是自己)的文件,而不能更改別人的文件)。

如果有疑問,歡迎交流~

Copyright © Linux教程網 All Rights Reserved