概览
linux 提供了丰富的安全系统, 提供访问控制、审计、网络控制等服务。
访问控制
- UGO
- PAM
- selinux
- apparmor(ubuntu default)
- ACL
- chattr/lsattr
- ulimit
审计
- audit
网络控制
- iptables
- firewall
UGO
linux 是一个多用户操作系统, 某用户对其他用户文件的访问应该是被控制的, 否则会引起误删, 篡改, 窥探等问题。为了解决这个问题, linux 引入 UGO 机制, 使得文件对用户有不同的访问属性。
每个文件有以下示例类似的信息
- rw- rw- --- count_linked_to_inode user group
ugo 机制正是基于此设计访问控制:
- 判断当前用户属于 user 、group, 还是 other, 据此获取访问属性
- 根据文件类型和访问属性判断是否有权执行某个动作
对文件可以执行的动作
- 读
- 写
- 执行
- 删除
- 重命名
- 复制
- 进入
- 列出子项
- 增删子项
访问属性
访问属性有三种:
- r
- w
- x(s/t)
分别对应 读、写、执行, 为了获得特殊的访问控制(suid, guid, sbit), 执行位也可以是 s 或者 t。
权限 | 出现位置 | 执行位标识 | 用途 |
---|---|---|---|
suid | —here,---,--- | s S | 对可执行文件有效,授权执行权利 |
guid | ---,—here,--- | s S | 对可执行文件效果同 suid, 对目录, 该目录下文件自动归于目录相同的组 |
sbit | ---,----,—here | t T | 对目录有效,限制删除移动其他用户的文件 |
rwx 属性对不同类型的文件有不同的意义
-tx- | 文件类型| 操作 ||||||||||||||||||| | | 读(cat) ||写(编辑)||执行|| 进入(cd)||列出子项(ls)||增删子项(touch, rm)||复制||删除||移动|| | |文件|文件夹|文件|文件夹|文件|文件夹|文件|文件夹|文件|文件夹|文件|文件夹|文件|文件夹|文件|文件夹|文件|文件夹| | :--------------: | :-----: | :-----: | | 普通文件 | rw?x?| 用不到|rwx?|用不到|rw?x|用不到|用不到||||||rw?x?|r?wx|r?w?x?|r?wx(rwx)|r?w?x?|r?wx| | 目录文件 | 用不到 ||||||用不到|r?w?x|用不到|rw?x?|用不到|r?wx|rw?x?|r?wx|r?w?x?|r?wx(rwx)|r?w?x?|r?wx| [权限]
- 删除文件, 删除根目录则需要遍历文件夹权限, 故文件夹权限为 rwx
- 同用户和同卷移动不改变文件属性
umask
可用 umask 查看和执行当前用的掩码, 以指定 ugo 默认权限。
-tx- |用户|最高权限||掩码| | |文件 |文件夹 | | |=|=|=|=| |一般|666|777|0002| |root|644|755|0022| [umask]
文件归属
每个文件都有一个所属用户和所属用户组, 因此 UGO 机制下, 文件对三类用户有不同的访问属性, 分别为:User, Group, Other。Other 是除去所属用户和所属用户组中用户之外的其他用户。