Linux
系统管理工作中,经常需要查找具有特定权限的文件。这时,我们可以用find
命令的-perm
选项来高效地完成这项任务。这个功能非常实用,特别是当我们需要进行安全检查的时候。本文会用浅显易懂的方式,详细介绍如何使用find
命令的-perm
选项,以及如何通过实际案例来掌握它的使用方法。
基本语法
find[查找路径]-perm[权限模式]
- [查找路径]:要搜索的目录,
.
代表当前目录。 - [权限模式]:需要匹配的权限,可以是绝对模式(八进制)或符号模式(符号权限)。
在使用find
命令时,-perm
选项提供了三种不同的表达方式来帮助您根据文件权限进行搜索。
为了方便下面的演示,我准备了一些文件。这些文件名与其权限呈对应状态。可以通过如下脚本创建。
#!/bin/bash# 创建 perm 目录mkdir-p perm# 定义文件名和权限的对应关系files=("000""001""002""004""005""006""007""010""020""040""050""060""070""100""200""400""440""500""600""644""666""700""755""777")# 遍历文件名列表forfilein"${files[@]}";do# 创建文件路径filename="perm/${file}.txt"# 创建文件并写入内容echo-e"$file">"$filename"# 设置文件权限为文件名中的权限值chmod"$file""$filename"echo"Created file: $filename with permissions: $file"doneecho"All files created successfully in the 'perm' directory!"
执行上述脚本,会在指定的目录下生成如下文件:
精确查找
在Linux
文件权限中,每个权限由3
组数字(用户、组、其他)表示。如下图所示:
-
第一位数字7:表示文件所有者拥有读写 执行(rwx) 权限. -
第二位数字5:表示文件所属组拥有读执行(r-x) 权限. -
第三位数字5:表示文件其他组拥有读执行(r-x) 权限.
有了以上这些基础知识后,下面通过几个例子来巩固一下:
- 查找权限精确匹配
644
的文件
find.-perm644
上述命令执行后,会在当前目录匹配出是644
权限的所有文件,如下图所示:
模糊匹配
在模糊匹配情况下,有两种写法,一种是在权限加上-
,另外一种是在权限加上/
。
所有匹配模式(-
前缀)
这两种模糊匹配有什么区别呢?下面通过例子来阐述:
find.-perm-111
执行上述命令后,输出如下结果:
通过观察上述结果发现-perm -111
匹配到两个权限文件分别是755
和777
。这个-perm -111
表示3
个权限位必须至少有1
。
任意匹配模式(/
前缀)
find.-perm /111
执行上述命令输出如下结果:
相比于使用“-”,采用“/”能够匹配到更多的文件。这里的“/”类似于正则表达式中的“或”逻辑,这意味着在三个权限位中,只要有一个满足了匹配条件,那么其他两个权限位就不需要再考虑了。
结合-exec
进行批量操作
这个命令用于查找 /var/www
目录下权限为 777
的文件或目录,并将它们的权限修改为 755
。
find /var/www -perm777-execchmod755{};
-
{} 是一个占位符,表示 find
查找到的每个文件或目录的路径。 - ; 表示
-exec
命令的结束。
小结
原文始发于微信公众号(攻城狮成长日记):安全运维必看:如何用find -perm检查高危权限文件?
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论