一. 用户组
前面章节知道用户账户在控制单个用户安全性方面很好, 但涉及到共享资源或把用户类型分组时, 组概念就出来了. 组权限允许多个用户对系统中的对象 (比如文件, 目录, 设备等) 共享一组共用的权限. 在 CentOS 中创建一个用户会为该用户单独创建一个组, 这样可以更安全一些.
1.1 /etc/group 文件
与用户一样, 组信息也保存在系统的一个文件中./etc/group 文件包含系统上用到的每个组的信息. 如下图所示:
GID 在 500 以内属于系统账户, 而用户组的 GID 则从 500 开始分配(好像不同发布版有所不同). 上面有三个字段: 组名, 组密码, GID. 组密码是允许非组内成员通过组密码临时成为该组成员, 但这功能并不常用. 创建组时不能直接通过 / etc/group 文件来添加用户到一个组, 要用 usermod 命令, 上篇有讲到该命令.
1.2 创建新组 groupadd
下面使用 groupadd 命令在系统上创建新组(gtest), 如下图所示:
在创建新组后, 默认没有用户被分配到该组下, 使用 usermod 或 useradd 都可以将用户分配到指定组: 例如之前安装 MySQL 时, 使用 useradd 来创建 MySQL 用户, 并指定到 MySQL 组中. 如下图所示:
下面使用 useradd 来创建用户 gtest1 和 gtest2, 指定到 gtest 组 8001 中, 如下图所示:
1.3 修改组
修改组使用 groupmod 命令可以修改已有组的 GID(-g 选项)或组名(-n 选项). 当修改组名时, gid 和组成员不变, 只有组名改变, 由于所有安全权限都是基于 GID 的, 所以随变修改组名不会影响文件的安全性. 下面使用 groupmod -n 来修改 gtest 组名为 gtest1.
二. 文件权限
在了解用户和组之后, 下面来解读文件权限, 通过 ls 命令输出来介绍分析. 下面随意定位在个目录下.
上面结果第一列, 就是描述文件和目录权限的编码. 第一列的第一个字符分别代表了对象的类型:
(1) - 代表文件
(2) d 代表目录
(3) l 代表链接
(4) c 代表字符型设备
(5) b 代表块设备
(6) n 代表网络设备
第一列之后有 3 组三字符的编码, 每一组定义了 3 种访问权限, 没有权限是单破折线:
(1) r 代表对象是可读的
(2) w 代表对象是可写的
(3) x 代表对象是可执行的
上面 3 组权限分别对应对象的 3 个安全级别: 对象的属主, 对象属组, 系统其它用户
例如: rwxr-xr-x 这样一组. 前三个字符 (rwx) 是对象的属主权限 (用户 hsr), 中间三个字符(r-x) 是对象属组的权限 (组 hsr 下的用户), 后面三个字符(r-x) 是系统其它用户权限.
在上面这一组权限中, 属组和其它用户对该文件没有写入权限, 只有读和执行权限.
来源: https://www.cnblogs.com/MrHSR/p/9691398.html