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.*:)(.*)#\3\2\1#g'  passwd

[root@qls ~]# awk  -F:  '{print $NF":"$2":"$3":"$4":"$5":"$6":"$1}'  passwd


posted @ 2019-11-14 01:05  Mrchenwang  阅读(161)  评论(0编辑  收藏  举报