Linux之权限管理

这里有几个方面

  • ACL权限
  • 文件特殊权限
  • 文件系统属性chattr权限
  • 系统命名sudo权限

1 ACL权限

专门用于解决身份不足的问题,如所有者,所属组,其它人。这只有三个身份,对于实际复杂实际问题,是不够的。ACL权限可以对某个文件针对单个用户进行权限分配。但是ACL权限和分区有关,dumpe2fs -h /dev/sda3可以查看sda3这个分区是否支持ACL权限。如果这个命令输出中包含Default mount options: user_xattr acl.说明分区支持ACL,分区默认都支持ACL。

如果分区不支持ACL的话,可以去开启它。有两种类型的命令
1 临时开启命令 如开启根目录:mount -o remount,acl /,这个命令表示重新挂载根分区,并挂载加入ACL权限。
2 永久开启ACL权限。修改/etc/fstab文件,这个文件是系统开机自动挂载文件,在其中的default后面加逗号和acl(如果写错系统会崩溃)
如:default,acl

可以通过getfaclsetfacl来查看和设置文件的acl权限。格式如下:

getfacl 文件名

setfacl 选项 文件名

  1. -m 设定ACL权限,如:setfacl -m u:username:rw表示给用户username设置读写权限。如果是setfacl -m g:groupname:rw则表示给组groupname设置读写权限。如果是setfacl -m m:rw表示给最大权限读和写。
  2. -x 删除指定ACL权限
  3. -b 删除所有ACL权限
  4. -d 设定默认acl权限,如serfacl -m d:u:用户名:权限 文件名,默认acl权限,那么父目录中所有的新建目录的子文件都会继承父目录的acl权限。
  5. -k 删除默认acl权限
  6. -R 递归设定acl权限

最大有效权限,mask是用来指定最大有效权限,如果给用户赋予了ACL权限,是需要和mask的权限相与,才能得到用户的真正的权限。

2 文件特殊权限

分为三个部分,SetUID,SetGID,Sticky BIT.如下面的命名:
$ ll /usr/bin/passwd -rws-xr-x. 1. root root 2323 Apr & 2020 /user/bin/passwd
SetUID、SetGID和Sticky BIT分别对应U,G,O的rws.

2.1 对于SetUID的功能,

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

passwd命令拥有SetUID的 权限,所以普通用户可以修改自己的密码;cat没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容。

设定SetUID的方法
4代表SUID,如chmod 4755 文件名或者chmod u+s 文件名,如果要取消SetUID,直接使用chmod 755 文件名或者chmod u-s 文件名即可。

2.2 对于SetGID的功能

对于目录的作用

  • 普通用户必须对此目录拥有r和x权限,才能进入此目录。
  • 普通用户在此目录中的有效组会变成此目录的属组
  • 若普通用户对此目录拥有w权限,新建的文件的默认属组是这个目录的属组。(见b站的12分到13分钟视频

对于文件的作用

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

例子为下面的命令

ll /usr/bin/locate
-rwx--s--x 1 root slocate 2323232 8月 23 2020 /usr/bin/locate

2代表SGID,如chmod 2755 文件名或者目录名,也可以通过chomod g+s 目录名或者文件名来给目录或者文件加SGID权限。

2.3 SBIT粘着为的作用

  • 粘着位目前只对目录有效
  • 普通用户首先应该对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限
  • 如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件,一段赋予了粘着位,除了root用户可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。

1代表SBIT,如chmod 1644 目录名或者chmod o+t 目录名用来设置粘着位,只能root用户才能赋予此权限;chmod 777 目录名或者chmod o-t 目录名表示取消粘着位。

3 文件系统属性ahattr权限

chattr的命令格式为
chattr [-+=] [选项] 文件或者目录名, +表示增加权限,- 表示删除权限,= 表示等于某权限。
选项包含

  • i,如果文件设置i属性,那么不允许对文件进行删除,改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件,root用户也会被限制
  • a,如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除数据也不能修改数据;如果对目录设置a权限,那么只允许在目录中建立和修改文件,但是不允许删除。

查看文件系统属性
# lsattr 选项 文件名,选项有

  • -a,显示所有文件和目录
  • -d,若目标是目录,仅列出目录本身的属性,而不是子文件的属性。

4 系统命令sudo权限

root把一部分本来只能有超级用户执行的命令赋予普通用户执行,sudo的操作对象是系统命令(/usr/sbin/目录下或者/sbin/目录下的命令)。
sudo的使用
使用命令visudo,这个命令实际修改的是/etc/sudoers文件,这个文件中的内容截取如下

# 下面表示:被赋予权限的用户名 被管理的主机的地址=(可使用身份) 授权的命令(需要绝对路径)
username ALL=(ALL) ALL
# 下面表示:被赋予权限的组名 被管理的主机的地址=(可使用身份) 授权的命令(需要绝对路径)
%groupname ALL=(ALL) ALL
# 下面是一个例子表示,管理员赋予用户sc在任何被访问ip主机上执行`/sbin/shutdown -r now`命令。
# 上面的命令写的越简单,sc的权限越大,如果写的具体,那么只能执行这个具体的命令。
sc ALL=/sbin/shutdown -r now
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值