zoukankan      html  css  js  c++  java
  • 5

    Linux-day05

    权限

    -rw-r--r--	644
    -rwxrwxrwx
    
    属主
    属组
    其他用户
    
    r		#可读
    w		#可写
    x		#可执行
    -		#没有权限
    
    r		4
    w		2
    x		1
    -		0
    
    #设置属主权限
    [root@qls ~]# touch  test.txt
    [root@qls ~]# 
    [root@qls ~]# ll
    total 0
    -rw-r--r--. 1 root root 0 Aug 19 08:48 test.txt
    [root@qls ~]# chmod  u+x test.txt 
    [root@qls ~]# ll
    total 0
    -rwxr--r--. 1 root root 0 Aug 19 08:48 test.txt
    -rwxr--r--. 1 root root 0 Aug 19 08:48 test.txt
    [root@qls ~]# chmod  u-w  test.txt 
    [root@qls ~]# ll
    total 0
    -r-xr--r--. 1 root root 0 Aug 19 08:48 test.txt
    [root@qls ~]# chmod  u=rwx  test.txt 
    [root@qls ~]# ll
    total 0
    -rwxr--r--. 1 root root 0 Aug 19 08:48 test.txt
    [root@qls ~]# chmod  g+x test.txt 
    [root@qls ~]# ll
    total 0
    -rwxr-xr--. 1 root root 0 Aug 19 08:48 test.txt
    [root@qls ~]# chmod  o+x  test.txt 
    [root@qls ~]# ll
    total 0
    -rwxr-xr-x. 1 root root 0 Aug 19 08:48 test.txt
    [root@qls ~]# chmod  u=rw,g=r,o=r  test.txt 
    [root@qls ~]# ll
    total 0
    -rw-r--r--. 1 root root 0 Aug 19 08:48 test.txt
    [root@qls ~]# chmod  a+x  test.txt 
    [root@qls ~]# ll
    total 0
    -rwxr-xr-x. 1 root root 0 Aug 19 08:48 test.txt
    
    u	#属主
    g	#属组
    o	#其他用户
    a	#所有
    
    #通过数字权限进行修改
    [root@qls ~]# chmod  644  test.txt 
    [root@qls ~]# ll
    total 0
    -rw-r--r--. 1 root root 0 Aug 19 08:48 test.txt
    [root@qls ~]# chmod  777  test.txt 
    [root@qls ~]# ll
    total 0
    -rwxrwxrwx. 1 root root 0 Aug 19 08:48 test.txt
    
    [root@qls ~]# mkdir   test
    [root@qls ~]# ll
    total 0
    drwxr-xr-x. 2 root root 6 Aug 19 08:59 test
    -rwxrwxrwx. 1 root root 0 Aug 19 08:48 test.txt
    [root@qls ~]# touch test/123.txt
    [root@qls ~]# 
    [root@qls ~]# 
    [root@qls ~]# ll
    total 0
    drwxr-xr-x. 2 root root 21 Aug 19 08:59 test
    -rwxrwxrwx. 1 root root  0 Aug 19 08:48 test.txt
    [root@qls ~]# chmod   777  test
    [root@qls ~]# 
    [root@qls ~]# 
    [root@qls ~]# ll
    total 0
    drwxrwxrwx. 2 root root 21 Aug 19 08:59 test
    -rwxrwxrwx. 1 root root  0 Aug 19 08:48 test.txt
    [root@qls ~]# ll test
    total 0
    -rw-r--r--. 1 root root 0 Aug 19 08:59 123.txt
    [root@qls ~]# chmod -R 700  test
    [root@qls ~]# ll
    total 0
    drwx------. 2 root root 21 Aug 19 08:59 test
    -rwxrwxrwx. 1 root root  0 Aug 19 08:48 test.txt
    [root@qls ~]# ll test
    total 0
    -rwx------. 1 root root 0 Aug 19 08:59 123.txt
    [root@qls ~]# touch   test/test.log
    [root@qls ~]# ll test
    total 0
    -rwx------. 1 root root 0 Aug 19 08:59 123.txt
    -rw-r--r--. 1 root root 0 Aug 19 09:03 test.log
    
    chmod		#设置权限,修改权限
    	选项
    		-R		#递归修改权限,针对目录及目录下的所有内容
    
    
    

    权限对文件的影响

    只有r权限,		#只能查看文件,其他的不能操作,
    只有w权限		 #不能使用vim命令进行修改,如果强制修改,会把源文件内容覆盖掉,只能追加
    				#w权限需要r权限进行配合,不要给文件单独的w权限。rw
    只有x	权限		#什么都不能操作,需要r权限配合使用,rx
    
    正常设置权限
    r
    rw
    rx
    rwx
    
    

    权限对目录的影响

    r		#是否能够查看目录下的列表,如果只有r权限,无法查看目录下文件的属性信息,只能???表示
    w		#是否能够对目录的下文件进行删除,移动等操作
    x		#是否能够进入该目录。
    
    r权限需要x权限的配合,可以正常查看目录列表
    w权限需要x权限的配合,可以删除,新建文件的权限,如果要移动,需要有对目标目录的wx权限。
    x权限只能进入目录,其他的操作都不能执行
    
    正常权限设置为
    rx
    rw
    rwx
    
    

    属主属组的修改

    chown   	#修改属主和属组
    选项
    	-R		#递归修改
    	
    chgrp		#只能修改属组
    
    [root@qls ~]# ll
    total 0
    drwx------. 2 root root 37 Aug 19 09:03 test
    -rw-r--r--. 1 root root  0 Aug 19 08:48 test.txt
    [root@qls ~]# chown  jason  test.txt
    [root@qls ~]# ll
    total 0
    drwx------. 2 root  root 37 Aug 19 09:03 test
    -rw-r--r--. 1 jason root  0 Aug 19 08:48 test.txt
    [root@qls ~]# chown  jason.jason  test.txt 
    [root@qls ~]# ll
    total 0
    drwx------. 2 root  root  37 Aug 19 09:03 test
    -rw-r--r--. 1 jason jason  0 Aug 19 08:48 test.txt
    [root@qls ~]# chown .root  test.txt 
    [root@qls ~]# ll
    total 0
    drwx------. 2 root  root 37 Aug 19 09:03 test
    -rw-r--r--. 1 jason root  0 Aug 19 08:48 test.txt
    [root@qls ~]# chgrp   jason  test.txt 
    [root@qls ~]# 
    [root@qls ~]# 
    [root@qls ~]# ll
    total 0
    drwx------. 2 root  root  37 Aug 19 09:03 test
    -rw-r--r--. 1 jason jason  0 Aug 19 08:48 test.txt
    [root@qls ~]# ll test
    total 0
    -rwx------. 1 root root 0 Aug 19 08:59 123.txt
    -rw-r--r--. 1 root root 0 Aug 19 09:03 test.log
    [root@qls ~]# chown  jason  test
    [root@qls ~]# ll 
    total 0
    drwx------. 2 jason root  37 Aug 19 09:03 test
    -rw-r--r--. 1 jason jason  0 Aug 19 08:48 test.txt
    [root@qls ~]# ll test
    total 0
    -rwx------. 1 root root 0 Aug 19 08:59 123.txt
    -rw-r--r--. 1 root root 0 Aug 19 09:03 test.log
    [root@qls ~]# chown -R  jason.jason  test
    [root@qls ~]# ll
    total 0
    drwx------. 2 jason jason 37 Aug 19 09:03 test
    -rw-r--r--. 1 jason jason  0 Aug 19 08:48 test.txt
    [root@qls ~]# ll test
    total 0
    -rwx------. 1 jason jason 0 Aug 19 08:59 123.txt
    -rw-r--r--. 1 jason jason 0 Aug 19 09:03 test.log
    [root@qls ~]# touch  test/oldboy.log
    [root@qls ~]# ll test
    total 0
    -rwx------. 1 jason jason 0 Aug 19 08:59 123.txt
    -rw-r--r--. 1 root  root  0 Aug 19 10:10 oldboy.log
    -rw-r--r--. 1 jason jason 0 Aug 19 09:03 test.log
    
    

    权限控制位

    umask		#控制权限,默认值是022
    		怎么计算权限位的
    			umask的默认权限位是022,目录的最大是777,系统默认创建的目录的权限是最大权限减去umask的权限,得出结果就是755,文件的最大666,减去只是644,如果文件的权限位遇到奇数时,奇数位加1
    
    [root@qls ~]# umask   033	#临时修改,如果要永久修改,需改配置文件/etc/profile
    
    [root@qls ~]# umask 
    0033
    
    

    特殊权限

    setuid		#执行命令的时候,相当于这个命令的所有者(属主)
    
    
    [root@qls ~]# chmod  u+s  /bin/rm
    [root@qls ~]# ll  /bin/rm
    -rwsr-xr-x. 1 root root 62952 Oct 31  2018 /bin/rm
    [jason@qls ~]$ rm -rf /opt
    rm: cannot remove ‘/opt’: Permission denied
    [jason@qls ~]$ rm -rf /opt
    [jason@qls ~]$ ll /opt
    ls: cannot access /opt: No such file or directory
    [root@qls ~]# chmod  u-s  /bin/rm
    
    [root@qls ~]# stat  /bin/passwd
      File: ‘/bin/passwd’
      Size: 27832     	Blocks: 56         IO Block: 4096   regular file
    Device: 803h/2051d	Inode: 101590927   Links: 1
    Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: system_u:object_r:passwd_exec_t:s0
    Access: 2019-08-19 09:07:05.259967579 +0800
    Modify: 2014-06-10 14:27:56.000000000 +0800
    Change: 2019-08-14 15:12:41.532577880 +0800
     Birth: -
    
    权限是4位,第一位如果是数字4,则表示该文件有setuid的权限
    
    
    大s和小s的区别
    
    主要看文件的属主的x权限,如果属主有x权限,就是s,没有就是大S,功能上面没有什么区别
    
    
    setgid		#共享目录,让所有用户在一个目录下面创建的所有文件属组都是固定一个组
    
    [root@qls ~]# groupadd    setgid
    [root@qls ~]# 
    [root@qls ~]# 
    [root@qls ~]# chown  -R  .setgid  /opt/
    [root@qls ~]# chmod  g+s  /opt/
    [root@qls ~]# ll -d /opt/
    drwxrwsrwx. 2 root setgid 66 Aug 19 10:48 /opt/
    
    [root@qls ~]# ll -d  /tmp
    drwxrwxrwt. 12 root root 241 Aug 19 09:25 /tmp
    [root@qls ~]# stat  /opt
      File: ‘/opt’
      Size: 107       	Blocks: 0          IO Block: 4096   directory
    Device: 803h/2051d	Inode: 101765326   Links: 2
    Access: (2777/drwxrwsrwx)  Uid: (    0/    root)   Gid: ( 2002/  setgid)
    Context: unconfined_u:object_r:usr_t:s0
    Access: 2019-08-19 10:51:18.683833186 +0800
    Modify: 2019-08-19 10:51:16.029833243 +0800
    Change: 2019-08-19 10:51:16.029833243 +0800
     Birth: -
    
    权限是4位,第一位如果是数字2,则表示该文件有setgid的权限
    
    
    sticky		#粘滞位,让所有用户在一个目录只能管理的文件。
    [root@qls ~]# chmod  777  /data
    [root@qls ~]# chmod  o+t  /data
    [root@qls ~]# ll /data
    total 0
    -rw-rw-r--. 1 jason  jason  0 Aug 19 11:03 123
    -rw-rw-r--. 1 test-1 test-1 0 Aug 19 11:03 456
    [root@qls ~]# ll /data -d
    drwxrwxrwt. 2 root root 28 Aug 19 11:03 /data
    [test-1@qls ~]$ ll /data/
    total 0
    -rw-rw-r--. 1 jason  jason  0 Aug 19 11:03 123
    -rw-rw-r--. 1 test-1 test-1 0 Aug 19 11:03 456
    [test-1@qls ~]$ rm -f  /data/123
    rm: cannot remove ‘/data/123’: Operation not permitted
    [test-1@qls ~]$ rm -f  /data/456
    [test-1@qls ~]$ ll /data
    total 0
    -rw-rw-r--. 1 jason jason 0 Aug 19 11:03 123
    
    
    [root@qls ~]# stat  /data
      File: ‘/data’
      Size: 28        	Blocks: 0          IO Block: 4096   directory
    Device: 803h/2051d	Inode: 33978095    Links: 2
    Access: (1777/drwxrwxrwt)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:default_t:s0
    Access: 2019-08-19 11:04:58.842815560 +0800
    Modify: 2019-08-19 11:03:51.773817002 +0800
    Change: 2019-08-19 11:04:56.777815605 +0800
     Birth: -
    
    

    特殊属性

    a		#只能对文件进行追加的操作,其他的没有权限,可读,可以cp
    
    i		#只能查看和cp。其他操作不允许
    
    [root@qls ~]# lsattr  test.log		#查看特殊属性
    ---------------- test.log
    
    [root@qls ~]# chattr   +a  test.log	#添加特殊属性
    
    [root@qls ~]# chattr   -a  /etc/passwd	#删除特殊属性
    
    [root@qls ~]# lsattr   test.log 
    --------------- test.log
    [root@qls ~]# chattr  +i  test.log
    [root@qls ~]# ll
    total 4
    -rw-r--r--. 1 root root 12 Aug 19 11:40 test.log
    [root@qls ~]# lsattr  test.log 
    ----i----------- test.log
    [root@qls ~]# cat  test.log
    egon
    oldboy
    [root@qls ~]# rm -f  test.log
    rm: cannot remove ‘test.log’: Operation not permitted
    [root@qls ~]# mv test.log  /opt
    mv: cannot move ‘test.log’ to ‘/opt/test.log’: Operation not permitted
    [root@qls ~]# cp  test.log   /tmp
    [root@qls ~]# echo  oldboy >>test.log
    -bash: test.log: Permission denied
    
    

    输入和输出

    重定向

    三个文件
    
    [root@qls ~]# ll /dev/std*
    lrwxrwxrwx. 1 root root 15 Aug 16 08:35 /dev/stderr -> /proc/self/fd/2
    lrwxrwxrwx. 1 root root 15 Aug 16 08:35 /dev/stdin -> /proc/self/fd/0
    lrwxrwxrwx. 1 root root 15 Aug 16 08:35 /dev/stdout -> /proc/self/fd/1
    
    

    输出重定向

    类型 用途
    标准覆盖输出重定向 > 将程序输出的正确结果输出到指定的文件中,会覆盖文件原有的内容
    标准追加输出重定向 >> 将程序输出的正确结果以追加的方式输出到指定文件,不会覆盖原有文件
    错误覆盖输出重定向 2> 将程序的错误结果输出到执行的文件中,会覆盖文件原有的内容
    错误追加输出重定向 2>> 将程序输出的错误结果以追加的方式输出到指定文件,不会覆盖原有文件
    [root@qls ~]# cat 1
    hello
    [root@qls ~]# echo  oldboy  >2
    [root@qls ~]# cat  1  2  
    hello
    oldboy
    [root@qls ~]# cat  1  2   >3
    [root@qls ~]# cat 3
    hello
    oldboy
    [root@qls ~]# 
    
    [root@qls ~]# echo  egon  >>3
    [root@qls ~]# cat 3
    hello
    oldboy
    egon
    
    [root@qls ~]# ls  5
    ls: cannot access 5: No such file or directory
    [root@qls ~]# ls  5 > 6
    ls: cannot access 5: No such file or directory
    [root@qls ~]# cat 6
    [root@qls ~]# ls  5 2> 6
    [root@qls ~]# cat 6
    ls: cannot access 5: No such file or directory
    [root@qls ~]# ls  5 2> 6
    [root@qls ~]# cat 6
    ls: cannot access 5: No such file or directory
    [root@qls ~]# ls  7 2> 6
    [root@qls ~]# cat 6
    ls: cannot access 7: No such file or directory
    [root@qls ~]# ls  8  2>> 6
    [root@qls ~]# cat 6
    ls: cannot access 7: No such file or directory
    ls: cannot access 8: No such file or directory
    
    [root@qls ~]# ls /date/   >1.txt  2>&1			#不推荐使用
    [root@qls ~]# cat 1.txt 
    ls: cannot access /date/: No such file or directory
    [root@qls ~]# ls /data/   >1.txt  2>&1
    [root@qls ~]# cat 1.txt 
    test.log
    [root@qls ~]# ls /data/   &>1.txt
    [root@qls ~]# ls /date/   &>1.txt
    [root@qls ~]# cat 1.txt
    ls: cannot access /date/: No such file or directory
    [root@qls ~]# ls /date/   &>>1.txt
    [root@qls ~]# ls /data/   &>>1.txt
    [root@qls ~]# cat 1.txt
    ls: cannot access /date/: No such file or directory
    ls: cannot access /date/: No such file or directory
    test.log
    
    
    

    输入重定向

    标准输入重定向 < 将命令中接收输入的途径由默认的键盘更改为指定的文件或命令
    标识符限定输入重定向 << 命令从标准输入中读入内容,直到遇到“标识符”分解符为止
    [root@qls ~]# tr  'N'  'n'  < 1.txt 
    ls: cannot access /date/: no such file or directory
    ls: cannot access /date/: no such file or directory
    test.log
    
    [root@qls ~]# mysql   -uroot  -p123  <xx.sql
    
    
    [root@qls ~]# dd  if=/dev/zero  of=/root/t.log  bs=1M  count=100
    
    [root@qls ~]# dd  < /dev/zero  >/root/r.log  bs=1M  count=10
    
    
    [root@qls ~]# cat  > ll << EOF
    > orhgne
    > rgevjowiertg
    > igjwvwoi
    > regjvoeitg
    > EOF
    [root@qls ~]# cat ll
    orhgne
    rgevjowiertg
    igjwvwoi
    regjvoeitg
    
    脚本中打印菜单
    [root@qls ~]# vim  1.sh
    #!/bin/bash
    cat <<- 'EOF'
    ##########################
    #       1. 红烧肉        #
    #       2. 小炒肉        #
    #       3. 红烧排骨      #
    #       4. 清炒空心菜    #
    ##########################
    EOF     
    
    
    

    管道

    管道操作符号 "|" ,主要用来连接左右两个命令, 将左侧的命令的标准输出, 交给右侧命令的标准输入 
    
    PS: 无法传递标准错误输出至后者命令
    
    
    

    管道中的tee技术

    选项
    	-a		#追加
    	
    tee和重定向的区别
    
    
    

    xargs

    [root@qls ~]# ls  |rm -f 
    [root@qls ~]# ll
    total 112676
    -rw-r--r--. 1 root root         6 Aug 19 11:57 1
    -rw-r--r--. 1 root root       166 Aug 19 12:25 1.sh
    -rw-r--r--. 1 root root       113 Aug 19 12:09 1.txt
    -rw-r--r--. 1 root root         7 Aug 19 11:58 2
    -rw-r--r--. 1 root root        18 Aug 19 11:59 3
    -rw-r--r--. 1 root root        27 Aug 19 12:03 4
    -rw-r--r--. 1 root root        94 Aug 19 12:04 6
    -rw-r--r--. 1 root root        40 Aug 19 12:20 ll
    -rw-r--r--. 1 root root  10485760 Aug 19 12:19 r.log
    -rw-r--r--. 1 root root        12 Aug 19 11:46 test.log~
    -rw-r--r--. 1 root root 104857600 Aug 19 12:18 t.log
    [root@qls ~]# ls  |xargs   rm -f 
    [root@qls ~]# ll
    total 0
    
    [root@qls ~]# which  cd
    /usr/bin/cd
    [root@qls ~]# which  cd | ls -l
    total 0
    [root@qls ~]# which  cd |xargs ls -l
    -rwxr-xr-x. 1 root root 26 Oct 31  2018 /usr/bin/cd
    
    
    

    find 查找

    -not		#取反
    !		   #取反
    
    #根据名称查找
    	-name    #根据名称
    	-iname	 #忽略大小写
    	*		 #所有,模糊查找
    	
    [root@qls ~]# find   /etc   -name  'ifcfg-eth0'   -print		#精确查找
    /etc/sysconfig/network-scripts/ifcfg-eth0
    [root@qls ~]# find   /etc   -name  'ifcfg-eth0'   
    /etc/sysconfig/network-scripts/ifcfg-eth0
    [root@qls ~]# find   /etc   -name  'ifcfg-eth'   
    [root@qls ~]# find   /etc   -name  'ifcfg-eth*'   
    /etc/sysconfig/network-scripts/ifcfg-eth0
    /etc/sysconfig/network-scripts/ifcfg-eth1
    [root@qls ~]# ll
    total 0
    [root@qls ~]# ll /data/
    total 4
    -rw-r--r--. 1 root root 12 Aug 19 11:40 test.log
    [root@qls ~]# touch   /data/Touch.log
    [root@qls ~]# find   /data   -name 'test.log'  
    /data/test.log
    [root@qls ~]# touch   /data/Test.log
    [root@qls ~]# find   /data   -iname 'test.log'  
    /data/test.log
    /data/Test.log
    [root@qls ~]# find  /etc/   -name  '*eth*'
    /etc/sysconfig/network-scripts/ifdown-eth
    /etc/sysconfig/network-scripts/ifup-eth
    /etc/sysconfig/network-scripts/ifcfg-eth0
    /etc/sysconfig/network-scripts/ifcfg-eth1
    /etc/ethertypes
    
    #根据文件类型查找
    	-type    #根据类型
    		f	#普通文件
    		d	#目录
    		l	#软连接
    		b	#块设备
    		c	#字符设备
    		p	#管道文件
    		s	#socket文件,套接字
    
    [root@qls ~]# find  /opt    -type  f    -ls  
    101765329    0 -rw-r--r--   1 root     setgid          0 Aug 19 10:45 /opt/root.txt
    101765330    0 -rw-rw-r--   1 jason    setgid          0 Aug 19 10:46 /opt/jason.txt
    101765331    0 -rw-rw-r--   1 1007     setgid          0 Aug 19 10:46 /opt/test-1
    101765332    0 -rw-rw-r--   1 jason    jason           0 Aug 19 10:48 /opt/jason
    101765333    0 -rw-rw-r--   1 jason    setgid          0 Aug 19 10:49 /opt/jason-1
    101765334    0 -rw-rw-r--   1 1007     setgid          0 Aug 19 10:50 /opt/test-2
    101765328    0 -rw-rw-r--   1 user     setgid          0 Aug 19 10:51 /opt/user
    101765336    4 -rw-r--r--   1 root     setgid          5 Aug 19 11:38 /opt/test.log
    [root@qls ~]# find  /opt    -type  d    -ls  
    101765326    0 drwxrwsrwx   2 root     setgid        123 Aug 19 11:38 /opt
    [root@qls ~]# find  /etc  -type  l   -ls
    33554500    0 lrwxrwxrwx   1 root     root           17 Aug 14 15:09 /etc/mtab -> /proc/self/mounts
    67324733    0 lrwxrwxrwx   1 root     root           15 Aug 14 15:10 /etc/alternatives/ld -> /usr/bin/ld.bfd
    [root@qls ~]# find  /dev   -type   b   -ls
     18004    0 brw-rw----   1 root     disk       8,   3 Aug 16 08:35 /dev/sda3
     18003    0 brw-rw----   1 root     disk       8,   2 Aug 16 08:35 /dev/sda2
     18002    0 brw-rw----   1 root     disk       8,   1 Aug 16 08:35 /dev/sda1
     18001    0 brw-rw----   1 root     disk       8,   0 Aug 16 08:35 /dev/sda
     17979    0 brw-rw----   1 root     cdrom     11,   0 Aug 16 08:35 /dev/sr0
    [root@qls ~]# find  /dev   -type  c  -ls
     37077    0 crw-rw----   1 root     tty        7, 134 Aug 16 08:35 /dev/vcsa6
     37076    0 crw-rw----   1 root     tty        7,   6 Aug 16 08:35 /dev/vcs6
     37075    0 crw-rw----   1 root     tty        7, 133 Aug 16 08:35 /dev/vcsa5
     37074    0 crw-rw----   1 root     tty        7,   5 Aug 16 08:35 /dev/vcs5
     37072    0 crw-rw----   1 root     tty        7, 132 Aug 16 08:35 /dev/vcsa4
    [root@qls ~]# find  /   -type  p  -ls
     39196    0 prw-------   1 root     root            0 Aug 16 08:35 /run/systemd/inhibit/1.ref
    147337    0 prw-------   1 root     root            0 Aug 19 09:09 /run/systemd/sessions/35.ref
    143289    0 prw-------   1 root     root            0 Aug 19 08:30 /run/systemd/sessions/33.ref
     21439    0 prw-------   1 root     root            0 Aug 16 08:35 /run/systemd/initctl/fifo
    [root@qls ~]# find  /   -type  s  -ls
      8956    0 srw-rw-rw-   1 root     root            0 Aug 16 08:35 /dev/log
     37478    0 srw-rw-rw-   1 root     root            0 Aug 16 08:35 /run/vmware/guestServicePipe
     37021    0 srw-rw-rw-   1 root     root            0 Aug 16 08:35 /run/abrt/abrt.socket
     36214    0 srw-rw-rw-   1 root     root            0 Aug 16 08:35 /run/dbus/system_bus_socket
    
    
    #根据文件大小查找
    
    	-size    #根据大小查找
    		b	 #字节
    		k	 #kb
    		M、G	#使用大写
    	-a		#并且。默认就是
    	-o		#或者
    
    [root@qls ~]# find  /var/log  -type f   -size  -50k   |xargs    ls -lh
    -rw-------. 1 root root  28K Aug 14 15:17 /var/log/anaconda/anaconda.log
    -rw-------. 1 root root  12K Aug 14 15:17 /var/log/anaconda/ifcfg.log
    -rw-------. 1 root root    0 Aug 14 15:17 /var/log/anaconda/ks-script-fY94py.log
    [root@qls ~]# find  /var/log  -type f   -size  +50k   |xargs    ls -lh
    -rw-------. 1 root root 1.7M Aug 14 15:17 /var/log/anaconda/journal.log
    -rw-------. 1 root root 202K Aug 14 15:17 /var/log/anaconda/packaging.log
    -rw-------. 1 root root 122K Aug 14 15:17 /var/log/anaconda/storage.log
    [root@qls ~]# find  /var/log  -type f   -size  299k   |xargs    ls -lh
    -rw-------. 1 root root 299K Aug 19 15:01 /var/log/messages
    
    
    [root@qls ~]# find  /var/log -type  f  -size  -1k  -o  -size  +1M  |xargs  ls -lh
    -rw-------. 1 root root 1.7M Aug 14 15:17 /var/log/anaconda/journal.log
    -rw-------. 1 root root    0 Aug 14 15:17 /var/log/anaconda/ks-script-fY94py.log
    -rw-------. 1 root root    0 Aug 16 09:10 /var/log/boot.log
    -rw-r--r--. 1 root root    0 Aug 14 15:28 /var/log/firewalld
    -rw-------. 1 root root    0 Aug 14 15:12 /var/log/spooler
    -rw-------. 1 root root    0 Aug 14 15:10 /var/log/tallylog
    [root@qls ~]# find  /var/log -type  f  -size  +100k  -size  -200k  |xargs  ls -lh
    -rw-------. 1 root root 122K Aug 14 15:17 /var/log/anaconda/storage.log
    -rw-r--r--. 1 root root 122K Aug 16 08:35 /var/log/dmesg
    -rw-r--r--. 1 root root 122K Aug 14 15:27 /var/log/dmesg.old
    [root@qls ~]# find  /var/log -type  f  -size  +100k  -a  -size  -200k  |xargs  ls -lh
    -rw-------. 1 root root 122K Aug 14 15:17 /var/log/anaconda/storage.log
    -rw-r--r--. 1 root root 122K Aug 16 08:35 /var/log/dmesg
    -rw-r--r--. 1 root root 122K Aug 14 15:27 /var/log/dmesg.old
    
    
    #根据用户或者组查找
    
    	-user		#根据用户
    	-group		#根据用户组
    	-nouser		#没有属主
    	-nogroup	#没有属组
    
    [root@qls ~]# find  /opt/   -user  jason  -ls
    101765330    0 -rw-rw-r--   1 jason    setgid          0 Aug 19 10:46 /opt/jason.txt
    101765332    0 -rw-rw-r--   1 jason    jason           0 Aug 19 10:48 /opt/jason
    101765333    0 -rw-rw-r--   1 jason    setgid          0 Aug 19 10:49 /opt/jason-1
    [root@qls ~]# find  /opt  -group  jason -ls
    101765332    0 -rw-rw-r--   1 jason    jason           0 Aug 19 10:48 /opt/jason
    [root@qls ~]# find  /opt  -user jason -group  jason -ls
    101765332    0 -rw-rw-r--   1 jason    jason           0 Aug 19 10:48 /opt/jason
    [root@qls ~]# find  /opt ( -user jason -o  -group  jason ) -ls
    101765330    0 -rw-rw-r--   1 jason    setgid          0 Aug 19 10:46 /opt/jason.txt
    101765332    0 -rw-rw-r--   1 jason    jason           0 Aug 19 10:48 /opt/jason
    101765333    0 -rw-rw-r--   1 jason    setgid          0 Aug 19 10:49 /opt/jason-1
    
    [root@qls ~]# find  /opt/  -nouser  -ls
    101765331    0 -rw-rw-r--   1 1007     setgid          0 Aug 19 10:46 /opt/test-1
    101765334    0 -rw-rw-r--   1 1007     setgid          0 Aug 19 10:50 /opt/test-2
    [root@qls ~]# find /opt/  -nogroup  -ls 
    101765332    0 -rw-rw-r--   1 1006     1006            0 Aug 19 10:48 /opt/jason
    
    
    根据目录的阶级,深度查找
    	-maxdepth 	#根据目录深度查找
    	
    [root@qls ~]# find  /  -maxdepth  4   -name 'ifcfg-eth0'
    
    
    #根据权限查找
    
    [root@qls ~]# find  /opt/   -perm  -444  -ls	#包含读权限,全局,每一项都包含
    101765326    0 drwxrwsrwx   2 root     setgid        123 Aug 19 15:28 /opt/
    101765329    0 -rw-r--r--   1 root     setgid          0 Aug 19 10:45 /opt/root.txt
    101765330    0 -rw-rw-r--   1 1006     setgid          0 Aug 19 10:46 /opt/jason.txt
    [root@qls ~]# find  /opt/   -perm  644  -ls		#精确匹配
    101765329    0 -rw-r--r--   1 root     setgid          0 Aug 19 10:45 /opt/root.txt
    101765336    4 -rw-r--r--   1 root     setgid          5 Aug 19 11:38 /opt/test.log
    [root@qls ~]# chmod  o-r  /opt/test.log
    [root@qls ~]# chmod  g-r  /opt/root.txt
    [root@qls ~]# ll /opt/
    total 4
    -rwxrwxrwx. 1 1006   1006 0 Aug 19 10:48 jason
    -rw-rw-r--. 1 1006 setgid 0 Aug 19 10:49 jason-1
    -rw-rw-r--. 1 1006 setgid 0 Aug 19 10:46 jason.txt
    -rw----r--. 1 root setgid 0 Aug 19 10:45 root.txt
    -rw-rw-r--. 1 1007 setgid 0 Aug 19 10:46 test-1
    -rw-rw-r--. 1 1007 setgid 0 Aug 19 10:50 test-2
    -rw-r-----. 1 root setgid 5 Aug 19 11:38 test.log
    -rw-rw-r--. 1 user setgid 0 Aug 19 10:51 user
    [root@qls ~]# find  /opt/  -perm  -444  -ls
    101765326    0 drwxrwsrwx   2 root     setgid        123 Aug 19 15:28 /opt/
    101765330    0 -rw-rw-r--   1 1006     setgid          0 Aug 19 10:46 /opt/jason.txt
    101765331    0 -rw-rw-r--   1 1007     setgid          0 Aug 19 10:46 /opt/test-1
    101765332    0 -rwxrwxrwx   1 1006     1006            0 Aug 19 10:48 /opt/jason
    101765333    0 -rw-rw-r--   1 1006     setgid          0 Aug 19 10:49 /opt/jason-1
    101765334    0 -rw-rw-r--   1 1007     setgid          0 Aug 19 10:50 /opt/test-2
    101765328    0 -rw-rw-r--   1 user     setgid          0 Aug 19 10:51 /opt/user
    [root@qls ~]# find  /opt/  -perm  /444  -ls		#包含,只要有一项满足,条件就成立
    101765326    0 drwxrwsrwx   2 root     setgid        123 Aug 19 15:28 /opt/
    101765329    0 -rw----r--   1 root     setgid          0 Aug 19 10:45 /opt/root.txt
    101765330    0 -rw-rw-r--   1 1006     setgid          0 Aug 19 10:46 /opt/jason.txt
    101765331    0 -rw-rw-r--   1 1007     setgid          0 Aug 19 10:46 /opt/test-1
    101765332    0 -rwxrwxrwx   1 1006     1006            0 Aug 19 10:48 /opt/jason
    101765333    0 -rw-rw-r--   1 1006     setgid          0 Aug 19 10:49 /opt/jason-1
    101765334    0 -rw-rw-r--   1 1007     setgid          0 Aug 19 10:50 /opt/test-2
    101765328    0 -rw-rw-r--   1 user     setgid          0 Aug 19 10:51 /opt/user
    101765336    4 -rw-r-----   1 root     setgid          5 Aug 19 11:38 /opt/test.log
    
    
    #根据特殊权限查找
    [root@qls ~]# find  /   -perm   -4000  -ls
    100853298   32 -rwsr-xr-x   1 root     root        32096 Oct 31  2018 /usr/bin/fusermount
    100973706   24 -rws--x--x   1 root     root        24048 Oct 31  2018 /usr/bin/chfn
    100973709   24 -rws--x--x   1 root     root        23960 Oct 31  2018 /usr/bin/chsh
    100973761   32 -rwsr-xr-x   1 root     root        32048 Oct 31  2018 /usr/bin/umount
    
    [root@qls ~]# find  /   -perm   -2000  -ls
    100783613   16 -r-xr-sr-x   1 root     tty         15344 Jun 10  2014 /usr/bin/wall
    100973767   20 -rwxr-sr-x   1 root     tty         19624 Oct 31  2018 /usr/bin/write
    101041329  376 ---x--s--x   1 root     nobody     382240 Apr 11  2018 /usr/bin/ssh-agent
    101725997   40 -rwx--s--x   1 root     slocate     40520 Apr 11  2018 /usr/bin/locate
    
    [root@qls ~]# find  /   -perm   -1000  -ls
        69    0 drwxrwxrwt   4 root     root           43 Aug 19 09:22 /var/tmp
    33554504    0 drwxrwxrwt  12 root     root          257 Aug 19 12:25 /tmp
    33879954    0 drwxrwxrwt   2 root     root            6 Aug 14 15:11 /tmp/.X11-unix
    101002768    0 drwxrwxrwt   2 root     root            6 Aug 14 15:11 /tmp/.XIM-unix
    33879955    0 drwxrwxrwt   2 root     root            6 Aug 14 15:11 /tmp/.ICE-unix
    67502497    0 drwxrwxrwt   2 root     root            6 Aug 14 15:11 /tmp/.font-unix
    
    
    #根据时间进行查找
    
    	-mtime		#根据修改时间查找
        	+7		#七天以前
        	-7		#七天以内
        	7		#第七天
       
    
    [root@qls ~]# find  /opt/  -mtime +7  -ls
    101765313    0 -rw-r--r--   1 root     setgid          0 Aug  1 00:00 /opt/file-01
    101765321    0 -rw-r--r--   1 root     setgid          0 Aug  2 00:00 /opt/file-02
    101765322    0 -rw-r--r--   1 root     setgid          0 Aug  3 00:00 /opt/file-03
    101765325    0 -rw-r--r--   1 root     setgid          0 Aug  4 00:00 /opt/file-04
    101765327    0 -rw-r--r--   1 root     setgid          0 Aug  5 00:00 /opt/file-05
    101765335    0 -rw-r--r--   1 root     setgid          0 Aug  6 00:00 /opt/file-06
    101765337    0 -rw-r--r--   1 root     setgid          0 Aug  7 00:00 /opt/file-07
    101765338    0 -rw-r--r--   1 root     setgid          0 Aug  8 00:00 /opt/file-08
    101765339    0 -rw-r--r--   1 root     setgid          0 Aug  9 00:00 /opt/file-09
    101765340    0 -rw-r--r--   1 root     setgid          0 Aug 10 00:00 /opt/file-10
    101765341    0 -rw-r--r--   1 root     setgid          0 Aug 11 00:00 /opt/file-11
    [root@qls ~]# find   /opt/  -mtime  -7  -ls
    101765326    4 drwxrwsrwx   2 root     setgid       4096 Aug 31  2019 /opt/
    101765329    0 -rw----r--   1 root     setgid          0 Aug 19  2019 /opt/root.txt
    101765330    0 -rw-rw-r--   1 1006     setgid          0 Aug 19  2019 /opt/jason.txt
    101765331    0 -rw-rw-r--   1 1007     setgid          0 Aug 19  2019 /opt/test-1
    101765332    0 -rwxrwxrwx   1 1006     1006            0 Aug 19  2019 /opt/jason
    101765333    0 -rw-rw-r--   1 1006     setgid          0 Aug 19  2019 /opt/jason-1
    101765334    0 -rw-rw-r--   1 1007     setgid          0 Aug 19  2019 /opt/test-2
    101765328    0 -rw-rw-r--   1 user     setgid          0 Aug 19  2019 /opt/user
    101765336    4 -rw-r-----   1 root     setgid          5 Aug 19  2019 /opt/test.log
    101765343    0 -rw-r--r--   1 root     setgid          0 Aug 13 00:00 /opt/file-13
    101765344    0 -rw-r--r--   1 root     setgid          0 Aug 14 00:00 /opt/file-14
    101765345    0 -rw-r--r--   1 root     setgid          0 Aug 15 00:00 /opt/file-15
    101765346    0 -rw-r--r--   1 root     setgid          0 Aug 16 00:00 /opt/file-16
    101765347    0 -rw-r--r--   1 root     setgid          0 Aug 17 00:00 /opt/file-17
    101765349    0 -rw-r--r--   1 root     setgid          0 Aug 18 00:00 /opt/file-18
    101765350    0 -rw-r--r--   1 root     setgid          0 Aug 19 00:00 /opt/file-19
    [root@qls ~]# find  /opt/  -mtime  7 -ls
    101765342    0 -rw-r--r--   1 root     setgid          0 Aug 12 00:00 /opt/file-12
    
    [root@qls ~]# find  /opt/  -mtime  +7  |xargs  rm -f	#把七天以前的数据删除
    
    
    

    find自带动作

    -print		#打印,默认就是该动作
    
    -ls			#以长格形式显示文件信息,详细的属性信息
    
    	[root@qls ~]# find  /opt/  -mtime  +7  -ls
    	101765313    0 -rw-r--r--   1 root     setgid          0 Aug  1 00:00 /opt/file-01
    	101765321    0 -rw-r--r--   1 root     setgid          0 Aug  2 00:00 /opt/file-02
    
    -delete		#删除查询出来的内容,只能删除文件,或者是空目录		
    
    	[root@qls ~]# find  /opt/  -mtime  7 -delete
    
    -ok			#后面跟shell命令,会询问是否确定操作
    	[root@qls ~]# find  /opt/  -mtime  -7  -ok   rm -f  {} ;
    	< rm ... /opt/ > ? n
    	< rm ... /opt/root.txt > ? n
    
    -exec		#后面跟shell命令
    	[root@qls ~]# find  /opt/  -mtime  -7  -exec    rm -f  {} ;
    	
    	
    find与xargs配合
    [root@qls ~]# find  /var/log/ -type f  -size  +200k  -exec  cp -v  {}  /opt/01/  ;
    
    [root@qls ~]# find  /var/log/ -type f  -size  +200k | xargs  cp  -t  /opt/02
    
    [root@qls ~]# find  /var/log/ -type f  -size  +200k | xargs  -I  {}  cp  {}  /opt/03
    
    [root@qls ~]# cp  `find  /var/log/ -type f  -size  +200k`  /opt/04
    
    [root@qls ~]# cp  $(find  /var/log/ -type f  -size  +200k)  /opt/05
    
    
    

    find练习题

    1.查找/tmp目录下,属主不是root,且文件名不以f开头的文件
    
    [root@qls ~]# find  /tmp/  -not  -user root  !  -name 'f*' -ls
    33970406    4 -rw-r--r--   1 user     root           12 Aug 19  2019 /tmp/test.log
    
    2.查找/var目录下属主为root,且属组为mail的所有文件
    
    [root@qls ~]# find  /var -type f  -user root -group mail -ls
    33605500    0 drwxrwxr-x   2 root     mail          152 Aug 19  2019 /var/spool/mail
    33978097    4 -rw-------   1 root     mail          616 Aug 17 12:29 /var/spool/mail/root
    
    3.查找/var目录下属主不属于root、lp、adm的所有文件
    [root@qls ~]# find /var/ -type f  -not  ( -user root -o -user lp -o -user adm )  -ls
     32679    4 -rw-r--r--   1 user01   user01       3736 Nov 26  2018 /var/tmp/yum-user01-2oaLuc/x86_64/7/base/repomd.xml
     32680    0 -rw-r--r--   1 user01   user01          0 Aug 17 11:14 /var/tmp/yum-user01-2oaLuc/x86_64/7/base/cachecookie
     32715    4 -rw-r--r--   1 user01   user01        528 Aug 15 16:26 /var/tmp/yum-user01-2oaLuc/x86_64/7/base/mirrorlist.txt
    
    4.查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件
    [root@qls ~]# find /var  -type f  -mtime -7  ! ( -user root -o  -user postfix ) -ls
     32680    0 -rw-r--r--   1 user01   user01          0 Aug 17 11:14 /var/tmp/yum-user01-2oaLuc/x86_64/7/base/cachecookie
     32715    4 -rw-r--r--   1 user01   user01        528 Aug 15 16:26 /var/tmp/yum-user01-2oaLuc/x86_64/7/base/mirrorlist.txt
    
    5.查找/etc目录下大于1M且类型为普通文件的所有文件
    
    [root@qls ~]# find  /etc/ -type f   -size  +1M  |xargs ls -lh
    -rw-------. 1 root root 3.8M Nov  3  2018 /etc/selinux/targeted/active/policy.kern
    -rw-r--r--. 1 root root 1.4M Nov  3  2018 /etc/selinux/targeted/contexts/files/file_contexts.bin
    -rw-r--r--. 1 root root 3.8M Nov  3  2018 /etc/selinux/targeted/policy/policy.31
    -r--r--r--. 1 root root 7.6M Aug 14 15:27 /etc/udev/hwdb.bin
    
    6.将/etc/中的所有目录(仅目录)复制到/tmp下,目录结构不变
    
    [root@qls ~]# find   /etc  -type d  |xargs  -I {}  mkdir -p  /tmp/{}
    
    [root@qls ~]# find   /etc  -type d   -exec  mkdir -p /tmp/{}  ;
    
    7.将/etc目录复制到/var/tmp/,/var/tmp/etc的所有目录权限777,/var/tmp/etc目录中所有文件权限666
    
    [root@qls ~]# cp -a /etc  /var/tmp/
    
    [root@qls ~]# find  /var/tmp/  -type  d  -exec  chmod 777  {} ;
    
    [root@qls ~]# find  /var/tmp/ !  -type  d  -exec  chmod 666  {} ;
    
    
    8.保留/var/log/下最近7天的日志文件,其他全部删除
    
    find  /var/log  ! -mtime  -7  -delete
    
    
    9.创建touch file{1..10}10个文件, 保留file9,其他一次全部删除
    
    [root@qls opt]# find  ./  -type  f  !  -name 'file9'  -delete
    
    10.解释如下每条命令含义
    
    mkdir /root/dir1
    
    touch /root/dir1/file{1..10}
    
    find /root/dir1 -type f -name "file5"
    
    find /root/dir1 ! -name "file5"
    
    find /root/dir1 -name "file5" -o -name "file9"
    
    find /root/dir1 -name "file5" -o -name "file9" -ls		#-ls的bug
    
    find /root/dir1 ( -name "file5" -o -name "file9" ) -ls
    
    find /root/dir1 ( -name "file5" -o -name "file9" ) -exec rm -rvf {} ;
    
    find /root/dir1 ! ( -name "file4" -o -name "file8" ) -exec rm -vf {} ;
    
    
    

    练习题

    16.创建10个用户,前缀是你的名,后缀为数字序列,比如zengjia1等,并给其10个用户设置统一密码为123456,最后尝试是否可以登录。
    
    [root@qls ~]# seq  10  | awk  '{print "useradd  egon"$1 "  &&  echo '123456' | passwd --stdin  egon"$1}' | bash
    
    
    17.创建10个用户,前缀是oldboy,后缀为数字序列,比如oldboy1等,并给其10个用户设置随机密码,最后尝试是否可以登录。
    
    [root@qls ~]# seq  10  | awk  '{print "useradd  owen"$1 "  &&  mkpasswd -l 10 -d 2 -c 2 -C 2 -s 4 |tee  pass"$1".txt | passwd --stdin  owen"$1}'  |bash
    
    使用命令调换/etc/passwd文件里 root 位置和/bin/bash 位置? 即将所有的第一列和最后一列位置调换?
    
    [root@qls ~]# sed  -r  's#(.*)(:x.*:)(.*)#321#g'  passwd
    
    [root@qls ~]# awk  -F:  '{print $NF":"$2":"$3":"$4":"$5":"$6":"$1}'  passwd
    
    
    
  • 相关阅读:
    ARM裸机开发(二)中断编程
    Linux汇编与C互相调用
    Java 2009
    MFC对Socket编程的支持
    Thinkpad
    IE9
    ASP.NET MVC学习教材
    sysprep.exe修改SID
    查询显示进度条
    MOSS2007中型服务场管理 教材<02>: SubSite Backup & Restore
  • 原文地址:https://www.cnblogs.com/chenwang-23/p/11854479.html
Copyright © 2011-2022 走看看