Linux学习命令汇总八——find命令选项及特殊文件权限suid,sgid,sticky

本章Blog相关Linux知识点正则表达式


find与grep的不一样点:
docker

    find为文件搜索命令——用来在指定目录下查找文件,而grep 为文本搜索命令——根据用户指定的文本模式对目标文件进行逐步搜索,显示可以被匹配的行 ;安全

    find选项支持文件通配符,而grep选线支持正则表达式  ;bash

    find查找为精确查找,精确匹配但搜索速度稍慢。
ide

grep命令选项及正则表达式类型,详细请参考前文“Linux学习命令汇总三——Linux用户组管理,文件权限管理,文本搜索命令grep及正则表达式”  
bash特性之文件通配符,详细请参考前文“Linux学习命令汇总四——Bash中变量.文件通配符.管道与重定向.算术运算及循环或判断语句oop

# find path -option [ -print ] [ -exec -ok command ] {} \;学习

    path:查找路径,默认为当前目录ui

    option:查找条件,默认为当前目录中的全部文件spa

    [print] 或 [exec] :查找动做,默认为显示

blog

find命令相关选项


find 命令格式及选项:

# find path -option [ -print ] [ -exec -ok command ] {} \;

[option]:

    -name “文件名称”:支持文件通配符 例: # find  / -name httpd.conf  查找/ 目录中名称为httpd.conf 的文件

    -iname “文件名称”:查找时不区分文件名称大小写

    -user UserName :根据属主查找     # find /ftp -user hadoop 查找/ftp目录中用户为hadoop的文件

    -group GroupName :根据属组查找

    -uid UID :根据属主id号查找

    -gid GID :根据属组gid号查找

    -nouser :查找无属主的文件  # find /ftp -nouser

    -nogroup :查找无属组的文件

    -type { f | d | l | p | s | b | c  } :根据类型查找  例: # find /etc -type d  查找/etc/目录下类型为目录的文件并显示

    -size [+|-] n[K|M|G] :根据文件大小查找  例:# find /var -size +2M

    -atime [+|-] n:根据时间查找 [超过|少于] n天的被访问(access)的文件

    -mtime [+|-] n:根据时间查找 [超过|少于] n天的被修改(modify)的文件

    -ctime  [+|-] n:根据时间查找 [超过|少于] n天的被改变(change)的文件

    -amin  -mmin  -cmin : 使用方式与 -atime -mtime -ctime 类似

    -perm [+|-]  mode :

    -perm 755  :表示严格匹配,也就是你的文件权限位转换成对应的十进制数字与mode如出一辙,那么匹配成功 。

    -perm - [mode] :表示mode中转换成二进制是1的二级制位在文件权限位里面必须匹配 。例: #find /var -perm  -355 , 查找的权限355 转换成二进制位011 101 101 ,判断文件权限转换成二级制为1的二进制位是否与权限中为1的二进制位相同 ,是0的位无论,知足则匹配,不知足则不匹配;如文件权限为111 101 111 ,011 111 101 等文件都可被匹配 ,而001 101 101 则不会被匹配 ,由于文件权限中第二个二进制位与查找的mode 第二位二进制为1的位不一样。

    find -perm +mode : 与 -mode的区别是+mode只需其中的任意一个1的二进制位部分被匹配,+mode也无论0位。例: #find /var -perm  +355 , 查找的权限355 转换成二进制位011 101 101 ,如文件权限001 001 001 的文件可被匹配 ,而100 010 010 不会被匹配 ,由于无任何一个二进制位被匹配

处理动做:

  -print :打印在标准输出上

  -exec COMMAND {} \;   对查找到的文件执行指定的命令

  -ok COMMAND {} \;    交互式的-exec

例: #find /tmp -perm -003 -exec ls -ld {} \;  

组合条件:

  -a :与,表明条件需同时知足,可省略

  -o :或,表明条件知足一个便可

  -not  或 ! : 非,取反

例:# find /usr/ -not -user root -a -not -user bin  -a -not -user hadoop   查找目录/usr/ 中属主不是root或bin或hadoop的文件

例:# find /var/ -user root -group mail   查找/var目录中属主不是root且属组不是mail的文件


安全上下文


     进程访问文件时的权限匹配机制:进程的属主,是否与文件的属主相同:若是相同,进程则以文件的属主属性运行;不然,进程的属主所属的组,是否其中之一与文件的属组相同;若是相同,进程则以文件的属组的权限运行;不然,进程则以文件的其余用户的权限来访问文件。

    进程属主——进程的发起者

    进程的属组——一般为进程的属主的基本组

文件权限:-rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd

  suid——可执行文件,任何用户执行此可执行程序时,不在以用户本身的身份看成进程的属主,而是以文件的属主看成进程的属主

  sgid——具备sgid的目录,用户在此目录下建立文件时,新建文件的属组不在是用户的所属的基本组,而是目录的属组

  sticky——粘滞位,对于公共可写的目录,用户可建立文件,能够删除本身的文件,但没法删除其余用户的文件

修改权限:

# chmod u+s file   设置文件suid权限

# chmod u-s file 取消文件suid权限

# chmod g+s directory 设置目录sgid权限

# chmod g-s directory  取消目录sgid权限

# chmod o+t directory  设置粘滞位权限

# chmod o-t  directory  取消粘滞位权限


练习1:复制cat 命令至/tmp 目录,普通用户使用/tmp/cat命令能查看root用户有权限查看的全部文件

[root@study ~]# cp /bin/cat /tmp/
[root@study ~]# chmod u+s /tmp/cat 
[root@study ~]# /tmp/cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m
[root@study ~]# /tmp/cat /etc/redhat-release 
CentOS release 6.6 (Final)


练习二、新建/tmp/test目录,要求 openstack 和docker 用户对其有写权限,且在目录建立的文件的属组都为cloud组;要求每个用户不能删除别人的文件,但能够编辑

[root@study ~]# mkdir /tmp/test
[root@study ~]# groupadd cloud
[root@study ~]# useradd openstack -g cloud
[root@study ~]# useradd docker -g cloud
[root@study ~]# chown :cloud /tmp/test
[root@study ~]# chmod o+t /tmp/test
[root@study ~]# chmod g+s /tmp/test/
[root@study ~]# ls -ld /tmp/test
drwxr-sr-t. 2 root cloud 4096 Mar 14 10:22 /tmp/test


本章知识点汇总


#find path -option [ -print ] [ -exec -ok command ] {} \;

[option]:

  -name “文件名称”:支持文件通配符,查找匹配文件名的文件 

  -iname “文件名称”:查找时不区分文件名称大小写

  -user UserName :根据属主查找    

  -group GroupName :根据属组查找

  -uid UID :根据属主id号查找

  -gid GID :根据属组gid号查找

  -nouser :查找无属主的文件  # find /ftp -nouser

  -nogroup :查找无属组的文件

  -type { f | d | l | p | s | b | c  } :根据类型查找  例: # find /etc -type d  查找/etc/目录下类型为目录的文件并显示

  -size [+|-] n[K|M|G] :根据文件大小查找  例:# find /var -size +2M

  -atime [+|-] n:根据时间查找 [超过|少于] n天的被访问(access)的文件

  -mtime [+|-] n:根据时间查找 [超过|少于] n天的被修改(modify)的文件

  -ctime  [+|-] n:根据时间查找 [超过|少于] n天的被改变(change)的文件

  -amin  -mmin  -cmin : 使用方式与 -atime -mtime -ctime 类似

  -perm [+|-]  mode :

# chmod u+s file   设置文件suid权限

# chmod u-s file 取消文件suid权限

# chmod g+s directory 设置目录sgid权限

# chmod g-s directory  取消目录sgid权限

# chmod o+t directory  设置粘滞位权限

# chmod o-t  directory  取消粘滞位权限

相关文章
相关标签/搜索