day 16 特殊权限和输出输入符

特殊权限

可执行的setuid作用在属主的位置

权限位作用于属主的位置  可执行的权限位 执行这条令的时候,相当于这条命令的所有者  root
大S 和 小s的区别  
拥有执行权限,设置setuid之后是小s
没有执行权限,设置setuid之后是大S

setuid  # 的权限是数字4开头的
# 添加特殊权限s
[root@mpd ~]# chmod u+s /usr/bin/passwd
[root@mpd ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd # 查看文件变红色说明特别危险

setgid作用在属组的位置

权限为作用在属组的x为    使用s表示   有大S和小s  
用户在某个目录下新创建的目录或者文件,默认的所属组是自己的基本组
当设置setgid之后,用户新创建的目录或者文件的默认所属组不在是自己的组了
默认的组就是这个目录的所属组       让多个用户能够共享一个目录 
案例: 
root@mpd ~]# mkdir /mysql
[root@mpd ~]# chmod g+s /mysql/ 
[root@mpd ~]# ll -d /mysql
drwxr-sr-x 2 root root 6 Jul 24 15:13 /mysql
# 属于这个组的在这个组下创建的文件都可以共享相应权限
# 跟属组关联  

sticky粘滞位 作用在其他用户上

权限作用于 others 的x为    使用t表示    小t   大T 
给目录设置,  一个目录所有用户都拥有管理的权限 777    针对此目录设置一个粘滞位  
所有用户都可以在这个目录进行创建、删除文件的权利  但是只能管理自己的文件 或者管理员拥有管理所有文件的权限 root  

案例:
[root@mpd ~]# mkdir /test
[root@mpd ~]# chmod o+t /test
[root@mpd ~]# ll -d /test
drwxr-xr-t 2 root root 6 Jul 24 15:21 /test

三位特殊权限总结

chmod u+s  /dir # 作用在属主上的特殊权限
chmod g+s  /dir # 作用在属组上的特殊权限
chmod o+t  /dir # 作用在其他用户上的特殊权限
# 普通用户不能使用yum,命令,即使添加了setuid的权限也不行 此权限不能乱给   知道就行 
# setuid的权限是4开头的
# setgid的权限是2开头的
# sticky的权限是1开头的

特殊属性

特殊属性i 和 a

lsattr		# 显示特殊属性
chattr		# 设置特殊属性 
a		# 这个文件只能追加内容和查看   别的什么都做不了  删除  移动  复制可以 
i		# 什么都操作不了
#  针对所有用户包管理员 
案例;
[root@mpd ~]# mkdir /nginx
[root@mpd ~]# touch /nginx/pik /nginx/pag
[root@mpd ~]# chattr +i /nginx
[root@mpd ~]# cp /nginx/pag ./
[root@mpd ~]# rm -fr  /nginx/pag 
rm: cannot remove ‘/nginx/pag’: Permission denied

重定向的概述

将原本要输出到屏幕上面的内容,重定向到一个指定的文件中 
将原本从键盘上面输入的内容,改为从命令或者文件当中读取 
为什么要用重定向 
1. 数据非常重要,需要保存  
2. 后台程序的输出重定向到一个文件中 
3. 定时任务的执行结果 
4. 把一些错误的输出定向到空  
5. 把正确和错误的信息都需要保存 

stdin		#标准输入		0		# 从键盘上面读取输入的内容,
								  # 或者从命令及文件中读取输入的内容 
stdout		#标准输出		1		# 默认将正确的信息标准输出到屏幕上方  
stderr		#错误输出		2		# 默认将错误的信息标准输出到屏幕上方 

[root@qls ~]# cat 
hello		#标准输入
hello		#标准输出



#  输出重定向
将原本要输出到屏幕上面的内容,重定向到一个指定的文件中 

符号
>	#标准覆盖正确输出重定向 	# 将正确的内容覆盖源文件的   当文件不存在时,会自动创建 
>>	#标准追加正确输出重定向	# 将正确的内容追加到指定文件的底部  当文件不存在时,会自动创建
2>	#标准覆盖错误输出重定向	# 将错误的信息覆盖到指定的文件中 
2>>	#标准追加错误输出重定向	# 将错误的信息追加到文件的底部  

# 把正确的和错误的信息都保存到一个文件中
[root@qls ~]# ls  /roott   > file.txt  2>&1 		# 不推荐

# 将正确的信息和错误的信息重定向到空
[root@qls ~]# ls  /roottt   &> /dev/null

# 把正确的和错误的放在不同的文件中
[root@qls ~]# ls  /rooot  >> file1.txt  2>> file2.txt



#  输入重定向
将原本从键盘上面输入的内容,改为从命令或者文件当中读取 

符号
<	#标准输入重定向 		  #将原本从默认的键盘中读取数据改为由命令或者文件中读取 
<<	#标识符限定输入重定向 	#从键盘中读取内容,直到遇到标识符的分解符为止
案例:
[root@qls ~]# grep  'root'  <  /etc/passwd
[root@qls ~]# grep  root
[root@qls ~]# dd  if=/dev/zero  of=/root/test.log  bs=1M  count=50
[root@qls ~]# dd  </dev/zero   >/root/oldboy.log  bs=10M  count=100
[root@qls ~]# tr  't' 'T'  < file1.txt

管道技术

|  管道  	
连接左右两个命令的使用     把前面的命令作为标准输出通过管道交给后面的命令 作为标准输入 
只能把正确的信息交给后面的命令,错误的信息的不会传递 

# 管道技术中的tee技术 
需要保存一些标准输出的内容 

-a		# 追加 
tee 和 重定向的区别  
重定向	  # 把要输出到屏幕上面的内容重定向到指定的文件中
tee		# 把要输出到屏幕上面的内容重定向到指定的文件中 ,并且可以继续输出一份到屏幕上面   

# 管道中xargs技术 
让一些不支持管道的命令支持管道    把前面命令的执行结果以文件的参数传递方式传递给后面的命令 
posted @ 2020-07-24 15:52  nick_xm  阅读(122)  评论(0编辑  收藏  举报