find 查詢指定許可權的檔案

2021-10-05 12:26:09 字數 1571 閱讀 6291

說明:

** 並新增了一些自己的修改:p

#查詢系統中被設定了setuid的檔案:

find / -type f \( -perm -04000 -o -perm -02000 \) -exec ls -lg {} \;`

-perm(permission)

-perm mode:精確匹配許可權

-perm -mode:完全包含此mode時才可以匹配

-perm /mode:任何一位匹配即可

#find  /tmp  -perm  755           //查詢在/tmp目錄下許可權是755的檔案

#find  /tmp  -perm  -222          //表示必須所有類別使用者都滿足有寫許可權

#find  /tmp  -perm  +222          //表示只要有一類使用者(屬主,屬組,其他)的匹配寫許可權就行

-perm mode:檔案許可正好符合mode 

-perm -mode:  檔案許可完全符合mode 

-perm +或/  mode:檔案許可部分符合mode 

對於mode 的理解,網上找了3種理解方式,

比如當前目錄下有a b c d4個檔案

a檔案的許可權為6000 也就是a檔案僅有suid sgid的特殊許可權

b檔案的許可權為2000 也就是b檔案僅有sgid的特殊許可權

c檔案的許可權為4000 也就是c檔案僅有suid的特殊許可權

d檔案的許可權為6600 也就是d檔案有sgid suid的特殊許可權並且該檔案擁有者對該檔案有讀寫許可權

那麼現在find . -type f -perm 6000 可以找到a檔案,因為a檔案許可權為6000

那麼現在find . -type f -perm -6000 可以找到a d兩個檔案,這是因為:

我們可以先將a b c d這4個檔案的許可權轉化為2進製那麼,

a許可權轉為2進製後為 110 000 000 000

b許可權轉為2進製後為 010 000 000 000

c許可權轉為2進製後為 100 000 000 000

d許可權轉為2進製後為 110 110 000 000

在find . -type f -perm -6000 中的6000許可權轉為2進製為110 000 000 000,那麼6000前的-號代表缺一不可,也就是如果有1的地方必須有1,那麼這裡找-6000許可權的檔案,這6000許可權裡前面有2個位置都是1,所以這裡find找-6000許可權的檔案就是找前面2個位置都是1的檔案.而只有a d這兩個檔案前2個位置都是1,所以find . -type f -perm -6000 只會找到a d兩個檔案.

find . -type f -perm +6000會找到a b c d這4個檔案,這是因為:+6000 裡的這個+號代表有1即可,也就是有1的位置,任何位置只要有1就可以.那麼這裡找+6000許可權的檔案,這6000許可權前面2個位置都有1,所以這裡find 找+6000許可權的檔案就是找前面2個位置只要有乙個位置有1的檔案就可以了,這4個檔案都符合要求所以最後都能被 find . -type f -perm +6000找到

find 在指定的路徑下查詢指定檔案

1 功能說明 find命令用來在指定的路徑下查詢指定的檔案。其格式如下 find path name options print exec ok 命令 path name find命令查詢的目錄路徑,例如可以用 表示當前目錄,用 表示系統根目錄。options find命令的這個選項主要用來控制搜尋...

CLI find 查詢指定許可權的檔案

說明 並新增了一些自己的修改 p 查詢系統中被設定了setuid的檔案 find type f perm 04000 o perm 02000 exec ls lg 比如當前目錄下有a b c d4個檔案 a檔案的許可權為6000 也就是a檔案僅有suid sgid的特殊許可權 b檔案的許可權為20...

find命令查詢包含指定內容的檔案

前端時間一直在思索如何查詢包含指定內容的檔案,但是一直苦思不得其解。後來范縣問題的原因在於對linux的管道 的理解不夠徹底。咱一直以為查詢當前目錄內包含x的查詢方式是 find grep x 後來檢視多方資料發現,應該是 find exec grep x 或者 find xargs grep x ...