第七章、用户和组管理
Linux 是一个多用户操作系统,用户(User) 和 组(Group) 是权限管理的核心机制,用于控制文件和系统资源的访问权限。
本章我们将讲解如下几个命令:
用户
Linux/UNIX 系统下,每个用户拥有独立的账户,用于登录系统、运行程序和管理文件。
每个用户有唯一的 用户ID(User ID 简写:UID),系统通过 UID 识别用户。
Linux/UNIX 用户存储 用户信息的文件是 /etc/passwd
前面我们已经讲过这个文件。
部分内容如下:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
此文件使用英文的冒号(:) 将文件分隔成了七列。
- 第一列是用户名:用于登录(如:root、weimingze)。
- 第二列是密码占位符:以前版本此处存放密码的哈希加密信息,现在用
x代替。密码的哈希加密信息现在已经放在了文件/etc/shadow中。 - 第三列是用户ID(UID):0 一定是 root用户(超级用户),1~999 为系统用户,1000及以上为普通用户(如: weimz 和 weimingze)。
- 第四列是主组ID(GID):在 Linux 中,一个用户可以在多个组中。但一个用户一定要有一个主组,而此整数代表主组的ID(即主组号)。
- 第五列是用户全名或备注(用于登录时显示等,相当于很多论坛的昵称)。
- 第六列是用户主文件夹(也称作主目录或家目录)的位置:用于存放此用户的数据文件,一般都放在
/home/文件夹下。 - 第七列是用户登录后所使用的 Shell,如:root 和 weimz 这几个用户都使用
/bin/bash作为默认的 Shell。
组
组是将用户归类,用户批量管理的工具,方便批量分配权限(如共享文件和设备给某个组)。
每个组有唯一的 组ID(Group ID 简写:GID)。
Linux/UNIX 用户存储 组 信息的文件是 /etc/group
部分内容如下:
root:x:0:
daemon:x:1:
...
此文件同样使用英文的冒号(:) 将文件分隔成了四列。格式是 组名:密码占位符:GID:成员列表。
- 第一列:组名
- 第二列:密码占位符
- 第三列:组ID(GID)
- 第四列:组内的用户,以英文的逗号分隔。,以英文的逗号分隔。
主组
主组(Primary Group):用户创建文件或文件夹时默认继承的组(每个用户必须属于一个主组)。
附加组
Linux/UNIX 用户可加入多个组,附加组是指用户加入的其他组,用于获取额外权限。
下面我们来介绍 用户和组相关的命令。先从组入手比较简单。
1. groups 命令
groups 命令用于显示当前用户属于哪几个组中。
命令格式:
$ groups [用户名]
主组名 附加组1 附加组2 ...
如果不给出 用户名 默认是获取当前用户的组。
如:
weimingze@mzstudio:~$ groups
weimingze adm cdrom sudo dip plugdev users lpadmin
weimingze 是 weimingze 用户的主组,adm、cdrom 等是 weimingze 加入的其附加组,比如 weimingze 加入的 cdrom 这个组,则这个用户就有 cdrom 这个组权限了。
练习:
- 使用 groups 命令查看当前用户都在哪几个组中?
- 切换到 root 用户,用 root 用户运行 groups 查看 root 用户在哪几个组中?