[Linux]用户管理
User管理
1 用户和组
在任何传统的操作系统中,都存在用户和用户组,它们的存在纯粹是为了访问控制和权限管理。当运行一个进程时,该进程将以其所有者的身份运行。文件的访问和所有权同样依赖于权限设置。
每个用户都有自己的主目录,用于存储用户的特定文件,通常位于/home/username路径下,但在不同的发行版中可能会有所不同。
系统使用用户ID(UID)来管理用户;用户名是便于识别用户的友好方式,但系统通过UID来标识用户。系统还利用用户组来管理权限,这些组是由具有相同权限设置的用户组成的集合,并通过组ID(GID)进行标识。
在Linux系统中,除了普通人类用户外,还有其他类型的用户。有时这些用户是系统守护程序,负责持续运行进程以维持系统的正常运作。其中最重要的用户之一是root或超级用户,root是系统中权限最大的用户,可以访问任何文件、启动和终止任何进程。如果需要root权限且用户拥有相应的权限,则可以通过sudo命令以root身份执行命令。sudo命令(代表“超级用户执行”)用于以root权限运行命令。尝试查看受保护的文件,例如/etc/shadow:
1 |
|
注意会收到“权限被拒绝”的错误信息。现在检查其权限:
1 |
|
可以看到,root是文件的所有者,需要具备root权限或是shadow组成员才能读取内容。现在使用sudo命令运行:
1 |
|
此时,将能够查看文件的内容。
2 root
可以使用su命令以超级用户身份运行命令。该命令会“替换用户”,如果未指定用户名,则打开root shell。只要知道密码,可以使用此命令切换到任何用户。
1 |
|
使用这种方法存在一些缺点:以root身份执行所有操作时更容易发生关键性错误,并且你对用于更改系统配置的命令没有记录等。基本上,如果你需要以超级用户身份运行命令,最好坚持使用sudo。
系统不会让每个人随意以超级用户身份运行命令。有一个名为/etc/sudoers的文件,其中列出了可以运行sudo命令的用户。
通过/etc/sudoers文件,系统管理员能够精细地控制哪些用户或用户组可以通过sudo命令获得超级用户权限,从而确保系统的安全性和稳定性。
3 /etc/passwd
系统使用用户ID(UID)来识别用户。要找出哪些用户映射到了哪个ID,查看/etc/passwd文件。
1 |
|
此文件展示用户的列表及关于他们的详细信息。例如,该文件的第一行很可能如下所示:
1 |
|
每一行显示一个用户的信息,通常你会看到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 |
|
示例输出:
1 |
|
它看起来与/etc/passwd文件的内容非常相似,但在密码字段中,将看到加密后的密码。各字段由冒号分隔,具体如下:
- 用户名
- 加密密码
- 上次密码修改日期 - 表达为自1970年1月1日以来的天数。若值为0,则表示用户下次登录时应更改密码。
- 最低密码年龄 - 用户需等待多少天后才能再次更改密码
- 最高密码年龄 - 在必须更改密码之前的最大天数
- 密码警告期 - 密码即将过期前的天数
- 密码非活动期 - 密码过期后允许使用旧密码登录的天数
- 账户到期日期 - 用户无法再登录的日期
- 保留字段供将来使用
5 /etc/group
另一个在用户管理中使用的文件是/etc/group文件,它允许创建具有不同权限的不同组。
1 |
|
示例输出:
1 |
|
与/etc/passwd文件非常相似,/etc/group文件的各字段如下:
- 组名
- 组密码 - 通常无需设置组密码,使用如sudo这样的提升权限方式是标准做法。默认情况下会放置一个“*”作为占位符。
- 组ID (GID)
- 用户列表 - 可以手动指定希望加入特定组的用户
6 User Management Tools
在大多数企业环境中,通常使用管理系统来管理用户、账号和密码。然而,在单机环境下,也有一些实用的命令可用于用户管理。
添加用户
可以使用adduser
或useradd
命令添加用户。adduser
命令提供更友好的功能,如自动创建主目录等。通过配置文件,可以根据需求自定义新用户的默认设置。
1 |
|
上述命令会在/etc/passwd
中为bob创建条目,设置默认组,并在/etc/shadow
文件中添加相应记录。
删除用户
要删除用户,可以使用userdel
命令。
1 |
|
此命令将尽可能撤销由useradd
命令所作的文件更改。
更改密码
使用passwd
命令可以更改自己或他人的密码(如果具有root权限)。
1 |
|