zoukankan      html  css  js  c++  java
  • 七、 权限管理

    七、 权限管理

    ACL权限控制访问

    	1)dumpe2fs -h /dev/sda3		查看分区是否支持ACl
    	2)mount -o remount,acl			临时设置acl权限
    		永久设置 	/etc/fstab    ----> mount -o remount /	(设完重挂一次生效)
    	3)getfacl	参数	查看文件的acl权限
    	4)setfacl [] 参数	设置ACL权限
    				-m 	增加acl权限
    				-x	删除授权用户
    				-b	清空acl权限(mask值)
    				-R	对目录及其内所有文件都设置权限(递归设置)
    		setfacl -m u:b1:rwx 1.txt  (设置b1用户对1.txt的rwx权限)
    		setfacl -m m:rwx 	(设置mask值为rwx权限(最大限制权限,防止acl权限过大))
    		setfacl -R -m u:b1:rwx 1.txt 递归设置权限
    	让文件夹内所创建的文件继承文件夹权限
    		用法一:setfacl -d -m u:zhangsan:r /abc	
    		用法二:setfacl -m d:u:zhangsan:r /abc
    	当一个文件有ACL权限时,其所属组位置上表现的权限,不再是所属组的权限,而是ACL的mask的权限。
    

    sudo授权

    用户必须对 /etc/passwd 文件有 r 权限
    		授权:将授权的信息记录到配置文件中
    			visudo	专门用来修改授权配置文件的
    			-r--r----- /etc/sudoers		授权配置文件(被授权者有哪些权限)
    			root 		ALL=(ALL)								ALL
    		被授权者	可管理主机=(被授权者所借用的身份)		被授权者可执行的命令
    zhangsan	ALL=(root)		/sbin/shutdown -r now
    us1	ALL=(root)		/usr/bin/passwd ! /usr/bin/passwd root ! /usr/bin/passwd ""
    		验证授权是否成功(普通用户身份):
    			登录zhangsan
    			# sudo shutdown -r now	
    		执行命令,会有以下3个过程
    			1. 查看/etc/sudoers配置文件,是否有对zhangsan的授权
    			2. 还需要验证普通用户的身份(要求普通用户输入密码)
    			3. 若有授权、普通用户身份验证成功:执行授权命令(借root身份)
    		注意:
    			1.	授权时,不得仅授权某一命令,要授权具体的(命令 -选项 操作对象)
    			2.	授权时,仅授权普通用户所需要的权限,不要额外授权(用取反缩小授权范围)
    		passwd 命令在执行时,会检查命令的执行者UID
    			1.	若UID是0,则passwd命令后可以跟任何字符串
    			2.	若UID不为0,则passwd命令后不可以跟任何字符串
    		给组授权:
    			%zhangsan ALL=(ALL)	ALL
    		授权别名:(简化授权记录、缩短授权记录的长度)
    		给好几个命令设置一个别名NETWORKING
    		Cmnd_Alias NETWORKING = /usr/bin/passwd ! /usr/bin/passwd root ! /usr/bin/passwd ""
    		zhangsan	ALL=(root)	NETWORKING
    

    文件的特殊权限

    SUID(SetUID)
    	定义:在命令的所有者位置具有s权限的,叫做具有SUID权限
    	功能:
    	⑴ 一个普通用户在执行具有SUID权限的命令时,该命令的执行者会临时变更为命令的所有者
    	注意:
    		1.	普通用户需要对所执行的命令有x权限
    		2.	SUID只设置在可执行文件(命令)和脚本上
    	如:密码修改的过程:用户使用passwd命令,修改位于/etc/shadow中的字符串
    		-rwsr-xr-x 	root	root	/usr/bin/passwd 	
    		----------	root	root	/etc/shadow
    		EUID:应用程序执行时所持有的用户身份
    		root						/usr/bin/passwd						/etc/shadow	
    		zhangsan					/usr/bin/passwd						/etc/shadow
    SGID(SetGID)
    定义:在命令的所属组位置具有s权限的,叫做具有SGID权限
    功能
    ⑴ 针对目录
    一个普通用户在一个具有SGID权限的目录下创建文件时,该用户的有效组临时变更为了该目录的所属组。
    针对目录的SGID:
    	# mkdir /test
    	# chmod o+w /test
    	# useradd zhangsan + lisi
    	$ cd /test 
    	$ touch a.txt 
    	# chmod g+s /test
    	$ cd /test 
    	$ touch b.txt
    	对比a.txt 和 b.txt 文件的归属,得到结果。
    ⑵ 针对可执行文件:
    一个普通用户在执行具有SGID权限的命令时,则会临时加入命令文件的所属组内,以组成员的身份执行操作
    如:一个普通用户在执行具有SGID权限的命令时,该用户会临时加入到slocate组内,以组成员的身份查看mlocate.db文件
    -rwx--s--x	root	slocate		/usr/bin/locate	
    -rw-r-----	root	slocate		/var/lib/mlocate/mlocate.db
    root					/usr/bin/locate				/var/lib/mlocate/mlocate.db
    zhangsan				/usr/bin/locate				/var/lib/mlocate/mlocate.db
    SBIT(STICKY BIT)
    	黏着位:在具有SBIT权限的目录下,普通用户只能删除自己创建的文件(root除外),如/tmp目录
    文件系统属性
    chattr [+-] [选项] 文件或目录
    		i:对文件,不允许对文件进行任何操作;
    			对目录,只能修改目录下文件的数据,不可新建、删除,改名。
    		a:对文件,只能在文件中增加数据,但是不能删除也不能修改数据;
    			对目录,只能在目录中新建和修改文件,不允许删除、改名。
    		e:Linux 中绝大多数的文件都默认拥有 e 属性。表示该文件是使用 ext 文件系统进行存储的,
    	且不能使用"chattr -e"命令取消 e 属性
    lsattr  选项 文件名
    		-a  显示所有文件和目录(显示隐藏文件)
    		-d  若目标是目录,仅列出目录本身属性
    SUID&SGID 和 sudo授权的对比:
    	SUID&SGID : 针对的对象是所有能够使用他们的用户
    	sudo授权:授权更具体,更严谨
    如何设置特殊权限:
    	chmod ugo +- s	file
    	chmod 4755	file	suid(可执行文件)
    	chmod 2755	file	sgid(可执行文件&目录)
    	chmod 1755	file	sbit(目录)
    umask 0022 0002	
    	第一个位置的 0 代表该数值是一个八进制的数值
    	SUID :  4755
    	取消 : 00755
    权限管理章节的重点:
    	1.	ACL & sudo
    	2.	chattr & lsattr
    	3.	s系列(SUID&SGID&SBIT)	了解
    


    作者:Outsrkem
    出处:https://www.cnblogs.com/outsrkem/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    【原】结构体包含CString类型成员变量出错的原理
    Android View移动的六种方法
    Android开发之getX,getRawX,getWidth,getTranslationX等的区别
    Android 自定义漂亮的圆形进度条
    android studio 如何让包名展开
    Android基础之——CountDownTimer类,轻松实现倒计时功能
    Java/Android倒计时(开始,暂停,恢复,停止)
    Android Studio:正确导入SO相关文件
    Android MediaPlayer和VideoView的使用
    android studio 将自己的项目生成jar包
  • 原文地址:https://www.cnblogs.com/outsrkem/p/11169447.html
Copyright © 2011-2022 走看看