Linux 用户账户管理全攻略
1. 创建新账户
在大多数情况下,当创建新账户时,很多选项使用默认值即可,此时点击“确定”就能完成基本的账户创建操作。新账户会出现在“用户”标签列表中,后续若有需要,还可以对其进行修改或删除。
1.1 从命令行创建账户
在各种 Linux 发行版中,都可以使用
useradd
工具从命令行创建账户。使用时,只需输入
useradd
命令,后面跟上想要创建的用户名。同时,还可以在
useradd
和用户名之间添加一些选项,具体选项如下表所示:
| 选项名称 | 选项缩写 | 效果 |
| — | — | — |
|
--comment comment
|
-c
| 指定用户的注释字段(GUI 工具通常将其描述为“全名”) |
|
--home home-dir
|
-d
| 指定账户的主目录,默认是
/home/username
|
|
--expiredate expire-date
|
-e
| 设置账户禁用的日期,格式为
YYYY - MM - DD
,默认账户不会过期 |
|
--inactive inactive-days
|
-f
| 设置密码过期后,账户完全禁用的天数,
-1
表示禁用此功能,为默认值 |
|
--gid default-group
|
-g
| 设置用户默认组的名称或 GID,默认会创建一个与用户同名的新组 |
|
--groups group [,...]
|
-G
| 设置用户所属的组的名称或 GID,可以用逗号分隔指定多个组 |
|
--create-home
|
-m
| 包含此选项时,
useradd
会为用户创建主目录,通常此选项默认启用 |
|
--skel skeleton-dir
|
-k
| 通常默认用户配置文件从
/etc/skel
复制,但可以用此选项指定另一个模板目录,此选项仅与
-m
结合使用时有效 |
| 无 |
-M
| 强制系统不自动创建主目录 |
|
--shell shell
|
-s
| 设置用户的默认登录 shell,默认是
/bin/bash
|
|
--uid UID
|
-u
| 创建具有指定用户 ID 值(UID)的账户 |
|
--non-unique
|
-o
| 允许重用单个 UID 编号,在创建第二个或后续重用 UID 的账户时使用此选项 |
|
--system
|
-r
| 指定创建系统账户,
useradd
不会为系统账户创建主目录,并为其分配低于 100 的 UID 值 |
|
--no-user-group
|
-N
| 禁用为用户创建组的功能 |
在基于 Debian 的发行版(如 Ubuntu)中,可以通过输入
adduser
来使用一个更友好的
useradd
前端工具。但要注意,在某些发行版(如 Fedora)中,
adduser
命令(如果可用)不是
useradd
的前端工具,而是它的一个链接。
下面是一个完整的
useradd
命令示例:
$ sudo useradd -m -c "Samantha Bresnahan" -u 1012 samantha
root's password:
这个示例创建了一个名为
samantha
的账户,包含主目录、注释字段(用户全名),并且 UID 为 1012。注意,这里使用了
sudo
命令来获取超级用户权限,因为成功完成此命令需要这些权限。如果已经登录到 root 账户,则不需要使用
sudo
。
虽然可以使用
useradd
命令的
-p
选项添加密码,但出于安全考虑,不建议这样做,更好的做法是使用
passwd
命令,后续会详细介绍。
有时候指定 UID 是为了在使用网络文件系统(NFS)共享文件的计算机之间同步这些值,因为 NFS 通过 UID 来识别文件所有权。
创建账户的流程可以用以下 mermaid 流程图表示:
graph TD;
A[开始] --> B[输入 useradd 命令及选项和用户名];
B --> C{是否使用 -m 选项};
C -- 是 --> D[创建主目录并复制配置文件];
C -- 否 --> E[不创建主目录];
D --> F[修改相关文件内容];
E --> F;
F --> G[创建邮件假脱机文件];
G --> H[账户创建完成];
H --> I[结束];
2. 修改账户
当使用
useradd
创建账户后,账户会处于锁定状态,用户无法登录。要解锁账户,需要使用
passwd
命令。实际上,
useradd
(或其 GUI 前端工具)在幕后会修改以下文件的内容:
-
/etc/passwd
-
/etc/shadow
-
/etc/group
如果使用了
--create-home
或
-m
选项,或者该选项默认启用,程序会为用户创建主目录,并将
/etc/skel
中的文件复制到该位置。创建账户通常还会创建一个邮件假脱机文件,用于存储用户的传入电子邮件(在许多桌面系统中,此文件可能未被使用,但在运行邮件服务器软件的计算机上很重要)。
2.1 决定何时修改账户
在理想情况下,每次创建的账户都能完美满足需求,但实际并非总是如此。可能由于缺乏创建完美账户所需的信息(如员工在公司的工作时长),或者在账户创建后需求发生了变化。常见的需要修改账户的原因包括:
-
账户过期日期更新
:例如,合同员工的合同可能会延长,有时需要重新启用已过期的账户。
-
UID 同步
:为了方便在计算机之间共享文件或出于其他原因,需要将 UID 编号与其他计算机同步。
-
主目录更改
:由于添加了磁盘空间,需要将一些用户的主目录移动到新位置。
-
密码重置
:用户可能会忘记密码,系统管理员可以在不知道原始密码的情况下更改任何账户的密码,因此经常需要帮助忘记密码的用户。
2.2 检查用户是否登录
在进行账户修改时,要注意如果用户正在登录,某些更改可能会造成干扰,特别是更改账户的用户名和主目录,很可能会导致问题。因此,应该只在用户注销后进行这些更改。以下是一些可以帮助检查当前使用计算机的用户的工具:
-
who
:该工具会列出当前登录到计算机的用户,以及他们登录会话的一些详细信息,如终端标识符和登录日期。
-
w
:与
who
大致类似,但提供不同的详细信息,最显著的是它会识别每个会话中当前正在运行的程序。
-
last
:该程序会列出最近的登录会话,包括它们的开始和结束时间,或者显示用户仍在登录的通知:
$ last
jennie tty3 Sun Jan 8 12:43 still logged in
jennie tty3 Sun Jan 8 12:43-12:43 (00:00)
jennie tty2 Sun Jan 8 12:36 still logged in
jennie tty2 Sun Jan 8 12:36-12:36 (00:00)
需要注意的是,
last
的一个显著限制是它只包含文本模式的登录,这使得它在识别当前使用计算机的用户方面的实用性相对有限,因为有些用户可能使用 GUI 会话登录。此外,大多数发行版还提供
users
命令,用于快速简单地列出正在使用计算机的用户。
last
命令显示存储在
/var/log/wtmp
文件中的数据,有些发行版默认不会创建此文件,更多信息可查看
last
命令的手册页。
2.3 使用 GUI 工具修改账户
使用 GUI 工具修改账户的过程因工具而异。大多数 GUI 工具提供相似的选项,但有些工具更完善。以 openSUSE 的“用户和组管理”工具为例,要进行修改操作,打开该工具后,先点击要修改的账户,然后点击“编辑”按钮,会弹出一个类似图 13.3 的对话框(这里未展示实际图片),该对话框显示账户属性,四个标签分别提供不同类型的数据访问:
-
用户数据
:可以调整账户的注释字段(标识为“用户全名”)、用户名和密码。如果输入的密码较弱,程序会发出警告,并在接受之前要求确认。
-
详细信息
:可以更改默认 shell(在此工具中称为“登录 shell”);将账户添加到其他组;修改主组(在此工具中称为“默认组”)等。
-
密码设置
:可以管理密码的过期和修改数据。这与账户过期数据不同,过期账户会完全禁用,而用户至少在一段时间内可以重置过期的密码。可以设置各种更改值,例如密码更改后用户必须再次更改密码的天数,还会显示密码最后更改的日期。
-
插件
:如果系统启用了用户磁盘配额管理,可以在此标签中进行管理。根据系统配置,此标签中可能还提供其他实用工具,如 LDAP。
用户可以通过桌面环境中的 GUI 选项更改自己的密码。例如,在 Fedora 的“用户”工具中,用户可以从“我的账户”框中选择自己的账户名称,然后点击密码(显示为一系列点)以启动“更改密码”屏幕(类似图 13.4,这里未展示实际图片)。管理员也可以使用此工具添加和修改账户。需要注意的是,锁定账户的密码会阻止登录,但不会完全禁用账户。
2.4 从命令行修改账户
最常见的账户修改操作之一是更改用户密码,无论是在创建账户时还是因为用户忘记了密码。可以使用
passwd
程序来完成此操作。普通用户可以输入
passwd
来更改自己的密码,但不能更改其他用户账户的密码。而超级用户可以将用户名传递给该命令,以更改任何账户的密码:
# passwd kevin
Changing password for user kevin.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
作为安全措施,输入密码时不会在屏幕上显示。如果输入的两次密码不匹配,程序会拒绝接受更改,并提示再次输入一对新密码。程序还会检查密码的强度,如果认为密码太弱,可能会拒绝接受新密码或显示警告消息。注意,上述示例中显示了
#
提示符,表示已登录到 root 账户以获取超级用户权限,因为成功完成此命令需要这些权限。
除了更改密码,大多数其他账户修改操作可以使用
usermod
程序来完成。该命令的工作方式与
useradd
类似,但它不是创建新账户,而是修改现有账户。以下是
usermod
的一些重要选项:
| 选项名称 | 选项缩写 | 效果 |
| — | — | — |
|
--append
|
-a
| 与
--groups
(
-G
) 一起使用时,将指定的组添加到用户现有的组集合中,而不是替换它们 |
|
--comment comment
|
-c
| 指定用户的注释字段(GUI 工具通常将其描述为“全名”) |
|
--home home-dir
|
-d
| 指定账户的主目录,默认是
/home/username
|
|
--expiredate expire-date
|
-e
| 设置账户禁用的日期,格式为
YYYY - MM - DD
,默认账户不会过期 |
|
--inactive inactive-days
|
-f
| 设置密码过期后,账户完全禁用的天数,
-1
表示禁用此功能,为默认值 |
|
--gid default-group
|
-g
| 设置用户默认组的名称或 GID,默认会创建一个与用户同名的新组 |
|
--groups group [,...]
|
-G
| 设置用户所属的组的名称或 GID,可以用逗号分隔指定多个组 |
|
--login username
|
-l
| 将账户的用户名更改为指定的值 |
|
--lock
|
-L
| 锁定账户的密码,阻止登录 |
|
--move-home
|
-m
| 当与
--home
(
-d
) 一起使用时,
usermod
会将用户现有的主目录移动到新位置 |
|
--shell shell
|
-s
| 设置用户的默认 shell |
|
--uid UID
|
-u
| 将账户的 UID 编号更改为指定的值 |
|
--non-unique
|
-o
| 允许重用单个 UID 编号(与
--uid
/
-u
一起使用) |
|
--unlock
|
-U
| 解锁已锁定的账户密码 |
例如,以下
usermod
命令的使用示例:
# usermod -u 1072 -m -d /home2/kevin kevin
此命令对
kevin
账户进行了三项更改:
- 将 UID 值更改为 1072。
- 将账户的主目录更改为
/home2/kevin
。
- 将账户原主目录的内容移动到新位置。
如果要将用户账户迁移到挂载在
/home2
的 NFS 服务器,可能会发出这样的命令。这样的更改可能需要新的主目录位置,并更改 UID 值以匹配 NFS 服务器上使用的值。但在更改 UID 值时要小心,因为尽管
usermod
会更改用户主目录和电子邮件文件等常见位置的文件的 UID 值,但可能会遗漏一些不寻常位置的用户文件。如果需要进行需要添加新组的组更改,请参考后续关于“管理组”的内容。
修改账户的流程可以用以下 mermaid 流程图表示:
graph TD;
A[开始] --> B{选择修改方式};
B -- GUI 工具 --> C[打开账户管理工具];
B -- 命令行 --> D{修改密码还是其他信息};
D -- 修改密码 --> E[使用 passwd 命令];
D -- 修改其他信息 --> F[使用 usermod 命令];
C --> G[选择账户并点击编辑];
G --> H[在相应标签修改信息];
E --> I[输入新密码并确认];
F --> J[根据需求添加选项和参数];
I --> K[完成修改];
J --> K;
H --> K;
K --> L[结束];
Linux 用户账户管理全攻略
3. 删除账户
删除账户有时与添加或修改账户同样重要。未使用的账户可能会被滥用,无论是被原账户所有者还是其他能够破解弱密码的人。因此,应该定期删除未使用的账户。在进行删除操作之前,需要了解删除账户时会发生什么,并明确如何正确操作,以免因不恰当的删除方式引发问题。掌握相关知识后,就可以使用 GUI 或文本模式工具来删除账户。
3.1 避免账户删除陷阱
虽然删除账户听起来很简单,但一个小错误就可能导致问题,无论是立即出现还是在未来引发麻烦。除了不小心删除错误的账户这种明显的问题外,还需要考虑以下两个因素:
-
用户文件保存
:用户的文件可能对用户自身或计算机所属的组织非常有价值。因此,在考虑是否删除用户的主目录或对其进行其他操作(如将其移动到其他用户的主目录并更改文件权限)时,应该查看公司的文件保留政策。用户的邮件队列(通常存储在
/var/spool/mail/username
,其中
username
是用户名)也是如此。可以考虑将已删除账户的主目录存档到长期备份介质中,这样在未来文件变得有价值时可以进行恢复。
-
文件系统操作影响
:使用
--move-home
(
-m
) 选项移动主目录时,如果是在单个底层文件系统内移动会比较快,但如果跨越文件系统边界,可能会比较慢。
3.2 使用 GUI 工具删除账户
不同的 Linux 发行版有不同的 GUI 账户管理工具,但一般来说,操作步骤类似。以常见的 GUI 账户管理工具为例,删除账户的步骤如下:
1. 打开系统的账户管理工具。
2. 在账户列表中找到要删除的账户。
3. 选择删除该账户的选项,通常会有确认提示,确认后即可完成删除。
需要注意的是,有些 GUI 工具可能不会自动删除用户的主目录和相关文件,需要手动进行操作。
3.3 从命令行删除账户
在命令行中,可以使用
userdel
命令来删除账户。
userdel
命令的基本语法如下:
userdel [选项] 用户名
常用的选项如下表所示:
| 选项 | 效果 |
| — | — |
|
-r
| 删除用户的同时,删除用户的主目录和邮件假脱机文件 |
|
-f
| 强制删除用户账户,即使该用户当前正在登录 |
例如,要删除名为
testuser
的账户,并同时删除其主目录和邮件假脱机文件,可以使用以下命令:
# userdel -r testuser
删除账户的流程可以用以下 mermaid 流程图表示:
graph TD;
A[开始] --> B{选择删除方式};
B -- GUI 工具 --> C[打开账户管理工具];
B -- 命令行 --> D[使用 userdel 命令];
C --> E[选择要删除的账户];
E --> F[确认删除];
D --> G{是否使用 -r 选项};
G -- 是 --> H[删除主目录和邮件假脱机文件];
G -- 否 --> I[仅删除账户信息];
F --> J[完成删除];
H --> J;
I --> J;
J --> K[结束];
4. 总结
Linux 系统中的用户账户管理是系统管理的重要组成部分,涉及到账户的创建、修改和删除等操作。通过本文的介绍,我们了解到:
-
创建账户
:可以使用
useradd
命令从命令行创建账户,也可以使用基于不同发行版的 GUI 工具。在创建过程中,可以根据需求设置各种选项,如主目录、UID、默认组等。
-
修改账户
:当账户创建后,可能由于各种原因需要进行修改。在修改之前,要先检查用户是否登录,避免对正在使用的账户进行可能导致问题的更改。可以使用 GUI 工具或
passwd
、
usermod
等命令进行修改。
-
删除账户
:定期删除未使用的账户可以提高系统的安全性。在删除时要注意避免删除陷阱,如妥善处理用户文件。可以使用 GUI 工具或
userdel
命令进行删除。
掌握这些账户管理的方法和技巧,能够帮助系统管理员更高效、安全地管理 Linux 系统中的用户账户。同时,在进行任何操作时,都要谨慎小心,避免因操作不当而引发不必要的问题。
在实际的系统管理中,还需要根据具体的业务需求和系统环境,灵活运用这些方法,以确保系统的稳定运行和数据的安全。例如,在进行大规模的账户迁移或管理时,可能需要编写脚本自动化执行相关操作,提高工作效率。此外,随着 Linux 系统的不断发展和更新,账户管理工具和方法也可能会有所变化,需要持续关注和学习。
超级会员免费看
13

被折叠的 条评论
为什么被折叠?



