原文发表于《网络安全和信息化》2017年第3期,现转发到博客。
find是Linux中功能强悍的文件查找,它可以实现文件的精确查找,是在日常运维工作中最常使用的之一。find支持的查找条件十分多,用法也比较复杂,其中按文件属性或是权限进行查找就是一种相对较为中级的find查找方式,好多初学者常常对这两种查找方式理解和把握不够透彻,本文就分别梳理了怎样来设定和使用这两种查找条件。
1.依照文件属性查找
文件属性主要是指文件的所有者和所属组这两种所属关系。按文件属性查找,主要有以下选项:
l-user用户名:按照所有者查找;
l-group组名:按照所属组查找;
l-uidUID:按照UID查找;
l-gidGID:按照GID查找;
l-nouser:查找没有所有者的文件;
l-nogroup:查找没有所属组的文件。
例:在/home目录下查找所有属于用户student的文件或目录。
[root@localhost~]#find/home-userstudent-ls
4009034drwx------4studentstudent40969月816:33/home/student
rw-r--r--1studentstudent1761月162015home/student/.bash_profile
……
例:在/var目录中查找所有者为root且所属组为mail的文件或目录。
[root@localhost~]#find/var-userroot-groupmail-ls
6553094drwxrwxr-x2rootmail409612月2311:24/var/spool/mail
有时可能会碰到这样的情况,例如文件/tmp/test属于zhangsan所有,倘若将用户zhangsan删掉,这么/tmp/test的所有者和所属组就弄成了zhangsan以前的uid和gid。
[root@localhost~]#ll/tmp/test//文件属于zhangsan
-rw-r--r--.1zhangsanzhangsan012月2305:59/tmp/test
[root@localhost~]#userdel-rzhangsan//删掉zhangsan用户
[root@localhost~]#ll/tmp/test//文件的所有者和所属组弄成了uid和gid
-rw-r--r--.1504504012月2305:59/tmp/test
这时我们也可以通过uid或gid去查找这类文件。
[root@localhost~]#find/tmp-uid504-ls
7971890-rw-r--r--1504504012月2312:12/tmp/test
虽然对于这些正常的所属关系是用户名或组名的文件,同样也可以通过uid或是gid进行查找。例如用户student的uid是500,我们通过uid在/home目录中查找属于student的文件。
[root@localhost~]#find/home-uid500-ls
4009034drwx------4studentstudent40969月816:33/home/student
rw-r--r--1studentstudent1761月162015/home/student/.bash_profile
……
对于/tmp/test这样的所有者和所属组弄成了uid和gid的文件,就称为没有所有者或所属组的文件linux设置默认网关linux获取当前时间,这样的文件在系统中有一定危险性,所以我们可以通过-nouser或-nogroup选项去查找这类文件。找到这类文件以后,最好是借助chown命令重新为其指定所有者和所属组。
[root@localhost~]#find/tmp-nouser-ls
7971890-rw-r--r--1504504012月2312:12/tmp/test
[root@localhost~]#find/tmp-nogroup-ls
7971890-rw-r--r--1504504012月2312:12/tmp/test
2.按照文件权限查找
按文件权限查找,须要用到-perm选项,依据对权限的设置条件不同,该选项又分为三种用法:
l-permmode:精确匹配mode所表示的条件。
l-perm/mode:任何一类用户(ugo)的权限中的任何一位(rwx)符合mode所表示的条件即可,9位权限之间存在“或”关系。
l-perm-mode:任何一类用户(ugo)的权限中的每一位(rwx)都要同时符合mode所表示的条件,9位权限之间存在“与”关系。
比如,要在/boot目录中查找权限为755的普通文件,并显示详尽信息。我们设置查找条件为“-perm755”,可以发觉共找到两个文件,这两个文件的权限都对查找条件进行了精确匹配。
[root@localhost~]#find/boot-perm755-typef-ls
65030250-rwxr-xr-x1rootroot2542484月72015/boot/efi/EFI/redhat/grub.efi
164125-rwxr-xr-x1rootroot42221927月22015/boot/vmlinuz-2.6.32-573.el6.x86_64
下边继续在/boot目录中查找权限为750的目录,并且没有查找到任何符合条件的结果。
[root@localhost~]#find/boot-perm750-typed-ls
将查找条件更改为“-perm/750”,表示任何一个目录只要其所有者具有读写执行中的任何一项权限,或是其所属组具有读和执行中的任何一项权限linux 文件执行权限,就可以符合查找条件。须要注意的是,查找条件中的0表示忽视对相应对象的权限要求,而不是指没有任何权限。重新指定查找条件后,就可以找到好多符合要求的目录。
[root@localhost~]#find/boot-perm/750-typed-ls
22dr-xr-xr-x5rootroot10249月200:36/boot
1113drwx------2rootroot122889月200:24/boot/lost+found
650272drwxr-xr-x3rootroot10249月200:33/boot/efi
……
下边再将查找条件更改为“-perm-750”,表示所要查找的目录其所有者必须具有读写执行权限,同时其所属组必须具有读和执行权限,对其他用户的权限没有要求。从查找结果中可以发觉,之前通过条件“-perm/750”所查找下来的两个目录“/boot”和“/boot/lost+found”,此时都不在查找结果之列。
[root@localhost~]#find/boot-perm-750-typed-ls
650272drwxr-xr-x3rootroot10249月200:33/boot/efi
650282drwxr-xr-x3rootroot10249月200:33/boot/efi/EFI
650292drwxr-xr-x2rootroot10249月200:33/boot/efi/EFI/redhat
所以假如要在系统中查找所有人都有写权限的目录,则应当指定条件“-perm-222”,假如以“-perm/222”为查找条件,则是所有者、所属组或其他用户中任何一个具有写权限就会符合要求。
[root@localhost~]#find/-perm-222-typed-ls2>/dev/null
68100drwxrwxrwt2rootroot10012月2303:37/dev/shm
6541084drwxrwxrwt2rootroot409612月2303:42/var/tmp
7848974drwxrwxrwt12rootroot409612月2306:58/tmp
……
不仅读写执行这种常规权限之外,Linux系统还提供了特殊权限SUID和SGID,它们所对应的数字分别是4和2。假如要在系统中查找所有设置了SUID的文件,应指定条件“-perm-4000”。
[root@localhost~]#find/-perm-4000–ls2>/dev/null
78897640-rwsr-xr-x1rootroot3820012月112014/bin/ping
78899076-rwsr-xr-x1rootroot773368月112014/bin/mount
……
假如要查找所有设置了SGID的文件,应指定条件“-perm-2000”。
[root@localhost~]#find/-perm-2000–ls2>/dev/null
78494416-rwxr-sr-x1rootcgred163841月62015/bin/cgexec
78497116-rwxr-sr-x1rootcgred163521月62015/bin/cgclassify
……
假如要同时查找所有设置了SUID或是SGID的文件linux 文件执行权限,这么应当指定条件“-perm/6000”,倘若将条件指定为“-perm-6000”,则表示查找既设置了SUID也设置了SGID的文件,而这样的文件在系统中是不存在的。
[root@localhost~]#find/-perm-6000–ls2>/dev/null
//查找同时设置了SUID和SGID的文件,没有结果。
[root@localhost~]#find/-perm/6000–ls2>/dev/null
//查找设置了SUID或是SGID的文件
78897640-rwsr-xr-x1rootroot3820012月112014/bin/ping
78899076-rwsr-xr-x1rootroot773368月112014/bin/mount
……
本文原创地址://q13zd.cn/paehbrgjlxtq.html编辑:刘遄,审核员:暂无