07Linux之权限管理

BamB00 2019-11-19 00:00:00
Categories: Tags:

0x01 ACL权限

概述: ACL是用于解决用户对文件身份不足的问题。

0x012 ACL权限是否开启

# dumpe2fs -h /dev/sda3 #dumpe2fs 是查询指定分区详细文件系统信息的命令
选项:
     -h 仅显示超级块中的信息,而不显示磁盘块组的详细信息

没有开启ACL要手动开启有两种方法

  1. 重新挂载根目录分区mount -o remount,acl /这种是临时的办法
  2. 通过修改/etc/fastab文件永久开启ACL权限

0x013 ACL基本命令

# getfacl 文件名 #查询文件的ACL权限
setfacl 选项 文件名  #设定ACL权限
选项:
    -m 设定ACL权限
    -b 删除所有ACL权限
    -x 删除指定用户ACL权限
    
模板:
setfacl -m u:用户名:权限 文件名
setfacl -m g:组名:权限   文件名
例子
setfacl -m u:user1:7 /test1
setfacl -m g:group1:rx -R /tset #-R递归
注意:
setfacl -m d:u:user1:rwx -R /test d是设置默认的ACL权限 而且只能对目录有效

0x014 ACL权限溢出

这也是为什么不能使用ACL代替普通的rwx权限的原因

ACL权限一旦递归之后,不可避免的出现权限溢出。

权限溢出的原因: 对目录来说 最低权限就是X这样才能打开目录进去访问,但是对文件来说最高权限也是X,这样在ACL递归的时候就会把目录和文件统一递归成X这样文件也有了执行权限。

0x015 最大有效权限mask

mask代表了acl能够赋予的最大权限,如果mask没有读权限 acl就不能赋予读权限

# setfacl -m m:rx /test1  #修改最大权限  m=mask

0x02 sudo授权

sudo 是给普通用户赋予部分管理员权限

赋予的权限越详细,普通用户得到的权限越少。赋予的权限越简单,普通用户得到的权限越大

visudo指令打开文件(/etc/sudoers)一般只有下面要修改的命令。

 ## Allow root to run any commands anywhere
 root    ALL=(ALL)       ALL
模块 含义
用户名或群组名 表示系统中的那个用户或群组,可以使用 sudo 这个命令。
被管理主机的地址 用户可以管理指定 IP 地址的服务器。这里如果写 ALL,则代表用户可以管理任何主机;如果写固定 IP,则代表用户可以管理指定的服务器。如果我们在这里写本机的 IP 地址,不代表只允许本机的用户使用指定命令,而是代表指定的用户可以从任何 IP 地址来管理当前服务器。
可使用的身份 就是把来源用户切换成什么身份使用,(ALL)代表可以切换成任意身份。这个字段可以省略。省略就是root权限
授权命令 表示 root 把什么命令命令授权给用户,换句话说,可以用切换的身份执行什么命令。需要注意的是,此命令必须使用绝对路径写。默认值是 ALL,表示可以执行任何命令。
# sudo -l 可以执行哪些命令权限

0x021 授权某用户可以添加其他用户

先上面添加 /usr/sbin/useradd /usr/bin/passwd

这样会授权用户可以任意修改所有的密码包括root所以要使他禁止修改某一些用户

![234](C:\Users\Qusi\Desktop\234.jpg)user1 ALL=/usr/sbin/useradd, /usr/bin/passwd [A-Za-z0-9], !/usr/bin/passwd root, !/usr/bin/passwd "",  #这个是给user1添加用户和更改密码的权限,但不允许更改自己和root的密码。

0x03 文件特殊权限

-rwsr-xr-x.   1 root root     32K Aug  8 23:10 su
---s--x--x.   1 root root    144K Oct 24 11:27 sudo

在·/usr/bin中

0x031 SetUID

0X0311 危险的SetUID

SUID更改身份是不需要密码的,例如给Vim赋予SetUID比赋予Sudo更加危险,它并不需要输入密码且没有任何限制,相当于一个root用户执行vim。

管理的时候SetUID建议:

  1. 尽量别手工赋予SetUID权限
  2. 关键目录及工具应严格控制写权限,例如“/”,“/sur”等
  3. 用户的密码要遵守密码三原则
  4. 对系统中默认应该具有SetUID权限的文件做一列表,定时检查有没有这之外的文件被设置了SetUID权限

0x032 SetGID

SGID即可对文件生效,也可以对目录生效,这和SUID有明显把不同,如果针对文件,SGID的含义如下。

针对目录的含义如下

SGID本身没什么大的风险,它的风险是必须给其他人7权限才可以使用。

0x033 SBIT

SBIT=sticky bit 粘着位,也称SBIT ,仅对目录有效

这个风险和SGID相同。

0x034 设定文件的特殊权限

  1. SUID 4
  2. SGID 2
  3. SBIT 1
#chmod 4755 test 其他类似

0x04 文件系统属性chattr权限

chattr 能够限制root用户(可以保护文件)

charre [+-=] [选项] 文件或目录名
选项:
    + : 增加权限
    - : 删除权限
    = : 等于某权限
    i : 如果对文件设置i属性,那不允许对文件进行删除,改名,也不能增加或修改数据。如果对目录操作,那么只能修改目录下的数据,但不允许建立和删除文件。
    a : 如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除和修改数据。如果对目录设置a权限,那么只允许在目录中建立和修改文件,不能删除。
    e : Linux中绝大多数文件都是默认e属性。表示该文件是使用ext文件系统进行存储的,而且不能使用"chattr -e "删除e属性

查看chattr权限

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

0x05 总结

六种常规权限

  1. rwx
  2. umask
  3. acl
  4. sudo
  5. suid/sgid/sbit
  6. chattr