zoukankan      html  css  js  c++  java
  • 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技术 
    让一些不支持管道的命令支持管道    把前面命令的执行结果以文件的参数传递方式传递给后面的命令 
    
  • 相关阅读:
    Redis常见问题及解决方案
    Maven构建报错问题解决
    Nginx正向代理设置
    Linux下限制某程序CPU占用
    Linux-flock文件锁的使用
    Python将print输出内容保存到指定文件中
    使用Zabbix官方模板监控Redis运行状况
    阿里云ossfs配置
    docker swarm 集群及可视化界面的安装及配置
    http://www.fx114.net/qa-24-116329.aspx
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/13372371.html
Copyright © 2011-2022 走看看