根据文件属性或权限进行find查找
原文发表于《网络安全和信息化》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查找相关推荐
- Linux学习——文件权限及文件查找
Linux学习--文件权限及文件查找 实验内容 实验目的 实验指导 (未完待续) 实验内容 练习Linux文件权限和文件查找命令. 实验目的 了解文件与目录的默认权限与隐藏权限 掌握如何改变文件属性与 ...
- linux文件系统——磁盘分区、Ext格式、文件属性与权限
目录 一.磁盘 1. 机械磁盘组成 2. 磁盘逻辑结构 3. 磁盘分区 4. 分区与文件系统 二.文件系统 1. 目录树 2. Ext2文件系统(inode) 3. inode与目录树的关系 4. 文 ...
- Linux文件属性和权限
Linux文件属性 第一栏:表示文件类型和权限 文件的类型: d:目录 -:文件 l:链接文件 b:可存储设备 c:可输入设备 第一组:表示拥有者权限 第二组:表示该组的权 ...
- linux的文件属性和权限学习——分析ls命令结果
转自: http://blog.csdn.net/daheiantian/article/details/5974962 最近阅读<鸟哥的linux私房菜>,确实是一本好书,使自己在文件属 ...
- Linux 文件属性和权限详解
Linux 文件属性和权限 下面我拿一张图片来详细说明一下: 是不是很熟悉,没错就当你在Linux命令窗口中输入ls -l后,看到的画面. 文件属性 第一列: d:表示目录 -:表示文件 |:表示为链 ...
- Linux—目录文件属性和权限管理详解
关注微信公众号:CodingTechWork,一起学习进步. 引言 Linux中了解用户和用户组概念后,我们就需要对文件目录进行赋权操作,以便于文件访问权限的管控,这就涉及到文件的属性,那用户和用 ...
- Linux文件属性、权限设置
来源:http://blog.csdn.net/xrt95050/article/details/5595615 Linux文件属性.权限设置 文件属性和权限 [root@daf root]# ls ...
- ftp服务器 修改文件,ftp服务器修改文件属性的权限
ftp服务器修改文件属性的权限 内容精选 换一换 本课程主要针对openEuler操作系统工程师在基础运维工作,以文件共享服务器的搭建和运维为案例,讲解openEuler操作系统的基础知识,并培养基础 ...
- 文件属性与权限、改变文件属性与权限、默认权限
针对Linux中的用户.用户组,需要设置文件的权限. 1 文件属性与权限 ls -al:使用该命令查看文件属性. -a表示所有文件.-l表示详细权限与属性. 第一列,共有10个字符. 第一个字符代表这 ...
最新文章
- 关于reviewboard汉化
- Spring(十八):Spring AOP(二):通知(前置、后置、返回、异常、环绕)
- 几年前的代码发现一个BUG: 整数相除结果不能默认转换为浮点数
- moss 2007 单点登录的配置
- OpenCV——素描
- 将Fri May 04 17:25:34 CST 2012形式的日期字符串转换成java.util.Date对象的方法
- devc 能优化吗_为啥觉得Dev c++越来越难用?
- 求字符串转化的最小操作次数 DP动态规划
- Mac删除自带输入法
- 开启安卓虚拟机后一直停在控制台页面_金九银十要来了?不要慌,这些安卓 BAT高级面试题刷一刷...
- win10系统怎么qq远程连接到服务器,QQ远程控制功能在Win10系统上无法使用怎么解决...
- 计算物品的良率(python)
- js使用广度优先给树形结构添加level
- 计算机应用基础指法实训报告,计算机基础实训报告
- RFID服装资产管理-新导智能
- HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);出现异常
- 魔术师乔布斯,炼金术士苹果——苹果公司第四季度报表简评
- 企业微信添加root主动发布消息
- 【微信小程序】三、微信小程序组件的基本使用
- 2022金属非金属矿山(露天矿山)安全管理人员考试题模拟考试题库及答案
热门文章
- php接口调用教程,php接口调用
- linux卸载kodi,如何在Ubuntu上安装Kodi 18 Beta
- windows连linux工具,Windows连接Linux工具
- linux安装教程6.3,CentOS 6.3安装教程(详细图解)
- TLE207x低噪声高速JFET-输入运算放大器的噪声特性测量
- 点击空白处遮罩层关闭_如何手动关闭win10系统自带的windows defender
- python中的 2%s何意_python中的%s%是什么意思
- python概率密度函数_Python中概率密度函数的快速卷积
- 怎样成为php高手,怎么成为php高手?如何自学成为php高手?优秀的PHP开发者是怎样炼成的?-PHP教程-基础篇-php语法基础--创业的风,吹向了年轻之长藤个人博客网站...
- 自定义变量 配置文件_「系统架构」Nginx调优之变量的使用(3)