Linux 用户账户管理全攻略
1. 创建新账户
在大多数情况下,创建新账户时点击“确定”即可,因为其余选项的默认值通常是合适的。新账户会出现在“用户”标签列表中,如有需要,后续可对其进行修改或删除。
1.1 从命令行创建账户
在任何 Linux 发行版中,都可以使用
useradd
工具从命令行创建账户。使用时,需输入该工具名和要关联新账户的用户名,还可在
useradd
和用户名之间添加选项,具体如下表所示:
| 选项名称 | 选项缩写 | 效果 |
| — | — | — |
|
--comment comment
|
-c
| 指定用户的注释字段(GUI 工具通常将其描述为“全名”) |
|
--home home-dir
|
-d
| 指定账户的主目录,默认为
/home/用户名
|
|
--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 识别文件所有权。
创建账户时,使用
useradd
创建的账户处于锁定状态,用户无法登录,需使用
passwd
命令解锁。
useradd
会修改以下文件的内容:
-
/etc/passwd
-
/etc/shadow
-
/etc/group
若使用
--create-home
或
-m
选项(或该选项默认启用),程序会创建主目录并将
/etc/skel
中的文件复制到该位置。创建账户通常还会创建一个邮件假脱机文件,用于存储用户的传入电子邮件。
graph TD;
A[开始] --> B[输入 useradd 命令及选项和用户名];
B --> C{是否使用 -m 选项};
C -- 是 --> D[创建主目录并复制 /etc/skel 文件];
C -- 否 --> E[不创建主目录];
D --> F[修改 /etc/passwd、/etc/shadow、/etc/group 文件];
E --> F;
F --> G[创建邮件假脱机文件];
G --> H[账户创建完成,处于锁定状态];
H --> I[使用 passwd 命令解锁账户];
I --> J[结束];
2. 修改账户
创建账户时可以指定许多影响账户的选项,但有时在账户创建后需要更改这些选项。Linux 提供了 GUI 和文本模式工具来帮助完成这些操作。
2.1 决定何时修改账户
在理想情况下,每次创建的账户都完美无缺,但实际并非总是如此。可能由于缺乏创建完美账户所需的信息(如员工在公司的工作时长),或者账户创建后需求发生变化,以下是一些常见的账户更改原因:
- 账户过期日期可能需要更新,例如合同工的合同延期,有时需要重新启用已过期的账户。
- UID 编号可能需要与其他计算机同步,以促进计算机之间的文件共享或出于其他原因。
- 用户的主目录可能会因添加磁盘空间而需要移动到新位置。
- 用户可能忘记密码,系统管理员可以在不知道原始密码的情况下更改任何账户的密码,因此经常需要帮助记忆不佳的用户。
在 GUI 环境中,许多上述更改可以通过发行版的 GUI 账户管理工具处理;在文本模式 shell 中,则需要掌握一些不同的程序来处理这些账户修改。
2.2 检查用户是否登录
某些账户更改在用户登录时进行可能会造成干扰,特别是更改账户的用户名和主目录很可能会导致问题。因此,应仅在用户注销时进行此类更改。以下工具可帮助检查谁正在使用计算机,避免出现问题:
-
who
:该工具会列出当前登录到计算机的用户,并提供一些登录会话的详细信息,如终端标识符和登录日期。
-
w
:与
who
大致相似,但提供不同的详细信息,最显著的是它会识别每个会话中当前运行的程序。
-
last
:该程序会列出最近的登录会话,包括其开始和结束时间,或显示用户仍在登录的通知。不过,
last
仅包含文本模式登录,对于识别当前使用 GUI 会话登录的用户作用有限。此外,一些发行版默认不创建存储
last
命令数据的
/var/log/wtmp
文件,更多信息可查看
last
命令的手册页。
graph TD;
A[开始] --> B{是否需要修改账户};
B -- 是 --> C{是否知道用户是否登录};
C -- 否 --> D[使用 who、w 或 last 命令检查];
C -- 是 --> E{用户是否登录};
D --> E;
E -- 是 --> F[等待用户注销];
E -- 否 --> G[进行账户修改];
F --> G;
G --> H[结束];
B -- 否 --> H;
2.3 使用 GUI 工具修改账户
不同的 GUI 工具修改账户的过程有所不同,但大多数提供相似的选项,有些功能更完整。以 openSUSE 的“用户和组管理”工具为例,打开该工具后,点击账户再点击“编辑”按钮,会出现一个类似图 13.3 的对话框,该对话框展示了账户属性,四个标签分别提供对特定类型数据的访问:
-
用户数据
:可以调整账户的注释字段(标识为“用户全名”)、用户名和密码。若输入的密码较弱,程序会发出警告并要求确认后才接受。部分 GUI 账户管理工具不会重命名或移动用户在磁盘上的主目录,可能需要手动使用
mv
命令完成。
-
详细信息
:可更改默认 shell(此工具中称为“登录 shell”)、将账户添加到其他组、修改主组(此工具中称为“默认组”)等。
-
密码设置
:可管理密码过期和修改数据,这与账户过期数据不同,过期账户会完全禁用,而用户至少在一段时间内可以重置过期密码。可以设置各种更改值,如密码更改后用户必须再次更改密码的天数,还会显示密码最后更改的日期。
-
插件
:若系统启用了用户磁盘配额管理,可在此标签中进行管理。根据系统配置,此标签中可能还有其他实用工具,如 LDAP。
用户可以通过桌面环境中的 GUI 选项更改自己的密码,例如在 Fedora 的“用户”实用工具中,用户可以从“我的账户”框中选择自己的账户名称,点击密码(显示为一系列点)以启动“更改密码”屏幕,管理员也可使用此工具添加和修改账户。锁定账户的密码可防止登录,但不会完全禁用账户。
2.4 从命令行修改账户
最常见的账户修改之一是更改用户密码,可使用
passwd
程序完成。普通用户可以输入
passwd
更改自己的密码,但不能更改其他用户账户的密码,超级用户可以将用户名传递给该命令来更改任何账户的密码。例如:
# passwd kevin
Changing password for user kevin.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
为确保安全,输入密码时不会在屏幕上显示。若两次输入的密码不匹配,程序将拒绝接受更改并提示重新输入。程序还会检查密码强度,若认为密码太弱,可能会拒绝接受新密码或显示警告信息。
大多数其他账户修改可使用
usermod
程序完成,该命令与
useradd
类似,但用于修改现有账户。以下是
usermod
的重要选项:
| 选项名称 | 选项缩写 | 效果 |
| — | — | — |
|
--append
|
-a
| 与
--groups
(
-G
) 一起使用,将指定的组添加到用户现有的组集合中,而不是替换 |
|
--comment comment
|
-c
| 指定用户的注释字段(GUI 工具通常将其描述为“全名”) |
|
--home home-dir
|
-d
| 指定账户的主目录,默认为
/home/用户名
|
|
--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 -u 1072 -m -d /home2/kevin kevin
此命令对
kevin
账户进行了三项更改:
- 将 UID 值更改为 1072。
- 将账户的主目录更改为
/home2/kevin
。
- 将账户原主目录的内容移动到新位置。
更改 UID 值时需谨慎,尽管
usermod
会更改用户主目录和电子邮件文件等常见位置的文件的 UID 值,但可能会遗漏不寻常位置的用户文件。若需要进行涉及添加新组的组更改,可参考后续“管理组”部分的信息。
3. 删除账户
删除账户有时与添加或修改账户同样重要。未使用的账户可能会被滥用,无论是其原所有者还是能够破解弱密码的其他人。因此,应定期删除未使用的账户。在进行删除操作之前,需要了解删除账户时会发生什么,并确定具体的删除方式,以免因不当删除账户而产生问题。掌握相关知识后,可使用 GUI 或文本模式工具删除账户。
3.1 避免账户删除陷阱
删除账户看似简单,但一个错误可能会立即或在未来引发问题。除了意外删除错误账户等明显问题外,还应考虑以下两个因素:
-
用户文件保存
:用户的文件可能对用户自身或计算机所属组织非常有价值。因此,在考虑是否删除用户的主目录或对其进行其他处理(如将其移动到其他用户的主目录并更改文件权限)时,应查看公司的文件保留政策。用户的邮件队列(通常存储在
/var/spool/mail/用户名
,其中
用户名
为用户的实际名称)也是如此。可以考虑将已删除账户的主目录存档到长期备份介质中,以便在未来这些文件变得有价值时进行恢复。
-
操作影响
:
--move-home
(
-m
) 选项在同一低级文件系统上移动文件时速度较快,但跨文件系统边界移动时可能会很慢。
graph TD;
A[开始] --> B{是否要删除账户};
B -- 是 --> C{是否有文件保留政策};
C -- 是 --> D[查看政策确定文件处理方式];
C -- 否 --> E[自行决定文件处理方式];
D --> F{是否跨文件系统移动主目录};
E --> F;
F -- 是 --> G[注意移动速度可能较慢];
F -- 否 --> H[正常移动主目录];
G --> I[删除账户];
H --> I;
I --> J[结束];
B -- 否 --> J;
3.2 使用 GUI 工具删除账户
不同发行版的 GUI 账户管理工具删除账户的操作步骤可能有所不同。一般来说,打开账户管理工具后,找到要删除的账户,然后点击“删除”或类似按钮。在确认删除操作之前,工具可能会提示备份用户文件或执行其他相关操作。
3.3 使用命令行删除账户
在文本模式 shell 中,可以使用
userdel
命令删除账户。基本语法如下:
# userdel [选项] 用户名
以下是一些常用的选项:
| 选项 | 效果 |
| — | — |
|
-r
| 删除用户的主目录和邮件假脱机文件 |
例如,要删除名为
kevin
的账户并同时删除其主目录和邮件假脱机文件,可以使用以下命令:
# userdel -r kevin
在删除账户之前,建议先备份重要的用户文件,以免误删导致数据丢失。同时,要确保在删除账户时,该用户没有正在进行的重要操作。
总结
Linux 系统的账户管理涵盖了创建、修改和删除账户等多个方面。通过命令行工具(如
useradd
、
usermod
、
userdel
)和 GUI 工具,系统管理员可以灵活地管理用户账户。在进行账户管理操作时,需要考虑各种因素,如账户的安全性、用户文件的保留、用户是否登录等,以确保操作的顺利进行和数据的安全。同时,要根据具体的需求和场景选择合适的工具和选项,合理地管理用户账户,为系统的稳定运行和数据安全提供保障。
希望本文能帮助你更好地理解和掌握 Linux 系统的账户管理方法,在实际操作中更加得心应手。如果你在使用过程中遇到任何问题,欢迎查阅相关的文档或寻求社区的帮助。
超级会员免费看
11

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



