「Linux-基础」CentOS8 权限管理

权限管理

环境:CentOS 8

ACL权限

  • 可读(r):读取文件
  • 可写(w):增删改编辑
  • 可执行(x):执行一个脚本
  • umask
  • 用于解决用户对文件身份不足的问题的

开启ACL

//临时生效acl
[root@iZbp10cdilkxcswm4l893lZ ~]# lsblk              //查看磁盘   
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  40G  0 disk 
└─vda1 253:1    0  40G  0 part /

[root@iZbp10cdilkxcswm4l893lZ ~]# dumpe2fs -h /dev/vda1   //dumpe2fs命令是查询指定分区详细文件系统信息的命令
……………………省略部分…………………………
Default mount options:    user_xattr acl
……………………省略部分…………………………

[root@iZbp10cdilkxcswm4l893lZ ~]# mount -o remount.acl /  //重新挂载根分区,并挂载加入 acl权限
mount: /dev/vda1 is already mounted or / busy
       /dev/vda1 is already mounted on /

//-永久挂载生效acl
[root@iZbp10cdilkxcswm4l893lZ ~]# vim /etc/fstab     //进入配置文件 在defaults后,加acl  
UUID=1114fe9e-2309-4580-b183-d778e6d97397 /                       ext4    defaults,acl        1 1

[root@iZbp10cdilkxcswm4l893lZ ~]# mount -o remout /  //重新挂载文件系统或重启动系统,使修改生效
mount: /dev/vda1 is already mounted or / busy
       /dev/vda1 is already mounted on /

ACL基本配置

getfacl

[root@iZbp10cdilkxcswm4l893lZ ~]# getfacl /tmp            //查看/tmp 文件的ACL权限
getfacl: Removing leading '/' from absolute path names
# file: tmp
# owner: root
# group: root
# flags: --t
user::rwx
group::rwx
other::rwx

setfacl

#语法:
setfacl -m u:用户名:权限 文件名        //给用户添加权限
setfacl -m g:组名:权限 文件名          //给组添加权限
#选项
-m    		//设定ACL权限
-b     		//删除ACL权限
-x():用户  //删除单个用户的ACL权限

#举例
[root@iZbp10cdilkxcswm4l893lZ ~]# setfacl -m u:t1:5 /tmp    //表示将/tmp目录给t1用户设置权限为5
[root@iZbp10cdilkxcswm4l893lZ ~]# getfacl /tmp              //查看/tmp目录下的权限 
getfacl: Removing leading '/' from absolute path names
# file: tmp
# owner: root
# group: root
# flags: --t
user::rwx
user:t1:r-x          //此时已列出 用户t1 的权限
group::rwx
mask::rwx
other::rwx 

//setfacl的递归与默认(若要对目录赋予相关的权限需要将递归和默认都加上)
//递归
[root@iZbp10cdilkxcswm4l893lZ ~]# setfacl -m u:t1:rx -R /tmp       //-R为递归只能赋予目录  对先有的文件生效 t1为用户
//默认权限
[root@iZbp10cdilkxcswm4l893lZ ~]# setfacl -m d:u:t1:rwx -R /tmp    //d 为默认权限,对/tmp目录下创建的新文件生效

最大有效权限mask

  • 就是对用户或来对比mask权限的交集. 默认最大权限为rwx
[root@iZbp10cdilkxcswm4l893lZ ~]# setfacl -m m:rx /tmp   //修改/tmp目录的mask权限为 rx 
[root@iZbp10cdilkxcswm4l893lZ ~]# getfacl /tmp
getfacl: Removing leading '/' from absolute path names
# file: tmp
# owner: root
# group: root
# flags: --t
user::rwx
user:t1:r-x
group::rwx			//effective:r-x    //交集所以用户组
mask::r-x            				//此处为修改后的mask权限

删除ACL权限

-b     		//删除ACL权限
-x():用户  //删除单个用户的ACL权限 

[root@iZbp10cdilkxcswm4l893lZ ~]# setfacl -x u:t1 /tmp   //删除指定用户和用户组的ACL权限

[root@iZbp10cdilkxcswm4l893lZ ~]# getfacl /tmp           //查看之前的赋予/tmp目录的权限 
getfacl: Removing leading '/' from absolute path names
# file: tmp
# owner: root
# group: root
# flags: --t
user::rwx
user:t1:rwx
user:t2:rwx
group::rwx
mask::rwx
other::rwx
default:user::rwx
default:user:t1:rwx
default:group::rwx
default:mask::rwx
default:other::rwx
[root@iZbp10cdilkxcswm4l893lZ ~]# setfacl -b /tmp       //删除/tmp目录下的所有权限
[root@iZbp10cdilkxcswm4l893lZ ~]# getfacl /tmp          //和上面对比发现所有权限被删除了
getfacl: Removing leading '/' from absolute path names
# file: tmp
# owner: root
# group: root
# flags: --t
user::rwx
group::rwx
other::rwx

sudo权限

  • 给普通用户授权部分可用命令
[root@iZbp10cdilkxcswm4l893lZ ~]# visudo    //进入sudo配置文件下
100 root    ALL=(ALL)       ALL
101 test1   ALL=(ALL)       /sbin/shutdown -r now        //表示赋予test1 用户 授权命令必须写绝对路径
//如果赋予组用户权限   组名前面加 “ % ”
[test1@iZbp10cdilkxcswm4l893lZ root]$ sudo -l                       //查看root赋予test1哪些权限
[sudo] password for test1:                                          //输入密码
Matching Defaults entries for test1 on iZbp10cdilkxcswm4l893lZ: 
ser test1 may run the following commands on iZbp10cdilkxcswm4l893lZ:
    (ALL) /sbin/shutdown -r now                                     //赋予权限如下
    
[root@iZbp10cdilkxcswm4l893lZ ~]# su test1                              //切换普通用户进行测试
[test1@iZbp10cdilkxcswm4l893lZ root]$ sudo shutdown -r now			   //要求你执行此命令要输入用户密码,之后就执行了此命令

//举例子:----------给普通用户 paaswd 权限可以修改root密码? 和给普通用户不能修改root密码-------------
可以修改root密码
[root@iZbp10cdilkxcswm4l893lZ ~]# visudo
test1   ALL=(ALL)       /usr/bin/passwd                    //此项能修改root密码建议不要使用
//-----------------------------------------------------------------------------
[root@iZbp10cdilkxcswm4l893lZ ~]# visudo  
test1   ALL=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd " " , !/usr/bin/passwd root    //正则表达式来禁止普通用户修改root密码
[test1@iZbp10cdilkxcswm4l893lZ ~]$ sudo passwd root        //切换到普通用户测试发现不能修改密码了
[sudo] password for test1: 
Sorry, user test1 is not allowed to execute '/bin/passwd root' as root on iZbp10cdilkxcswm4l893lZ.

文件特殊权限 setUID

SetUID功能

  • 只有可以执行的二进制程序才能设定SUID权限
  • 命令执行者要对该程序拥有x(执行)权限
  • 命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
  • SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

在这里插入图片描述

用法:

[root@iZbp10cdilkxcswm4l893lZ ~]# chmod u+s test   //增加SetUID 
[root@iZbp10cdilkxcswm4l893lZ ~]# chmod u-s test   //删除SetUID

在这里插入图片描述

SetGID

针对文件的作用

SetGID针对文件生效

  • 只有可执行的二进制程序才能设置SGID权限
  • 命令执行者要对该程序拥有x(执行)权限
  • 命令执行在执行程序的时候,组身份升级为该程序文件的属组
  • SetGID权限同样只在该程序执行过程中有效

针对目录的作用

  • 普通用户必须有对此目录拥有r和x权限,才能进入此目录
  • 普通用户在此目录中的有效组会变成此目录的属组
  • 若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组

文件特殊权限之Sticky BIT

粘着位(SBIT)只针对目录有效

  • 粘着位针对目录有效
  • 普通用户对该目录有w和x权限
  • 如果没有粘着位,普通用户拥有w权限,可以删除此目录下所有文件,如果有黏着位,普通用户只能删除自己的创建的文件,不能删除其他人的文件

设定文件特殊权限

特殊权限表示

  • 4表示 SUID

  • 2表示SGID

  • 1代表SBIT

在这里插入图片描述

[图]:赋予“ test ” 文件SBIT权限

设定文件系统属性chattr

语法:[root@localhost /]# chattr [+-=] [选项] 文件或目录名
选项   [+-=] 为增加、删除、等于某权限
    i     //对文件:不允许删除、改名、添加和修改数据   对目录:只能修改目录下文件的数据,不允许建立和删除文件
    a     //对文件 只能增加数据 其他不能   对目录 只允许修改和建立,不允许删除
    e     //Linux默认权限为e      表示该文件是使用ext文件系统进行存储的

查看文件系统属性lsattr

[root@localhost /]# lsattr -d test
----i-------------- test
选项
     -a     //显示所有文件和目录
     -d     //若目标是目录,仅列出目录本身的属性,而不是子文件的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值