2.4 用户和组群管理

Linux是一个真正的多用户、多任务操作系统,它允许多个用户同时登录到系统上使用系统资源。系统根据账户来区分每个用户的文件、进程、任务,给每个用户提供特定的工作环境(如用户的工作目录、shell版本以及X-Windows环境的配置等),使每个用户的工作都能独立、不受干扰地进行。Linux将同一类型的用户归为一个组群,可通过设置组群的权限来批量设置用户的权限。Linux系统进行用户和组管理的目的是保证系统中用户的数据和进程的安全。

2.4.1 用户

Linux上的用户账户有普通用户账户和超级用户账户两种。

● 普通用户账户:普通用户账户只能访问其拥有的或者有权限执行的文件。

● 超级用户账户(root):管理员在系统上的任务是对普通用户和整个系统进行管理。管理员账户对系统具有绝对的控制权,能够对系统进行一切操作。

每一个用户都由一个唯一的身份来标识,这个标识叫作用户ID。系统中的每一个用户也至少需要属于一个“用户组”。

2.4.2 Linux环境下的用户系统文件

在Linux系统中,默认情况下,所有账户的相关信息都记录在/etc/passwd文件里,密码记录在/etc/shadow文件中。

1./etc/passwd

/etc/passwd每行定义一个用户账户,此文件对所有用户可读。一行又划分为多个字段定义用户账号的不同属性,各字段间用“:”分隔。其具体格式:

1)用户账号为用户登录系统时使用的用户名,在系统中是唯一的。

2)用户密码为存放的加密口令,口令都显示为x,这表明用户的口令是被/etc/shadow文件保护的。

3)用户ID(UID)用来在系统内部标识用户,每个用户的UID都是唯一的,root用户的UID号是0,普通用户从500开始,1~499是系统的标准账户。

4)用户组ID用来在系统内部标识用户所属的组。

5)注释性描述用于存放的用户全名等信息。

6)宿主目录为用户登录系统后所进入的目录。

7)用户使用的shell为指示该用户使用的shell,Linux默认的是bash。

使用head命令可以查看/etc/passwd文件的前10行内容。该命令的一般格式:

结果如图2-24所示。

图2-24 /etc/passwd文件的前10行内容

2./etc/shadow

/etc/passwd文件对任何用户均可读,为了增加系统的安全性,用户的口令通常用shadow passwords保护。/etc/shadow只对root用户可读。在/etc/shadow文件中保留的是采用MD5算法加密的口令。

使用head命令可以查看/etc/shadow文件的前10行内容。该命令的一般格式:

结果如图2-25所示。

图2-25 /etc/shadow文件的前10行内容

/etc/shadow文件的各字段解析见表2-1。

表2-1 /etc/shadow文件中各字段的解析

2.4.3 Linux环境下的用户组及用户组系统文件

组是用户的集合。在系统中,组有私有组和标准组两种。当创建用户时,如果没有为其指定属于哪个组,Linux就会建立一个和用户同名的私有组,此私有组中只含有该用户。若使用标准组,则在创建新用户时为其指定属于哪个组。

和用户组有关系的文件是/etc/group和/etc/gshadow。

1./etc/group

group文件中的每一行内容表示一个组群的信息,各字段之间用“:”分隔。使用head命令可以查看/etc/group文件的前10行内容。该命令的一般格式:

结果如图2-26所示。

图2-26 /etc/group文件的前10行内容

/etc/group文件的各字段解析见表2-2。

表2-2 /etc/group文件中各字段的解析

2./etc/gshadow

/etc/gshadow是用户组密码文件。使用head命令可以查看/etc/gshadow文件的前10行内容。该命令的一般格式:

结果如图2-27所示。

图2-27 /etc/gshadow文件的内容

/etc/gshadow文件的各字段解析见表2-3。

表2-3 /etc/gshadow文件中各字段的解析

2.4.4 管理用户和用户组的命令

1.用户管理

(1)添加用户

(2)更改当前登录用户口令

(3)删除用户

(4)更改用户属性

(5)查看用户信息

(6)指定账户过期时间

2.用户组管理

(1)用户组文件位置

(2)添加用户组

(3)添加用户时指定用户组

(4)删除用户组

(5)更改用户属组