Linux权限管理

发布时间:2024年01月17日

1.ACL权限

1.1ACL概述

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

1.2开启ACL

dumpe2fs -h /dev/sda3

#dumpe2fs命令是查询指定分区详细文件系统信息的命令

选项:?????????

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

如果没有开启, 手工开启分区的ACL权限:

mount -o remount, acl /

也可以通过修改/etc/fstab文件, 永久开启ACL权限

vim /etc/fstab

UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2? /? ext4? defaults, acl

mount -o remount /

1.3ACL基本命令

getfacl 文件名: 查询文件的ACL权限

setfacl 选项 文件名: 设定ACL权限

选项:????????
? ? ? ? -m: 设定ACL权限
? ? ? ? -b: 删除ACL权限
? ? ? ? -x:用户? ? ? ?删除单个用户的ACL权限

setfacl -m u:用户名:权限 文件名

setfacl -m g:组名:权限 文件名

setfacl -m d:u:用户名:权限 -R 目录: ACL默认权限, 只对以后新建的文件生效

1.4最大有效权限mask

setfacl -m m:rx 文件/目录

1.5删除ACL权限

setfacl -x u:用户名 文件或目录: 删除文件或目录的ACL权限

setfacl -b 目录或文件: 删除文件的所有ACL权限

2.sudo

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

在/usr/sbin/下的命令只有超级用户才能使用, 我们使用这个命令来使普通用户执行部分超级用户才能执行的命令

2.1root身份

visudo赋予普通用户权限命令, 命令执行后和vi一样使用

root? ? ? ? ? ?ALL=(ALL)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ALL

#用户名? ? 被管理主机的地址=(可使用的身份)? ? ?授权命令(绝对路径)

# %where? ? ? ? ? ALL=(ALL)? ? ? ? ? ? ? ? ?ALL

#%组名? ? ? ? ? ? ?被管理主机的地址=(可使用身份)? ? ? 授权命令(绝对路径)

  • 用户名/组名: 代表root给哪个用户或用户组赋予命令, 注意组名前加"%"
  • 用户可以用指定的命令管理指定IP地址的服务器. 如果写ALL, 代表可以管理任何主机; 如果写固定的IP, 代表用户可以管理指定IP地址的服务器(这个IP地址表示你可以管理哪个主机的IP地址, 只看查看man 5 sudoers
  • 可使用身份: 就是把来源用户切换成什么身份使用. (ALL)代表可以切换成任意身份
  • 授权命令: 代表root把什么命令授权给普通用户. 默认时ALL代表任何命令. 注意命令写成绝对路径

2.2举例

1)授权user1可以重启服务器, 则root用户的操作是:

visudo? ? ? ? 编辑相关文件

user1? ? ?ALL=(ALL) /sbin/shutdown -r now

sudo -l? ? ? ?查看可用的授权

2)授权user1用户可以添加其他普通用户

visudo? ? ? ?编辑相应的文件

user1 ALL=(ALL) /usr/bin/useradd

user1 ALL=(ALL) /usr/bin/passwd [A-Za-z]*, !/user/bin/passwd "", !/usr/bin/passwd root

3.文件特殊权限SetUID, SetGID, Sticky BIT

3.1SetUID

1)SetUID是什么

SetUID的功能可以这样理解:

  • 只有可以执行二进制程序逞能设定SUID权限
  • 命令执行者要对程序拥有x(执行)权限
  • 命令执行者在执行该程序时获得该程序文件属主的身份(其他用户在执行此文件时, 可以以文件所有者的身份进行执行)
  • SetUID权限只在程序执行过程中生效, 当程序执行结束身份失效

2)举例

/usr/bin/passwd命令拥有特殊权限SetUID, 也就是属主的权限位的执行权限上是s. 可以这样这样理解它: 当一个具有执行权限的文件设置SetUID权限后, 用户执行这个文件时将以文件所有者的身份执行. /usr/bin/passwd命令就具有SetUID权限, 所有者为root. 当普通用户使用passwd更改自己密码的时候, 那一瞬间就能以超级用户的身份进行执行, 并修改相应的文件(如果没有SetUID的权限, 用户无法修改文件, 从而无法修改自身的密码), 当命令执行结束后, 身份也会随之消失

3)危险的SetUID

如果我们将/usr/bin/vim中的文件修改成SetUID, 那么其他用户都能修改任何文件, 这是很危险的

4)几点注意事项

  • 因为SetUID能让其他用户以属主(root)的身份执行此文件, 所以我们对它进行管理, 防止滥用. 可以对系统中默认的SetUID权限的文件做一个列表, 定期检查是否有新的文件有此权限, 从而防止滥用
  • 如果文件没有执行权限, 我们"chmod u+s 文件名", 我们会发现权限模式是"rwSr--r--"是大S, 是不能以属主的身份执行的
  • SetUID只能针对文件

3.2SetGID

1)针对文件的作用

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

当普通用户(如user1)执行locate命令时, 会发生如下事情:

  • /usr/bin/locate是可执行二进制程序, 可以赋予SetGID
  • 执行用户需要对它有执行的权限
  • 执行命令时, 其他用户的组身份会升级为slocate, 并去/var/lib/mlocate/mlocate.db文件中查找相应的信息
  • 命令结束后, 组身份又会变为有效组的身份

2)针对目录的作用

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

3.3文件特殊权限之Sticky BIT

Sticky BIT粘着位, 也称为SBIT. 这个只能针对目录

  • 目前只针对目录有效
  • 普通用户对该目录拥有w和x权限
  • ?普通用户只能针对这个目录中自己创建的文件才有删除权力

举例: 比如班级的老师创建了一个目录/test, 需要全班的同学(是一组)在这个目录中进行提交, 此时我们只能提交或修改自己的作业, 不能删除其他人的作业

3.4设定文件特殊权限

  • 4代表SUID
  • 2代表SGID
  • 1代表SBIT

4.文件系统属性chattr权限

4.1命令格式

chattr [+-=] [选项] 文件或目录名

选项:

? ? ? ? +: 增加权限

? ? ? ? -: 删除权限

? ? ? ? =: 赋予权限

? ? ? ? i: 如果对文件设置i属性, 那么不允许对文件进行删除, 改名, 也不能添加和修改数据; 如果对目录设置i属性, 那么只能修改目录下文件数据, 但不允许建立和删除文件

? ? ? ? a: 如果对文件设置a属性, 那么只能在文件中增加数据, 但是不能删除也不能修改数据; 如果对目录设置a属性, 那么值允许在目录中建立和修改文件, 但是不允许删除

? ? ? ? e: Linux中绝大多数文件都默认拥有e属性. 表示该文件是使用ext文件系统进行储存的, 而且不能使用"chattr -e"命令取消e属性

4.2查看文件系统属性lsattr

lsattr 选项 文件名

[选项]

? ? ? ? -a: 显示所有文件和目录

? ? ? ? -d: 如果是目录, 仅列出目录本身的性质, 而不是子文件的

4.3举例

i属性

a属性

文章来源:https://blog.csdn.net/fengxia110/article/details/135626147
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。