按照文件权限模式用-perm选项,按文件权限模式来查找文件的话。最好使用八进制的权限表示法。

如在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用:

de>$ find . -perm 755 -printde>
还有一种表达方法:在八进制数字前面要加一个横杠-,表示都匹配,如-007就相当于777,-006相当于666

de># ls -l
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 http3.conf
-rw-rw-rw-    1 sam      adm         34890 10月 31 00:57 httpd1.conf
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 httpd.conf
drw-rw-rw-    2 gem      group        4096 10月 26 19:48 sam
-rw-rw-rw-    1 root     root         2792 10月 31 20:19 temp

# find . -perm 006
# find . -perm -006
./sam
./httpd1.conf
./tempde>
-perm mode:文件许可正好符合mode

-perm +mode:文件许可部分符合mode

-perm -mode: 文件许可完全符合mode

我们首先创建下面的一个例子

#ls -l ./testdir
——S— 1 root root 0 2008-05-06 10:39 2000
—S—— 1 root root 0 2008-05-06 10:39 4000
—S–S— 1 root root 0 2008-05-06 10:39 6000
-rwS–S— 1 root root 0 2008-05-06 10:39 6600

我创建了4个文件,都具有suid/sgid位。
假定我执行
find . -type f -perm 6000
那么我们显然可以得到下面的结果
./60000
这属于完全匹配。

如果执行find . -type f -perm -6000呢,其结果是:

./6000
./6600

这里的-号表示有1的位置一定要正确匹配,其他无所谓。这里要转成二进制来说,首先6000转成三位的二进制是下面这个样子
110 000 000 000 
这表示前面两个1一定要匹配,其他无所谓。那能匹配的就是6000,6600两个文件,其权限二进制转换过来分别是

110 000 000 000
110 110 000 000

而如果是执行find . -type f -perm +6000呢,结果会怎样?

我们看看结果

./6000
./2000
./4000
./6600

+号的意思是,只要有一个1匹配就行了,也就是说前2位中,只要有一个1就行,所以上面的都符合要求,因为翻译成二进制变成

110 000 000 000
010 000 000 000
100 000 000 000
110 110 000 000

所以,从上面的结果可以看出,命令find . -type f -perm +6000就是指定目录下所有具有suid/sgid的程序。

这是在做安全维护的时候,应该常使用的一个指令。我们首先创建下面的一个例子

#ls -l ./testdir
——S— 1 root root 0 2008-05-06 10:39 2000
—S—— 1 root root 0 2008-05-06 10:39 4000
—S–S— 1 root root 0 2008-05-06 10:39 6000
-rwS–S— 1 root root 0 2008-05-06 10:39 6600

我创建了4个文件,都具有suid/sgid位。
假定我执行
find . -type f -perm 6000
那么我们显然可以得到下面的结果
./60000
这属于完全匹配。

如果执行find . -type f -perm -6000呢,其结果是:

./6000
./6600

这里的-号表示有1的位置一定要正确匹配,其他无所谓。这里要转成二进制来说,首先6000转成三位的二进制是下面这个样子
110 000 000 000 
这表示前面两个1一定要匹配,其他无所谓。那能匹配的就是6000,6600两个文件,其权限二进制转换过来分别是

110 000 000 000
110 110 000 000
而如果是执行find . -type f -perm +6000呢,结果会怎样?
我们看看结果

./6000
./2000
./4000
./6600

+号的意思是,只要有一个1匹配就行了,也就是说前2位中,只要有一个1就行,所以上面的都符合要求,因为翻译成二进制变成

110 000 000 000
010 000 000 000
100 000 000 000
110 110 000 000

所以,从上面的结果可以看出,命令find . -type f -perm +6000就是指定目录下所有具有suid/sgid的程序。

这是在做安全维护的时候,应该常使用的一个指令

find命令中参数perm的用法的更多相关文章

  1. gcc命令中参数c和o混合使用的详解[转载]

    gcc -c a.c  编译成目标文件a.o gcc -o a a.o  生成执行文件a.exe gcc a.c  生成执行文件a.exe gcc -o a -c a.c    编译成目标文件a gc ...

  2. 【转】gcc命令中参数c和o混合使用的详解

    gcc -c a.c  编译成目标文件a.o  gcc a.c  生成执行文件a.exe  gcc -o a -c a.c    编译成目标文件a  gcc -o a  a.c    生成执行文件a. ...

  3. gcc命令中参数c和o混合使用的详解

    gcc -c a.c 编译成目标文件a.o gcc -o a a.o 生成执行文件a.exe gcc a.c 生成执行文件a.exe gcc -o a -c a.c 编译成目标文件a gcc -o a ...

  4. 【python】命令行解析工具getopt用法

    处理命令行参数的模块 用法: opts, args = getopt.getopt( sys.args[1:],  shortStr,  longList) 输入: shortStr 形式如下: &q ...

  5. shell命令传参数(参数长度不定)

    脚本 sudo echo "[mysqlMaster<$1>]" >> /home/admin/hostrecord count= ];do >> ...

  6. linux 中解析命令行参数(getopt_long用法)

    linux 中解析命令行参数(getopt_long用法) http://www.educity.cn/linux/518242.html 详细解析命令行的getopt_long()函数 http:/ ...

  7. 【Python】 linux中python命令的命令行参数

    Python命令行参数 原文地址:http://blog.163.com/weak_time/blog/static/25852809120169333247925/ Python的命令行参数,提供了 ...

  8. $命令行参数解析模块argparse的用法

    argparse是python内置的命令行参数解析模块,可以用来为程序配置功能丰富的命令行参数,方便使用,本文总结一下其基本用法. 测试脚本 把以下脚本存在argtest.py文件中: # codin ...

  9. C语言中使用库函数解析命令行参数

    在编写需要命令行参数的C程序的时候,往往我们需要先解析命令行参数,然后根据这些参数来启动我们的程序. C的库函数中提供了两个函数可以用来帮助我们解析命令行参数:getopt.getopt_long. ...

随机推荐

  1. Winform开发框架之通用高级查询模块

    最近一直忙于公司的事情,虽然一直在做一些相关的技术研究,但是很久没能静下心来好好写写博客文章了,想想也有半个月之多了,这半个月来,也一直致力于改善我的WInform开发框架,使得自己及客户使用起来更加 ...

  2. [CLR via C#]16. 数组

    数组是允许将多个数据项当作一个集合来处理的机制.CLR支持一维数组.多维数组和交错数据(即由数组构成的数组).所有数组类型都隐式地从System.Array抽象类派生,后者又派生自System.Obj ...

  3. VS2013 编译程序时提示 无法查找或打开 PDB 文件

    "Draw.exe"(Win32):  已加载"C:\Users\YC\Documents\Visual Studio 2013\Projects\Draw\Debug\ ...

  4. cmd命令行编译和运行java程序报错 NoClassDefFoundError

    首先,当在运行java程序出现这个错误时,首先考虑是不是路径或者未指定正确的包名,例如当运行下面这个文件时: package cn.wgh.socket; public class HelloWorl ...

  5. 配置ssh免密码连接

    建立ssh连接步骤: 1,在主机安装ssh-server,执行指令: apt-get install openssh-server 2,在主机上执行指令: netstat -atpn | grep 可 ...

  6. [python学习笔记]Day3

    函数 如: def is_leapyear(year): if (year%4 == 0 and year%100 != 0) or (year%400 == 0): return True else ...

  7. 开发机多用户 xdebug 远程调试 PhpStorm

    在公司都用的远程开发机开发,每次有错误调试就得dd(xxx)然后保存真是,让我在本地开发用惯xdebug的情何以堪,所以有了下文. 1.安装配置xdebug 直接使用pecl安装即可 # pecl i ...

  8. UltraEdit打开UTF-8文件后显示中文乱码的问题

    左图是UE,默认的编码格式GBK.右图可以看出可修改成UTF-8编码.按钮位置是UE底部状态栏,图3显示怎么开关状态栏. >>>>>>>>>> ...

  9. java File.mkdirs和mkdir区别

    File f = new File("e://xxx//yyy"); System.out.println(f.mkdirs());//生成所有目录,一般来说,这个方法稳健性更好, ...

  10. windows临界区

    临界区: 临界区是一种轻量级机制,在某一时间内只允许一个线程执行某个给定代码段.通常在多线程修改全局数据时会使用临界区.事件.信号量也用于多线程同步,但临界区与它们不同,并不总是执行向内核模式的切换, ...