[Linux]用户管理

User管理

1 用户和组

在任何传统的操作系统中,都存在用户和用户组,它们的存在纯粹是为了访问控制和权限管理。当运行一个进程时,该进程将以其所有者的身份运行。文件的访问和所有权同样依赖于权限设置。

每个用户都有自己的主目录,用于存储用户的特定文件,通常位于/home/username路径下,但在不同的发行版中可能会有所不同。

系统使用用户ID(UID)来管理用户;用户名是便于识别用户的友好方式,但系统通过UID来标识用户。系统还利用用户组来管理权限,这些组是由具有相同权限设置的用户组成的集合,并通过组ID(GID)进行标识。

在Linux系统中,除了普通人类用户外,还有其他类型的用户。有时这些用户是系统守护程序,负责持续运行进程以维持系统的正常运作。其中最重要的用户之一是root或超级用户,root是系统中权限最大的用户,可以访问任何文件、启动和终止任何进程。如果需要root权限且用户拥有相应的权限,则可以通过sudo命令以root身份执行命令。sudo命令(代表“超级用户执行”)用于以root权限运行命令。尝试查看受保护的文件,例如/etc/shadow:

1
$ cat /etc/shadow

注意会收到“权限被拒绝”的错误信息。现在检查其权限:

1
2
$ ls -la /etc/shadow
-rw-r----- 1 root shadow 1134 Dec 1 11:45 /etc/shadow

可以看到,root是文件的所有者,需要具备root权限或是shadow组成员才能读取内容。现在使用sudo命令运行:

1
$ sudo cat /etc/shadow

此时,将能够查看文件的内容。

2 root

可以使用su命令以超级用户身份运行命令。该命令会“替换用户”,如果未指定用户名,则打开root shell。只要知道密码,可以使用此命令切换到任何用户。

1
$ su

使用这种方法存在一些缺点:以root身份执行所有操作时更容易发生关键性错误,并且你对用于更改系统配置的命令没有记录等。基本上,如果你需要以超级用户身份运行命令,最好坚持使用sudo。

系统不会让每个人随意以超级用户身份运行命令。有一个名为/etc/sudoers的文件,其中列出了可以运行sudo命令的用户。

通过/etc/sudoers文件,系统管理员能够精细地控制哪些用户或用户组可以通过sudo命令获得超级用户权限,从而确保系统的安全性和稳定性。

3 /etc/passwd

系统使用用户ID(UID)来识别用户。要找出哪些用户映射到了哪个ID,查看/etc/passwd文件。

1
$ cat /etc/passwd

此文件展示用户的列表及关于他们的详细信息。例如,该文件的第一行很可能如下所示:

1
root:x:0:0:root:/root:/bin/bash

每一行显示一个用户的信息,通常你会看到root用户作为第一行。这些信息由冒号分隔的多个字段组成,提供有关用户的额外信息。

这些字段分别代表:

  • 用户名
  • 用户密码 - 密码实际上并不存储在此文件中,而是通常存储在/etc/shadow文件中。它包含加密的用户密码。在这个字段中,可能会看到不同的符号:“x”表示密码存储在/etc/shadow文件中,“*”表示用户没有登录权限,如果为空则表示用户没有设置密码。
  • 用户ID(UID) - root的UID为0
  • 组ID(GID)
  • GECOS字段 - 一般用于对用户或账号进行注释,如真实姓名或电话号码,以逗号分隔。
  • 用户主目录
  • 用户shell - 大部分用户默认使用bash作为其shell

通常,在用户的设置页面中,只会看到人类用户。然而,/etc/passwd文件中还包含了其他用户。例如,daemon用户用于守护进程。

4 /etc/shadow

/etc/shadow文件用于存储有关用户认证的信息,其内容需要超级用户的读取权限。

1
$ sudo cat /etc/shadow

示例输出:

1
root:MyEPTEa$6Nonsense:15000:0:99999:7:::

它看起来与/etc/passwd文件的内容非常相似,但在密码字段中,将看到加密后的密码。各字段由冒号分隔,具体如下:

  • 用户名
  • 加密密码
  • 上次密码修改日期 - 表达为自1970年1月1日以来的天数。若值为0,则表示用户下次登录时应更改密码。
  • 最低密码年龄 - 用户需等待多少天后才能再次更改密码
  • 最高密码年龄 - 在必须更改密码之前的最大天数
  • 密码警告期 - 密码即将过期前的天数
  • 密码非活动期 - 密码过期后允许使用旧密码登录的天数
  • 账户到期日期 - 用户无法再登录的日期
  • 保留字段供将来使用

5 /etc/group

另一个在用户管理中使用的文件是/etc/group文件,它允许创建具有不同权限的不同组。

1
$ cat /etc/group

示例输出:

1
root:*:0:pete

与/etc/passwd文件非常相似,/etc/group文件的各字段如下:

  • 组名
  • 组密码 - 通常无需设置组密码,使用如sudo这样的提升权限方式是标准做法。默认情况下会放置一个“*”作为占位符。
  • 组ID (GID)
  • 用户列表 - 可以手动指定希望加入特定组的用户

6 User Management Tools

在大多数企业环境中,通常使用管理系统来管理用户、账号和密码。然而,在单机环境下,也有一些实用的命令可用于用户管理。

添加用户

可以使用adduseruseradd命令添加用户。adduser命令提供更友好的功能,如自动创建主目录等。通过配置文件,可以根据需求自定义新用户的默认设置。

1
$ sudo useradd bob

上述命令会在/etc/passwd中为bob创建条目,设置默认组,并在/etc/shadow文件中添加相应记录。

删除用户

要删除用户,可以使用userdel命令。

1
$ sudo userdel bob

此命令将尽可能撤销由useradd命令所作的文件更改。

更改密码

使用passwd命令可以更改自己或他人的密码(如果具有root权限)。

1
$ passwd bob

[Linux]用户管理
https://erlsrnby04.github.io/2025/03/21/Linux-用户管理/
作者
ErlsrnBy04
发布于
2025年3月21日
许可协议