find命令中参数perm的用法
2016-02-28 14:51
190 查看
按照文件权限模式用-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的程序。
这是在做安全维护的时候,应该常使用的一个指令。
如在当前目录下查找文件权限位为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的程序。
这是在做安全维护的时候,应该常使用的一个指令。
相关文章推荐
- UVa 1583 - Digit Generator
- BZOJ_P1072 [SCOI2007]排列perm(状态压缩动态规划)
- ubuntu15.10 配置tftp
- Linux磁盘分区及要求
- ASP.NET中使用Nhibernate
- Linux内核的中断机制
- BZOJ 2154: Crash的数字表格
- Toefl作文
- sass混合宏
- 指针啊排序 手打娱乐
- 面试题目——快速排序
- 用keras小试CNN卷积神经网络应用于人脸识别
- 构建之法随笔
- Foundation框架(7)时间操作
- MYSQL 存储引擎的简单认识
- UVa 839 Not so Mobile (树的深度优先搜索)
- CSS样式之clear清除浮动
- 使用gdb和gdbserver
- 算法代码实现之Union-Find,Java实现,quick-find、quick-union、加权quick-union(附带路径压缩优化)
- keil5 编译程序出现错误Error: L6411E: No compatible library exists with a definition of startup symbol __main