权限管理

一、权限管理

1.ACL权限

ACL权限简介与开启

ACL权限是为了解决所有者,所属组,其他人三个权限用户身份分配不足的问题

  • dumpe2fs -h [分区]
    dumpe2fs命令是查询指定分区详细文件系统信息的命令

    -h :仅显示超级块中信息,而不显示磁盘块组的详细信息

  • 临时开启分区ACL权限
    mount -o remount,acl / 重新挂载根分区,并挂载加入acl权限

  • 永久开启分区ACL权限

    • vim /etc/fstab (是系统开机自动挂载的文件)
      UUID=59d9ca7b-4f39-4c0c-9334-c56c182076b5 / ext4 defaults 1 1,在ext4后面的 defaults加,acl 成为,UUID=59d9ca7b-4f39-4c0c-9334-c56c182076b5 / ext4 defaults,acl 1 1,然后输入:mount -o remount /,重新挂载文件系统或重启系统,使修改生效。

    • 注意:Linux现在一般所有分区全部默认开启ACL,不用修改配置

ACL权限查看与设定

  • getfacl 文件名 ----------查看ACL命令 查看ACL权限
  • setfacl [选项] 文件名
    • -m:设定ACL权限
      例子:
      • setfacl -m u:st:rx /tmp/project -----给用户设定ACL权限读和操作,使用u:用户名:权限
      • setfacl -m g:tg1:rwx /tmp/project -----给用户组设定ACL权限读,写和操作g:组名:权限
    • -x:删除指定的ACL权限
    • -b:删除所有的ACL权限
    • -d:设定默认的ACL权限
    • -k:删除默认ACL权限
    • -R:递归设定ACL权限

ACL权限最大有效权限与删除

  • 最大有效权限mask
    mask是用来指定最大有效权限的。如果给用户赋予了ACL权限,是需要和mask 的权限“相与”才能得到用户的真正权限
  • setfscl -m m:rx 文件名
    设定mask权限为r-x。使用“m:权限”格式
    目的:为了防止用户或者用户组给的权限过高,提前设定
  • 权限的删除
    • setfacl -x u:用户名 文件名 删除指定用户的ACL权限
    • setfacl -x g:组名 文件名 删除指定用户组的ACL权限
    • setfacl -b 文件名 会删除文件的所有ACL权限

ACL权限默认与递归

  • 递归ACL权限
    递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限
    命令:setfacl -m u:用户名:权限 -R 目录名 -R必须在这个位置

  • 默认ACL权限
    默认ACL权限的作用是如果给父目录设定默认ACL权限,那么父目录中所有建的子文件和子目录都会继承父目录的ACL权限
    命令:

  • Setfacl -m d:u:用户名:权限 目录名 可以在权限后面加-R来进行递归

2.文件特殊权限

SetUID

  • 只有可以执行的二进制程序才能设定SUID权限,普通文件或者目录没有意义

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

  • 命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

    例子:
    passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码

    • 设定SetUID的方法

      • chmod 4755 文件名 4代表SUID权限
      • chmod u+s 文件名
    • 取消SetUID的方法

      • chmod 755 文件名

      • chmod u-s 文件名

        如果用户对文件没有执行权限,就会报错,此时给他加特殊权限,就会显示大S

  • 危险的SetUID
    关键目录应当严格控制写权限。比如:“/”,“/usr”等
    用户的密码设置要严格遵守密码三原则
    对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限

SetGID

  • SetGID针对文件

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

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

    • 命令执行在执行程序的时候,组身份升级为该程序文件的所属组,SetGID权限同只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效

      例子:
      locate 命令拥有SetGID权限,所以普通用户可以使用locate来查询

      • 设定SetUID的方法
        • chmod 2755 文件名 2代表SGID权限
        • chmod g+s 文件名
      • 取消SetUID的方法
        • chmod 755 文件名
        • chmod g-s 文件名
  • SetGID针对目录

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

Sticky BIT

SBIT粘着位作用

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

设定粘着位的方法

  • chmod 1755 目录名 1代表粘着位
  • chmod o+t 目录名

取消粘着位的方法

  • chmod 755 目录名
  • chmod o-t 目录名

3.文件系统属性chattr权限

chattr命令格式

  • chattr [+ - =] [选项] 文件名或者目录名
    • +:增加权限
    • -:删除权限
    • =:等于某权限
    • i:如果对文件设置i属性,那么不允许对文件进行删除,改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但是不允许建立和删除文件(对root也生效)
    • a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除或者修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除文件

查看文件系统属性

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

4.系统命令sudo权限

sudo权限

  • root把本来只能超级用户执行的命令赋予普通用户执行
  • sudo的操作对象是系统命令

sudo使用

  • visudo 实际修改的是/etc/sudoers文件
    • root ALL=(ALL) ALL
      用户名 被管理主机的地址=(可使用身份) 授权命令(绝对路径)
    • %wheel ALL=(ALL) ALL
      %组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
      被管理主机的地址:本机IP或者ALL,限制的不是来源IP,而是访问IP
例子:
授权用户可以可以重启服务器
visudo
yangyang ALL= /sbin/shutdown –r now

sudo -l 查看可用的sudo命令
sudo [授权命令的绝对路径] 普通用户执行sudo赋予的命令
例子:
sudo /sbin/shutdown -r now
posted @ 2021-01-21 15:42  豆子V  阅读(226)  评论(0编辑  收藏  举报