引言: find是Linux系統(tǒng)中功能強(qiáng)大的文件查找命令,它可以實現(xiàn)文件的精確查找,是在日常運維工作中最常使用的命令之一。find命令支持的查找條件非常多,其中按文件屬性或是權(quán)限進(jìn)行查找就是一種相對較為高級的find查找方法。本文就向大家介紹如何來設(shè)定和使用這兩種查找條件。
find 是
Linux系統(tǒng)中功
能強(qiáng)大的文件查
找命令,它可以
實現(xiàn)文件的精確
查找,是在日常
運維工作中最常
使用的命令之一。find命令支持的查找條件非常多,用法也比較復(fù)雜,其中按文件屬性或是權(quán)限進(jìn)行查找就是一種相對較為高級的find查找方法,很多初學(xué)者對這兩種查找方法理解和掌握不夠透徹,本文就分別梳理了如何來設(shè)定和使用這兩種查找條件。
文件屬性主要是指文件的所有者和所屬組這兩種所屬關(guān)系。按文件屬性查找,主要有以下選項:
* -user 用戶名:根據(jù)所有者查找。
* -group 組名:根據(jù)所屬組查找。
* -uid UID:根據(jù)UID查找。
* -gid GID:根據(jù)GID查找。
* -nouser:查找沒有所有者的文件。
* -nogroup:查找沒有所屬組的文件。
實例一:在/home目錄下查找所有屬于用戶student的文件或目錄。
實例二:在/var目錄中查找所有者為root且所屬組為mail的文件或目錄。
實例三:有時可能會遇到這樣的情況,比如文件/tmp/test屬 于zhangsan所有,如果將用戶zhangsan刪除,那么/tmp/test的所有者和所屬組就變成了zhangsan原先的uid和gid。
這時我們也可以通過uid或gid去查找這類文件。
實例四:對于那些正常的所屬關(guān)系是用戶名或組名的文件,也可以通過uid或是gid進(jìn)行查找。比如用戶student的uid是500,我們通過uid在/home目錄中查找屬于student的文件。
實例五:對于/tmp/test這樣的所有者和所屬組變成了uid和gid的文件,就稱為沒有所有者或所屬組的文件,這樣的文件在系統(tǒng)中有一定危險性,所以我們可以通過-nouser或-nogroup選項去查找這類文件。找到這類文件之后,最好是利用chown命令重新為其指定所有者和所屬組。
按文件權(quán)限查找,需要用到-perm選項,根據(jù)對權(quán)限的設(shè)置條件不同,該選項又分為三種用法:
* -perm mode:精確匹配mode所表示的條件。
* -perm /mode:任何一類用戶(ugo)的權(quán)限中的任何一位(rwx)符合mode所表示的條件即可,9位權(quán)限之間存在“或”關(guān)系。
* -perm -mode:任何一類用戶(ugo)的權(quán)限中的每一位(rwx)都要同時符合mode所表示的條件,9位權(quán)限之間存在“與”關(guān)系。
實例一:在/boot目錄中查找權(quán)限為755的普通文件,并顯示詳細(xì)信息。設(shè)置查找條件為“-perm 755”,可以發(fā)現(xiàn)共找到兩個文件,這兩個文件的權(quán)限都對查找條件進(jìn)行了精確匹配。
下面繼續(xù)在/boot目錄中查找權(quán)限為750的目錄,但是沒有查找到任何符合條件的結(jié)果。
實例二:將查找條件修改為“-perm /750”,表示任何一個目錄只要其所有者具有讀寫執(zhí)行中的任何一項權(quán)限,或是其所屬組具有讀和執(zhí)行中的任何一項權(quán)限,就可以符合查找條件。查找條件中的0表示忽略對相應(yīng)對象的權(quán)限要求,而不是指沒有任何權(quán)限。重新指定查找條件后,即可找到很多符合要求的目錄。
實例三:將查找條件修改為“-perm -750”,表示所要查找的目錄所有者必須具有讀寫執(zhí)行權(quán)限,同時,所屬組必須具有讀和執(zhí)行權(quán)限,對其他用戶的權(quán)限沒有要求。從查找結(jié)果中可以發(fā)現(xiàn),之前通過條件“-perm/750”所查找出來的兩個目錄“/boot”和“/boot/lost+found”,此時都不在查找結(jié)果之列。
所以,如果要在系統(tǒng)中查找所有人都有寫權(quán)限的目錄,則應(yīng)該指定條件“-perm-222”,如果以“-perm /222”為查找條件,則是所有者、所屬組或其他用戶中任何一個具有寫權(quán)限都會符合要求。
實例四:除了讀寫執(zhí)行這些常規(guī)權(quán)限之外,Linux系統(tǒng)還提供了特殊權(quán)限SUID和SGID,它們所對應(yīng)的數(shù)字分別是4和2。如果要在系統(tǒng)中查找所有設(shè)置了SUID的文件,應(yīng)指定條件“-perm -4000”。
實例五:如果要查找所有設(shè)置了SGID的文件,應(yīng)指定條件“-perm -2000”。
實例六:如果要同時查找所有設(shè)置了SUID或是SGID的文件,那么應(yīng)該指定條件“-perm /6000”,如果將條件指定為“-perm -6000”,則表示查找既設(shè)置了SUID也設(shè)置了SGID的文件,而這樣的文件在系統(tǒng)中是不存在的。
//查找設(shè)置了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
……