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

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 系统的账户管理方法,在实际操作中更加得心应手。如果你在使用过程中遇到任何问题,欢迎查阅相关的文档或寻求社区的帮助。

基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)内容概要:本文围绕“基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究”,介绍了利用Matlab代码实现配电网可靠性的仿真分析方法。重点采用序贯蒙特卡洛模拟法对配电网进行长时间段的状态抽样与统计,通过模拟系统元件的故障与修复过程,评估配电网的关键可靠性指标,如系统停电频率、停电持续时间、负荷点可靠性等。该方法能够有效处理复杂网络结构与设备时序特性,提升评估精度,适用于含分布式电源、电动汽车等新型负荷接入的现代配电网。文中提供了完整的Matlab实现代码与案例分析,便于复现和扩展应用。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及电力行业技术人员,尤其适合从事配电网规划、运行与可靠性分析相关工作的人员; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的基本原理与实现流程;②学习如何通过Matlab构建配电网仿真模型并进行状态转移模拟;③应用于含新能源接入的复杂配电网可靠性定量评估与优化设计; 阅读建议:建议结合文中提供的Matlab代码逐段调试运行,理解状态抽样、故障判断、修复逻辑及指标统计的具体实现方式,同时可扩展至不同网络结构或加入更多不确定性因素进行深化研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值