原文发表于《网络安全和信息化》2017年第3期,现转发到博客。

find是Linux系统中功能强大的文件查找命令,它可以实现文件的精确查找,是在日常运维工作中最常使用的命令之一。find命令支持的查找条件非常多,用法也比较复杂,其中按文件属性或是权限进行查找就是一种相对较为高级的find查找方法,很多初学者往往对这两种查找方法理解和掌握不够透彻,本文就分别梳理了如何来设定和使用这两种查找条件。

1.    根据文件属性查找

文件属性主要是指文件的所有者和所属组这两种所属关系。按文件属性查找,主要有以下选项:

l  -user 用户名:根据所有者查找;

l  -group 组名:根据所属组查找;

l  -uid UID:根据UID查找;

l  -gid GID:根据GID查找;

l  -nouser:查找没有所有者的文件;

l  -nogroup:查找没有所属组的文件。

例:在/home目录下查找所有属于用户student的文件或目录。

[root@localhost    ~]# find /home -user student -ls

400903    4 drwx------   4 student  student      4096 9月     8 16:33 /home/student

400904    4 -rw-r--r--   1 student  student 176 1月 16 2015  home/student/.bash_profile

……

例:在/var目录中查找所有者为root且所属组为mail的文件或目录。

[root@localhost    ~]# find /var -user root -group mail    -ls

655309    4 drwxrwxr-x   2 root     mail         4096 12月 23 11:24 /var/spool/mail

有时可能会遇到这样的情况,比如文件/tmp/test属于zhangsan所有,如果将用户zhangsan删除,那么/tmp/test的所有者和所属组就变成了zhangsan原先的uid和gid。

[root@localhost    ~]# ll /tmp/test                                 //文件属于zhangsan

-rw-r--r--. 1    zhangsan zhangsan 0 12月 23 05:59 /tmp/test

[root@localhost    ~]# userdel -r zhangsan                 //删除zhangsan用户

[root@localhost    ~]# ll /tmp/test                                 //文件的所有者和所属组变成了uid和gid

-rw-r--r--. 1    504 504 0 12月 23 05:59 /tmp/test

这时我们也可以通过uid或gid去查找这类文件。

[root@localhost    ~]# find /tmp -uid 504 -ls

797189    0 -rw-r--r--   1 504      504             0 12月 23 12:12 /tmp/test

其实对于那些正常的所属关系是用户名或组名的文件,同样也可以通过uid或是gid进行查找。比如用户student的uid是500,我们通过uid在/home目录中查找属于student的文件。

[root@localhost    ~]# find /home -uid 500 -ls

400903    4 drwx------   4 student  student      4096 9月     8 16:33 /home/student

400904    4 -rw-r--r--   1 student  student     176 1月 16 2015 /home/student/.bash_profile

……

对于/tmp/test这样的所有者和所属组变成了uid和gid的文件,就称为没有所有者或所属组的文件,这样的文件在系统中有一定危险性,所以我们可以通过-nouser或-nogroup选项去查找这类文件。找到这类文件之后,最好是利用chown命令重新为其指定所有者和所属组。

[root@localhost    ~]# find /tmp -nouser -ls

797189    0 -rw-r--r--   1 504      504             0 12月 23 12:12 /tmp/test

[root@localhost    ~]# find /tmp -nogroup -ls

797189    0 -rw-r--r--   1 504      504             0 12月 23 12:12 /tmp/test

2.    根据文件权限查找

按文件权限查找,需要用到-perm选项,根据对权限的设置条件不同,该选项又分为三种用法:

l  -perm mode:精确匹配mode所表示的条件。

l  -perm /mode:任何一类用户(ugo)的权限中的任何一位(rwx)符合mode所表示的条件即可,9位权限之间存在“或”关系。

l  -perm -mode:任何一类用户(ugo)的权限中的每一位(rwx)都要同时符合mode所表示的条件,9位权限之间存在“与”关系。

例如,要在/boot目录中查找权限为755的普通文件,并显示详细信息。我们设置查找条件为“-perm 755”,可以发现共找到两个文件,这两个文件的权限都对查找条件进行了精确匹配。

[root@localhost    ~]# find /boot -perm 755 -type f -ls

65030     250 -rwxr-xr-x   1 root   root     254248 4月 7  2015    /boot/efi/EFI/redhat/grub.efi

16 4125 -rwxr-xr-x  1 root     root  4222192 7月 2 2015    /boot/vmlinuz-2.6.32-573.el6.x86_64

下面继续在/boot目录中查找权限为750的目录,但是没有查找到任何符合条件的结果。

[root@localhost    ~]# find /boot -perm 750 -type d -ls

将查找条件修改为“-perm /750”,表示任何一个目录只要其所有者具有读写执行中的任何一项权限,或是其所属组具有读和执行中的任何一项权限,就可以符合查找条件。需要注意的是,查找条件中的0表示忽略对相应对象的权限要求,而不是指没有任何权限。重新指定查找条件后,就可以找到很多符合要求的目录。

[root@localhost    ~]# find /boot -perm /750 -type d    -ls

2       2 dr-xr-xr-x   5 root     root         1024 9月     2 00:36 /boot

11      13 drwx------   2 root     root        12288 9月     2 00:24 /boot/lost+found

65027       2 drwxr-xr-x   3 root     root         1024 9月     2 00:33 /boot/efi

……

下面再将查找条件修改为“-perm -750”,表示所要查找的目录其所有者必须具有读写执行权限,同时其所属组必须具有读和执行权限,对其他用户的权限没有要求。从查找结果中可以发现,之前通过条件“-perm /750”所查找出来的两个目录“/boot”和“/boot/lost+found”,此时都不在查找结果之列。

[root@localhost    ~]# find /boot -perm -750 -type d    -ls

65027       2 drwxr-xr-x   3 root     root         1024 9月     2 00:33 /boot/efi

65028       2 drwxr-xr-x   3 root     root         1024 9月     2 00:33 /boot/efi/EFI

65029       2 drwxr-xr-x   2 root     root         1024 9月     2 00:33 /boot/efi/EFI/redhat

所以如果要在系统中查找所有人都有写权限的目录,则应该指定条件“-perm -222”,如果以“-perm /222”为查找条件,则是所有者、所属组或其他用户中任何一个具有写权限都会符合要求。

[root@localhost    ~]# find / -perm -222 -type d -ls    2> /dev/null

6810       0 drwxrwxrwt   2 root     root          100 12月 23 03:37 /dev/shm

654108    4 drwxrwxrwt   2 root     root         4096 12月 23 03:42 /var/tmp

784897    4 drwxrwxrwt  12 root     root         4096 12月 23 06:58 /tmp

……

除了读写执行这些常规权限之外,Linux系统还提供了特殊权限SUID和SGID,它们所对应的数字分别是4和2。如果要在系统中查找所有设置了SUID的文件,应指定条件“-perm -4000”。

[root@localhost    ~]# find / -perm -4000 –ls 2>    /dev/null

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

……

如果要查找所有设置了SGID的文件,应指定条件“-perm -2000”。

[root@localhost    ~]# find / -perm -2000 –ls 2>    /dev/null

784944   16 -rwxr-sr-x   1 root        cgred       16384 1月     6  2015 /bin/cgexec

784971   16 -rwxr-sr-x   1 root     cgred       16352 1月     6  2015 /bin/cgclassify

……

如果要同时查找所有设置了SUID或是SGID的文件,那么应该指定条件“-perm /6000”,如果将条件指定为“-perm -6000”,则表示查找既设置了SUID也设置了SGID的文件,而这样的文件在系统中是不存在的。

[root@localhost    ~]# find / -perm -6000 –ls 2>    /dev/null

 //查找同时设置了SUID和SGID的文件,没有结果。

[root@localhost    ~]# find / -perm /6000 –ls 2>    /dev/null

//查找设置了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

……

本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1935023

根据文件属性或权限进行find查找相关推荐

  1. Linux学习——文件权限及文件查找

    Linux学习--文件权限及文件查找 实验内容 实验目的 实验指导 (未完待续) 实验内容 练习Linux文件权限和文件查找命令. 实验目的 了解文件与目录的默认权限与隐藏权限 掌握如何改变文件属性与 ...

  2. linux文件系统——磁盘分区、Ext格式、文件属性与权限

    目录 一.磁盘 1. 机械磁盘组成 2. 磁盘逻辑结构 3. 磁盘分区 4. 分区与文件系统 二.文件系统 1. 目录树 2. Ext2文件系统(inode) 3. inode与目录树的关系 4. 文 ...

  3. Linux文件属性和权限

     Linux文件属性 第一栏:表示文件类型和权限 文件的类型:  d:目录    -:文件    l:链接文件    b:可存储设备    c:可输入设备 第一组:表示拥有者权限 第二组:表示该组的权 ...

  4. linux的文件属性和权限学习——分析ls命令结果

    转自: http://blog.csdn.net/daheiantian/article/details/5974962 最近阅读<鸟哥的linux私房菜>,确实是一本好书,使自己在文件属 ...

  5. Linux 文件属性和权限详解

    Linux 文件属性和权限 下面我拿一张图片来详细说明一下: 是不是很熟悉,没错就当你在Linux命令窗口中输入ls -l后,看到的画面. 文件属性 第一列: d:表示目录 -:表示文件 |:表示为链 ...

  6. Linux—目录文件属性和权限管理详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   Linux中了解用户和用户组概念后,我们就需要对文件目录进行赋权操作,以便于文件访问权限的管控,这就涉及到文件的属性,那用户和用 ...

  7. Linux文件属性、权限设置

    来源:http://blog.csdn.net/xrt95050/article/details/5595615 Linux文件属性.权限设置 文件属性和权限 [root@daf root]# ls ...

  8. ftp服务器 修改文件,ftp服务器修改文件属性的权限

    ftp服务器修改文件属性的权限 内容精选 换一换 本课程主要针对openEuler操作系统工程师在基础运维工作,以文件共享服务器的搭建和运维为案例,讲解openEuler操作系统的基础知识,并培养基础 ...

  9. 文件属性与权限、改变文件属性与权限、默认权限

    针对Linux中的用户.用户组,需要设置文件的权限. 1 文件属性与权限 ls -al:使用该命令查看文件属性. -a表示所有文件.-l表示详细权限与属性. 第一列,共有10个字符. 第一个字符代表这 ...

最新文章

  1. 关于reviewboard汉化
  2. Spring(十八):Spring AOP(二):通知(前置、后置、返回、异常、环绕)
  3. 几年前的代码发现一个BUG: 整数相除结果不能默认转换为浮点数
  4. moss 2007 单点登录的配置
  5. OpenCV——素描
  6. 将Fri May 04 17:25:34 CST 2012形式的日期字符串转换成java.util.Date对象的方法
  7. devc 能优化吗_为啥觉得Dev c++越来越难用?
  8. 求字符串转化的最小操作次数 DP动态规划
  9. Mac删除自带输入法
  10. 开启安卓虚拟机后一直停在控制台页面_金九银十要来了?不要慌,这些安卓 BAT高级面试题刷一刷...
  11. win10系统怎么qq远程连接到服务器,QQ远程控制功能在Win10系统上无法使用怎么解决...
  12. 计算物品的良率(python)
  13. js使用广度优先给树形结构添加level
  14. 计算机应用基础指法实训报告,计算机基础实训报告
  15. RFID服装资产管理-新导智能
  16. HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);出现异常
  17. 魔术师乔布斯,炼金术士苹果——苹果公司第四季度报表简评
  18. 企业微信添加root主动发布消息
  19. 【微信小程序】三、微信小程序组件的基本使用
  20. 2022金属非金属矿山(露天矿山)安全管理人员考试题模拟考试题库及答案

热门文章

  1. php接口调用教程,php接口调用
  2. linux卸载kodi,如何在Ubuntu上安装Kodi 18 Beta
  3. windows连linux工具,Windows连接Linux工具
  4. linux安装教程6.3,CentOS 6.3安装教程(详细图解)
  5. TLE207x低噪声高速JFET-输入运算放大器的噪声特性测量
  6. 点击空白处遮罩层关闭_如何手动关闭win10系统自带的windows defender
  7. python中的 2%s何意_python中的%s%是什么意思
  8. python概率密度函数_Python中概率密度函数的快速卷积
  9. 怎样成为php高手,怎么成为php高手?如何自学成为php高手?优秀的PHP开发者是怎样炼成的?-PHP教程-基础篇-php语法基础--创业的风,吹向了年轻之长藤个人博客网站...
  10. 自定义变量 配置文件_「系统架构」Nginx调优之变量的使用(3)