說明:
** 並新增了一些自己的修改: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 ...