Linux入门基础——特殊权限

权限管理

ACL权限

ACL权限主要用来解决用户对文件的身份不足的问题

在centos7中,默认使用的是xfs文件系统,并且ACL权限是默认开启的。如果想要通过命令查看,ext文件系统的dumpe2fs并不适用,查看xfs文件系统的xfs_info命令也无法查看ACL信息,如果一定要查看ACL状态:

[root@localhost ~]# dmesg | grep ACL
[    0.627775] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[    1.781830] SGI XFS with ACLs, security attributes, no debug enabled

如果你的系统没有默认开启ACL权限,那么你可以mount -o remount,acl/手工挂载,也可以修改*/etc/fatab/*文件设置自动挂载

ACL权限设置
[root@localhost ~]#getfacl 文件名
#查看文件的ACL权限

[root@localhost ~]# setfacl [选项] 文件名
	-m:设定ACL权限,u:用户名:权限、g:组名:权限
	-x:删除指定的ACL权限
	-b:删除所有的ACL权限
	-d:设置目录的默认ACL权限,意思是这个命令之后所有新建的文件都具有此ACL权限
	-k:删除默认ACL权限
	-R:递归设定ACL权限,给目录下所有的文件设定ACL权限,包括命令之前的文件

ACL权限在设置默认和递归后极其容易造成权限溢出

最大有效权限mask

在使用getfacl命令查看文件的ACL权限时,有一项mask最大有效权限,所赋予的ACL权限必须在mask之内,最终生效的权限就是你所设定的ACL权限和mask相*“与”*,所以一般mask权限都设置为“rwx”

mask也是可以修改的:

[root@localhost ~]# setfacl -m m:rx project/
#设定mask权限为r-x
[root@localhost ~]# getfacl project/
# file: project/
# owner: root
# group: root
user::rwx
group::r-x
mask::r-x
other::r-x

文件特殊权限-SUID权限

Set UID,简称为SUID的特殊权限。那么区别与rwx这个SUID的特殊权限的作用究竟是什么,它特殊在哪里?

  • SUID仅对二进制程序有效
  • 执行者对于该程序需要有x的可执行权限
  • 本权限仅仅在执行该程序的过程中有效
  • 执行者将对该程序拥有属主的权限

举个例子

[root@localhost ~]# ll /etc/shadow
---------- 1 root root 1139 Sep 20 19:36 /etc/shadow

对于*/etc/shadow*文件,我们可以发现这个文件的权限区别于其他,也就是说这个文件之有超级用户root才有权限进行操作,而普通用户ajin想要修改密码时:

[ajin@localhost ~]$ ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /usr/bin/passwd

普通用户对于*/usr/bin/passwd文件拥有执行权限,说明它可以修改自己的密码。同时我们发现/usr/bin/passwd的有SUID特殊权限,既然普通用户可以修改自己的密码,那么它又是如何修改/etc/shadow*里的内容呢?

事实上,普通用户在执行passwd命令时,ajin会暂时获得root的权限就相当于是root在修改影子文件,这就是SUID文件的特殊之处。

在这里插入图片描述

文件特殊权限-SGID权限

Set GID,简称为SGID的特殊权限。

  • 只有可执行二进制程序才能设置SGID权限

  • 命令执行者要对该程序拥有执行(x)权限

  • 命令执行者在执行程序的时候,组身份升级为该可执行程序文件的属组

  • SGID权限只在该程序执行过程中有效,也就是组身份只在程序执行过程中发生改变,命令结束用户组身份恢复.

举个例子:

[root@localhost ~]# ll /usr/bin/locate 
2 -rwx--s--x. 1 root slocate 35548 Sep 24  2012 /usr/bin/locate   
#拥有SGID权限,普通用户执行该命令时,组身份会切换到slocte

使用locate命令查找文件时,实际是在/var/lib/mlocate/mlocate.db数据库中查找

普通用户使用locate命令可以查找文件是因为执行locate命令时组身份切换到该目录所属组slocate

SGID针对目录的作用

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

文件特殊权限-SBIT权限

Sticky BIT,简称SBIT权限,可意为粘着位、粘滞位、防删除位等。

SBIT仅对目录有效,目录设定了 SBIT 权限,则用户在此目录下创建的文件或目录,就只有自己和 root 才有权利修改或删除该文件。

举个例子,Linux 系统中,存储临时文件的 /tmp 目录就设定有 SBIT 权限:

[root@localhost ~]# ll -d /tmp
drwxrwxrwt. 4 root root 4096 Apr 19 06:17 /tmp

如果一个目录设定有SBIT权限,那么属组或其他的用户只能操作自己创建的文件或目录,而无法修改甚至删除其他用户创建的文件或目录。

文件系统属性-chattr权限

[root@localhost ~]#chattr [+ - =] [选项] 文件或目录名
	-i : 如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。(相当于把文件给锁住了,对root也有作用)
	-a : 如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除文件。

查看文件系统属性

[root@localhost ~]# lsattr 选项 文件名
	-a:显示所有文件和目录
	-d:若目标是目录,仅列出目录本身的属性,而不是子文件的。

系统命令-sudo权限

在一些情况下,普通用户需要执行一些超级用户才能执行的命令,而sudo权限就是把root用户的权限赋予给普通用户执行,通过sudo来调用。

我们想要给普通用户赋予权限,首先要通过visudo来设置sudo,实际上修改的就是/etc/sudoers这个文件

[root@localhost ~]# visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
ajin    ALL=(ALL)       ALL
#赋予的权限越详细,普通用户所获得的权限就越小,所受到的限制就越多。

普通用户在使用sudo权限是要在命令前面加上sudo

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿瑾~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值