29、Linux 用户账户管理全攻略

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 系统的不断发展和更新,账户管理工具和方法也可能会有所变化,需要持续关注和学习。

【SCI级别】多策略改进鲸鱼优化算法(HHWOA)和鲸鱼优化算法(WOA)在CEC2017测试集函数F1-F30寻优对比内容概要:本文档主要介绍了一项关于多策略改进鲸鱼优化算法(HHWOA)与标准鲸鱼优化算法(WOA)在CEC2017测试集函数F1-F30上进行寻优性能对比的研究,属于智能优化算法领域的高水平科研工作。文中通过Matlab代码实现算法仿真,重点展示了HHWOA在收敛速度、寻优精度和稳定性方面的优势,体现了多策略改进的有效性。该研究适用于复杂优化问题求解,尤其在工程优化、参数辨识、机器学习超参数调优等领域具有应用潜力。; 适合人群:具备一定算法基础和Matlab编程能力的研究生、科研人员及从事智能优化算法开发与应用的工程技术人员,尤其适合致力于SCI论文写作与算法创新的研究者。; 使用场景及目标:①用于理解鲸鱼优化算法的基本原理及多策略改进思路(如种群初始化、非线性收敛因子、精英反向学习等);②为智能优化算法的性能测试与对比实验提供CEC2017标准测试平台的实现参考;③支撑学术研究中的算法创新与论文复现工作。; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点关注HHWOA的改进策略模块与WOA的差异,通过重复实验验证算法性能,并可将其思想迁移至其他优化算法的改进中,提升科研创新能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值