Linux 用户管理知识与应用实践
本章将深入讲解用户管理的知识,并带领小伙伴们实践 Linux 运维中有关用户管理的工作。
一、用户及用户组配置文件介绍
在 Linux 系统中创建、增加,以及删除用户和用户组,实际上都是修改系统中对应的文件,因此有必要熟悉一下与用户和用户组相关的重要文件知识。
在 Linux 系统中,与用户和用户组直接相关的文件主要有 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 这四个文件,下面分别详细阐述。
1、Linux 系统用户相关的配置文件
在 Linux 系统中,与用户相关的配置文件主要包含如下两个:
/etc/passwd 存储用户信息的文件。
/etc/shadow 存储用户密码信息的文件。
A. 存储用户信息的文件 /etc/passwd
/etc/passwd 文件是 Linux 中的重要系统文件之一,主要作用是存储系统用户的信息,文件中的每一行表示一个用户信息,有多少行就表示存在多少个用户信息,仔细观察其中的一行,可以清晰地看 出,各内容之间通过 ":" 号划分成了多个字段,共 7 部分,这 7 部分分别定义了用户的不同属性,/etc/passwd 文件的实际内容具体如下:
[root@shy ~]# head -5 /etc/passwd # 通过 head 命令查看 /etc/passwd 的前 5 行。
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
提示 : passwd 文件中有很多虚拟用户,如 bin、daemon 等,一般来说,这些用户都是系统正常运行所需要的,在不确定的情况下,请不要随意删改此类用户。
在 passwd 文件中,第一行的内容就是超级用户 root 所在的行,我们可以看到它的 UID 和 GID 都为 0,为了让读者能够清晰地了解 passwd 文件中内容的含义,下面列举了表 14-1 和表 14-2,供读者学习参考。
表 14-1 以 passwd 文件中 root 一行为例介绍各个字段的作用

表 14-2 对 passwd 文件中每一行各个字段的详细说明

下面来看一下 /etc/passwd 文件的权限:
[root@shy ~]# ls -l /etc/passwd
-rw-r--r-- 1 root root 1247 5月 22 19:54 /etc/passwd # 所有用户都有读的权限
因为每个用户登录时都需要取得 UID 与 GID 来判断权限,所以 /etc/passwd 文件的权限为 644,但这样一来就会带来安全问题, 即所有的用户都可以读 /etc/passwd 文件。即使文件内的密码是加密的,也还是存在一定的被攻击破解的安全隐患。因此,后来就将密码的信息移动到 /etc/shadow 文件了。
B. 存储用户密码信息的文件 /etc/shadow
由于 passwd 文件必须要被所有的用户读取,所以会带来安全隐患。而 shadow 文件就是为了解决这个安全隐患而增加的。 下面我们来看一下 /etc/shadow 文件的权限:
[root@shy ~]# ls -l /etc/shadow
---------- 1 root root 797 5月 22 19:54 /etc/shadow # 理论上所有用户都没有权限。
可以看到,/etc/shadow 的权限属性位置都是 "-",即所有用户都不可读(不包含 root),其文件内容具体如下:
[root@shy ~]# head -5 /etc/shadow
root:$6$RYs6Gjk1y69BG3XL$jUfSqhUVIxhfadXp3xeHML02Op/BQHd1QFw6p6fPdN9C3FYmrD4IBGat2vll2kKKvcXUVkR.JNrZnzMtHjmCL0::0:99999:7::: # 设置了密码后加密的数据信息。
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
与 /etc/passwd 文件一样,shadow 文件中的每一行内容,也是以冒号 (:)作为分隔符的,共包含 9 个字段,其各个字段的意义如表 14-3 所示。
表 14-3 shadow 文件中每一行各个字段的详细说明

提示:
- 使用 useradd 命令添加用户会更改 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow。
- 使用 passwd 或 chpasswd 为用户设置密码会更改 /etc/shadow。
2、Linux 系统用户组相关的配置文件
在 Linux 系统中,与用户组直接相关的主要配置文件也有两个:
/etc/group 用户组信息文件。
/etc/gshadow 用户组密码信息文件。
A. 存储用户组信息的文件 /etc/group
/etc/group 文件是存储用户组相关信息的文件,内容包括用户组名称、用户组 GID 等属性。/etc/group 文件与 /etc/passwd 文件的权限相同,也是 644,示例代码具体如下:
[root@shy ~]# ls -l /etc/group
-rw-r--r-- 1 root root 655 5月 22 19:54 /etc/group
/etc/group 文件的实际内容格式具体如下:
[root@shy ~]# head -5 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
/etc/group 文件中每一行的内容也是使用冒号进行分隔的,表 14-4 是有关 group 文件的每一行中各个字段的详细说明。
表 14-4 group 文件中每一行各个字段的详细说明

提示: 使用 groupadd 添加用户组会更改 /etc/group、/etc/gshadow。
B. 存储用户组密码的文件 /etc/gshadow
/etc/gshadow 是存储用户组密码信息的文件,比如,用户组管理密码就存放在这个文件中。/etc/gshadow 和 /etc/group 是两个互补的文件;早期对于大型服务器,针对很多用户和用户组,定制一些关系结构比较复杂的权限模型,可以选择设置用户组密码。比如,如果不想让一些非用户组成员永久拥有用户组的权限和特性,那么可 以通过密码验证的方式来让某些用户临时拥有一些用户组特性,这时就要用到用户组密码了,在实际运维工作中,一般是用不到这个功能的,因此读者了解一下本节内容就行了。
/etc/gshadow 文件权限及内容格式如下,每个用户组独占一行;
[root@shy ~]# ls -l /etc/gshadow
---------- 1 root root 513 5月 22 19:54 /etc/gshadow
[root@shy ~]# head -5 /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::
gshadow 文件中每一行的内容都是使用冒号进行分隔的。
表 14-5 gshadow 文件中每一行各个字段的详细说明

二、Linux 用户及用户组命令介绍
在 Linux 系统中,与用户及用户组相关的系统命令有很多,这里仅对较为常用的命令做讲解,并给出重点。
1、有关用户管理的常见命令汇总
表 14-6 中针对用户管理的常见命令进行了汇总,其中,带 ※ 的需要重点掌握,其余的命令了解即可。
表 14-6 Linux 系统中与用户管理相关的常用命令集合

2、有关用户组管理的常见命令汇总
表 14-7 针对用户组管理的常见命令进行了汇总,同样,带 ※ 的建议读者重点掌握,其余的命令了解即可,一般用不到。
表 14-7 Linux 系统中与用户组管理相关的常用命令
