引言: find是Linux系統中功能強大的文件查找命令,它可以實現文件的精確查找,是在日常運維工作中最常使用的命令之一。find命令支持的查找條件非常多,其中按文件屬性或是權限進行查找就是一種相對較為高級的find查找方法。本文就向大家介紹如何來設定和使用這兩種查找條件。
find 是
Linux系統中功
能強大的文件查
找命令,它可以
實現文件的精確
查找,是在日常
運維工作中最常
使用的命令之一。find命令支持的查找條件非常多,用法也比較復雜,其中按文件屬性或是權限進行查找就是一種相對較為高級的find查找方法,很多初學者對這兩種查找方法理解和掌握不夠透徹,本文就分別梳理了如何來設定和使用這兩種查找條件。
文件屬性主要是指文件的所有者和所屬組這兩種所屬關系。按文件屬性查找,主要有以下選項:
* -user 用戶名:根據所有者查找。
* -group 組名:根據所屬組查找。
* -uid UID:根據UID查找。
* -gid GID:根據GID查找。
* -nouser:查找沒有所有者的文件。
* -nogroup:查找沒有所屬組的文件。
實例一:在/home目錄下查找所有屬于用戶student的文件或目錄。

實例二:在/var目錄中查找所有者為root且所屬組為mail的文件或目錄。


實例三:有時可能會遇到這樣的情況,比如文件/tmp/test屬 于zhangsan所有,如果將用戶zhangsan刪除,那么/tmp/test的所有者和所屬組就變成了zhangsan原先的uid和gid。

這時我們也可以通過uid或gid去查找這類文件。


實例四:對于那些正常的所屬關系是用戶名或組名的文件,也可以通過uid或是gid進行查找。比如用戶student的uid是500,我們通過uid在/home目錄中查找屬于student的文件。

實例五:對于/tmp/test這樣的所有者和所屬組變成了uid和gid的文件,就稱為沒有所有者或所屬組的文件,這樣的文件在系統中有一定危險性,所以我們可以通過-nouser或-nogroup選項去查找這類文件。找到這類文件之后,最好是利用chown命令重新為其指定所有者和所屬組。


按文件權限查找,需要用到-perm選項,根據對權限的設置條件不同,該選項又分為三種用法:
* -perm mode:精確匹配mode所表示的條件。
* -perm /mode:任何一類用戶(ugo)的權限中的任何一位(rwx)符合mode所表示的條件即可,9位權限之間存在“或”關系。
* -perm -mode:任何一類用戶(ugo)的權限中的每一位(rwx)都要同時符合mode所表示的條件,9位權限之間存在“與”關系。
實例一:在/boot目錄中查找權限為755的普通文件,并顯示詳細信息。設置查找條件為“-perm 755”,可以發(fā)現共找到兩個文件,這兩個文件的權限都對查找條件進行了精確匹配。


下面繼續(xù)在/boot目錄中查找權限為750的目錄,但是沒有查找到任何符合條件的結果。

實例二:將查找條件修改為“-perm /750”,表示任何一個目錄只要其所有者具有讀寫執(zhí)行中的任何一項權限,或是其所屬組具有讀和執(zhí)行中的任何一項權限,就可以符合查找條件。查找條件中的0表示忽略對相應對象的權限要求,而不是指沒有任何權限。重新指定查找條件后,即可找到很多符合要求的目錄。


實例三:將查找條件修改為“-perm -750”,表示所要查找的目錄所有者必須具有讀寫執(zhí)行權限,同時,所屬組必須具有讀和執(zhí)行權限,對其他用戶的權限沒有要求。從查找結果中可以發(fā)現,之前通過條件“-perm/750”所查找出來的兩個目錄“/boot”和“/boot/lost+found”,此時都不在查找結果之列。

所以,如果要在系統中查找所有人都有寫權限的目錄,則應該指定條件“-perm-222”,如果以“-perm /222”為查找條件,則是所有者、所屬組或其他用戶中任何一個具有寫權限都會符合要求。

實例四:除了讀寫執(zhí)行這些常規(guī)權限之外,Linux系統還提供了特殊權限SUID和SGID,它們所對應的數字分別是4和2。如果要在系統中查找所有設置了SUID的文件,應指定條件“-perm -4000”。

實例五:如果要查找所有設置了SGID的文件,應指定條件“-perm -2000”。

實例六:如果要同時查找所有設置了SUID或是SGID的文件,那么應該指定條件“-perm /6000”,如果將條件指定為“-perm -6000”,則表示查找既設置了SUID也設置了SGID的文件,而這樣的文件在系統中是不存在的。

//查找設置了SUID或是SGID的文件
788976 40 -rwsr-xr-x 1 root root 38200 12月 11 2014 /bin/ping
788990 76 -rwsr-xr-x 1 root root 77336 8月 11 2014 /bin/mount
……