第七章、用户和组管理

Linux 是一个多用户操作系统,用户(User) 和 组(Group) 是权限管理的核心机制,用于控制文件和系统资源的访问权限。

本章我们将讲解如下几个命令:

  1. groups 命令
  2. groupadd 命令
  3. groupdel 命令
  4. useradd 命令
  5. usermod 命令
  6. userdel 命令
  7. passwd 命令
  8. id 命令
  9. who 命令

用户

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
... 

此文件使用英文的冒号(:) 将文件分隔成了七列。

  1. 第一列是用户名:用于登录(如:root、weimingze)。
  2. 第二列是密码占位符:以前版本此处存放密码的哈希加密信息,现在用 x 代替。密码的哈希加密信息现在已经放在了文件 /etc/shadow 中。
  3. 第三列是用户ID(UID):0 一定是 root用户(超级用户),1~999 为系统用户,1000及以上为普通用户(如: weimz 和 weimingze)。
  4. 第四列是主组ID(GID):在 Linux 中,一个用户可以在多个组中。但一个用户一定要有一个主组,而此整数代表主组的ID(即主组号)。
  5. 第五列是用户全名或备注(用于登录时显示等,相当于很多论坛的昵称)。
  6. 第六列是用户主文件夹(也称作主目录或家目录)的位置:用于存放此用户的数据文件,一般都放在 /home/ 文件夹下。
  7. 第七列是用户登录后所使用的 Shell,如:root 和 weimz 这几个用户都使用 /bin/bash 作为默认的 Shell。

组是将用户归类,用户批量管理的工具,方便批量分配权限(如共享文件和设备给某个组)。

每个组有唯一的 组ID(Group ID 简写:GID)。

Linux/UNIX 用户存储 组 信息的文件是 /etc/group

部分内容如下:

root:x:0:
daemon:x:1:
...

此文件同样使用英文的冒号(:) 将文件分隔成了四列。格式是 组名:密码占位符:GID:成员列表

  1. 第一列:组名
  2. 第二列:密码占位符
  3. 第三列:组ID(GID)
  4. 第四列:组内的用户,以英文的逗号分隔。,以英文的逗号分隔。

主组

主组(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 这个组权限了。

练习: