Linux系统管理实战-权限管理

发布时间 2023-08-09 17:05:54作者: Boldcc

权限管理


  • 基本权限UGO

  • ACL权限

  • 高级权限 SUID SGID SKITY

  • 特殊权限 chattr

基本权限 UGO

文件权限设置: 可以赋于某个用户或组 能够以何种方式 访问某个文件

权限对象

属主 		-  U  (user)
属组 		-  G  (group)
其他人    -  O	  (other)

基本权限类型

r  -  可读	(4)
w  -  可写	(2)
x  -  可执行	(1)

怎么去查看文件或者目录对应的属主和属组的权限?

# ls -l a.txt
-rw-r--r--. 1 root root 0 5月   9 22:32 a.txt
分析:
属主root  ->  rw-
属组root  ->  r--
其他人	   ->	r--
怎么去设置权限?
# chmod 选项 文件/目录
选项
-R	 	//递归修改-对目录生效
1、通过字母去设置
					对象		赋值符		权限类型
					u			+		 r
chmod 				g			-		 w             file1
					o			=		 x
					a
案例
1、要求修改a.txt的属主权限为-w-
# chmod u-r a.txt
2、要求修改a.txt的属组权限为rw-
# chmod g+w a.txt
3、要求给a.txt文件加上可执行权限
# chmod a+x a.txt

2、通过数字的方式设置
# ls -l a.txt
-rw-r--r--. 1 root root 0 5月   9 22:32 a.txt
权限用数字表示: 644
案例
1、修改a.txt的权限为 rwx rw- --x
# chmod 761 a.txt
怎么去设置文件或者目录的属主和属组?
# chown 选项 文件/目录
选项
-R	 	//递归修改-对目录生效
案例
1、要求修改a.txt文件的属主为jerry ?
# chown jerry a.txt
2、要求修改a.txt文件的属主为rng 属组为IT ?
# chown rng:IT a.txt
# chown rng.IT a.txt
3、要求修改a.txt文件的属组为WEB ?
# chown .WEB a.txt

rwx权限对于文件或者目录的作用?

【如果要分析用户对文件拥有哪些权限,一定要先考虑用户是否对文件所在的目录拥有x权限】

umask掩码计算

默认的UMASK 022
计算过程
文件权限 666	rw-  rw-  rw-
umask  022     ---  -w-  -w-
			   rw-  r--  r--
最后创建的文件   644

目录权限 777     rwx  rwx   rwx
umask  022      ---  -w-   -w-
				rwx	 r-x   r-x
最后创建的文件   755			

设置umask
# umask 055   

ACL权限

设置单独用户和组对于单个文件的具体rwx基础权限
# setfacl
选项
-m		//添加acl权限
-x		//删除acl权限
-b		//删除所有的acl权限

案例
1、给tom用户设置对a.txt有rw的权限
# setfacl -m u:tom:rw a.txt

2、给IT组设置对a.txt有rx权限
# setfacl -m g:IT:rx a.txt

3、删除tom用户给a.txt 设置的acl权限
# setfacl -x u:tom a.txt

4、删除a.txt文件上的所有acl权限
# setfacl -b a.txt

# getfacl /zabbix/         //查看文件或者目录的acl权限
getfacl: Removing leading '/' from absolute path names
# file: zabbix/         #文件名称
# owner: zabbix			#属主
# group: nagcmd			#属组
user::rwx				#属主权限
user:tomcat:r-x			#tomcat的acl权限
group::r-x				#属组权限
mask::r-x				
other::---				#其他人权限


问题:不小心操作  chmod  a-x  /usr/bin/chmod  ?  怎么恢复 ?
方法1:
 # setfacl -m u:root:rwx /usr/bin/chmod 

 # chmod a+x /usr/bin/chmod 

方法2:
 # cp /usr/bin/cat  /usr/bin/cat.bak
 # cp /usr/bin/chmod /usr/bin/cat.bak      //按y进行覆盖
 # cat.bak a+x /usr/bin/chmod

高级权限SUID SGID skity

SUID
给可执行文件设置suid权限,“类似给单个命令进行提权”

# chmod u+s
# chmod 4000

案例:
给whoami命令进行单独提权
# chmod u+s /usr/bin/whoami
# whoami   //显示当然登入的用户是root
# su - zabbix
$ whoami
root       //由于whoami被root用户赋予suid权限,所以相当于现在执行whoami命令还是root本身

SGID
给目录设置,任何用户在该目录下创建文件,会继承其属组
【一定要有x权限存在】
# chmod g+s  目录
# chmod 2000  目录

案例:
配置一个目录,该目录任何用户都可以进行创建文件,但是自动修改文件的属组为IT
# mkdir /test
# groupadd IT
# chown :IT /test
# chmod g+s /test

SKITY
给目录设置,任何用户都不能随意删除其他用户创建的文件
【一定要有x权限存在】

案例
创建目录,并按以下要求设置: /data 目录属于 IT 组 , 目录可以被 IT 的组成员读取、写入和访问,其他任何用户不具备这些权
限(root 用户除外) 在/data 目录中创建的文件的所属组自动变成 IT 组
# mkdir /data
# chmod g=rwx /data
# chmod o=	/data
# chown :IT /data
# chmod g+s /data

特殊权限chattr

对root用户生效
# chattr +a file100     #只能给文件添加内容,但是不能删除内容  //日志文件
# chattr +i file200     #文件不能更改,不能删除,不能移动

# lsattr file300       #查看特殊权限