如何在Linux上创建、修改和删除用户帐户如何在Linux上创建、修改和删除用户帐户如何在Linux上创建、修改和删除用户帐户如何在Linux上创建、修改和删除用户帐户
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在Linux上创建、修改和删除用户帐户

发表 admin at 2025年2月28日
类别
  • 未分类
标签

用户帐户管理是每个 Linux 系统管理员的基本任务之一。在本文中,我们将学习如何创建新的用户帐户、如何修改它以及如何使用 useradd、usermod 和 从命令行删除它userdel 实用程序,它们是基本系统的一部分。

在本教程中您将学习:

  • /etc/login.defs 文件有什么用

  • 如何使用 useradd 命令创建具有各种选项的用户帐户

  • 如何使用 usermod 命令修改用户帐户

  • 如何使用 userdel 命令删除用户帐户

如何在Linux上创建、修改和删除用户帐户

使用的软件要求和约定

默认设置

创建用户时应用的默认设置在 /etc/login.defs 文件中定义。例如,如果我们查看 Fedora 系统上的文件,我们可以看到其中定义的选项,这些选项可以在运行时被专用命令行选项覆盖。让我们看看其中一些定义:

OPTION MEANING DEFAULT VALUE
CREATE_HOME Defines if an home directory should be created for new users yes
ENCRYPT_METHOD The encrypt method used for encrypting passwords SHA512
UID_MIN Minimum uid value automatically assigned to standard users 1000
UID_MAX Maximum uid value automatically assigned to standard users 60000
SYS_UID_MIN Minimum uid value automatically assigned to “system” users 201
SYS_UID_MAX Maximum uid value automatically assigned to “system” users 999
PASS_MAX_DAYS Maximum number of days a password may be used 99999
PASS_MIN_DAYS Minimum number of days allowed between password changes 0
PASS_WARN_AGE Number of days warning is given before a password expires 7

上面的只是 /etc/login.defs 文件中定义的选项的一小部分,但足以给出一个总体思路。

创建新用户

要在 Linux 系统上创建新的用户帐户,我们可以使用 useradd 实用程序;其语法如下:

useradd [options] LOGIN

其中 LOGIN 是要创建的登录名。假设我们要为“newuser”用户创建一个新帐户;我们会运行:

$ sudo useradd newuser

上面的命令将在系统上创建“newuser”帐户;此外,还将为用户创建一个主目录,因为如上表所示,CREATE_HOME 选项默认设置为 yes。可以使用 -m(--create-home 的缩写)选项显式请求为新用户创建主目录>useradd 命令。如果我们想避免创建该目录,我们应该使用 -M 选项,它是 --no-create-home 的缩写。

创建用户后,建议设置其密码的方法是使用 passwd 实用程序,记住这一点,是重要的一步!

指定登录 shell

创建新用户时我们可能想要指定的另一个常见的事情是其登录 shell:我们可以使用 -s 选项(--shell )并将 shell 二进制文件的路径作为参数传递。如果未显式提供此选项,则将使用 $SHELL 变量指定的 shell(在 Fedora 上为 /bin/bash)。例如,要显式声明新用户的登录 shell,我们将运行:

$ sudo useradd -s /bin/bash newuser

手动指定用户UID

创建新用户时,默认情况下,第一个可用的 uid 大于或等于 /etc/login.defs< 中的 UID_MIN 选项指定的 文件,大于任何其他用户的文件,并且小于或等于使用 UID_MAX 选项指定的文件,将分配给他。如果我们想手动指定一个 uid,我们应该使用 -u (--uid) 选项并提供我们想要用作其参数的 uid 值(它必须为非负值)。要创建手动分配 uid 为 1005 的用户,我们将运行:

$ sudo useradd -u 1005 newuser

创建“系统”用户

如果没有明确声明,useradd 命令将创建“标准”用户,即 uid >= 1000 的用户。如果我们想创建一个“系统”用户,则创建一个没有老化的用户在 /etc/shadow 文件中声明的信息,我们必须使用 -r (--system) 选项。系统用户通常由守护程序或其他应用程序使用,因此不会为他们创建主目录。它们的 uid 在 /etc/login.defs 文件中的 SYS_UID_MIN 和 SYS_UID_MAX 选项定义的范围内选择。要创建“系统”用户,我们将运行:

$ sudo useradd -r newuser

为新用户指定其他组

创建标准用户时,默认情况下,将创建一个以其命名的组,并且该组将自动包含在其中:这是其主要组。如果我们想要指定用户应该属于的一系列附加组,我们必须使用 -G 选项,它是 --groups 的缩写,并提供以逗号分隔的组列表作为其参数。例如,要将用户包含在 wheel 组中(这是让它使用 sudo 命令所必需的),我们将运行:

$ sudo useradd -G wheel newuser

使用 usermod 实用程序修改用户帐户

如果 useradd 实用程序用于创建新用户帐户,则 usermod 实用程序(顾名思义)用于修改现有帐户。该命令使用的语法与 useradd 使用的语法相同:

usermod [options] LOGIN

让我们看一些实用程序用法的示例。

将现有用户添加到其他组

我们了解了如何使用 useradd 命令的 -G 选项在创建时将用户添加到一些附加组。但是,如果用户帐户已存在,并且我们希望使其成为补充组的成员,则应将相同的选项与 -a (--append) 一起使用运行 usermod 实用程序并提供组列表作为其参数时的一个:

$ sudo usermod -G -a newgroup user

-a 选项必须与-G 单独使用。但请注意,如果后者单独使用,则指定的组将不会添加到用户已属于的补充组列表中,但该列表会 被完全重新定义。

锁定和解锁用户密码

有时我们可能想锁定用户密码,使其无法使用该密码登录。在这种情况下,我们可以使用 -L 选项(--lock 的缩写):

$ sudo usermod -L newuser

! 符号将被放在加密密码前面,将其禁用:

newuser:!$6$ISaqNDTydf51adbj$6ciHWBByfhe9k0sfg8Cky2F3HhgxdfMtmrWyq0323rvuCUu/un0d4rldwI0ELj4aSyFv0.cki3c/oLJFFNGyt/:18602:0:99999:7:::

要执行相反的操作并解锁用户密码,我们应该使用 -U (--unlock) 选项:

$ sudo usermod -U newuser

更改用户 uid 及其初始组的 gid

要更改现有用户 uid,我们应该使用 usermod 的 -u 选项并提供要使用的新值。当然,指定的 uid 不能已被使用,否则我们将收到错误:

$ sudo usermod -u 1000 newuser
usermod: UID '1000' already exists

当现有用户的 uid 更改时,该用户主目录中包含的所有文件的用户 ID 都会相应更改,除非主目录的 uid 与当前分配给用户的 uid 不同。

我们可能还想更改用户初始组的gid(组id)(与用户一起创建的组:其gid与用户相同) uid)。要执行此类操作,我们必须运行带有 -g 或 --gid 选项的 usermod;新组必须已经存在:

$ sudo usermod -g 1006 newuser

一旦我们更改用户主要组,其主目录中由其前一个组拥有的文件将自动设置为由新组拥有。

更改用户登录名

要更改用户登录名,我们必须使用 usermod 实用程序的 -l (--login) 选项,提供新的登录名作为第一个参数,当前登录名作为第二个参数。假设我们要更改登录名 “newuser”到“linuxconfig”,我们将运行:

$ sudo usermod -l linuxconfig newuser

请注意,运行上述命令只会更改用户登录名,不会更改任何其他内容。用户的主目录不会被重命名。如果您还想进行这些其他更改,请查看下一部分。

更改用户主目录并移动所有用户文件

有时我们可能需要更改用户的主目录。要完成该任务,我们必须使用 -d 选项(--home 的缩写)运行 usermod 实用程序,并指定新目录的路径。如果我们还想移动当前主目录中存在的所有文件,我们还应该提供 -m 选项,它是 --move-home 的缩写。仅当当前主目录实际存在时才会创建新的主目录;文件所有权、模式、ACL 和扩展属性将适应新设置,但可能需要进行额外的手动更改。要将 newuser 用户的目录(实际上是 /home/newuser)更改为 /home/newuser_new,并移动所有文件, 因此我们会运行:

$ sudo usermod -d /home/newuser_new -m newuser

使用 userdel 实用程序删除用户

我们看到了一些如何创建和修改用户帐户的示例,现在让我们看看如何使用 userdel 实用程序删除一个及所有相关文件。 userdel 实用程序的语法与我们之前看到的 useradd 和 usermod 相同:

userdel [options] LOGIN

由于显而易见的原因,该实用程序的选项比 useradd 和 usermod 少。最常见的使用案例是删除用户帐户及其主目录和假脱机目录中包含的所有文件以及这些目录本身。为了完成这样的任务,我们将使用 -r (--remove) 选项运行 userdel。假设我们要删除“newuser”帐户、其主目录和假脱机目录,我们将运行:

$ sudo userdel -r newuser

如果用户当前已登录,我们将收到错误,系统将拒绝删除它。如果我们想强制执行该操作,我们还必须使用 -f (--force) 选项。被警告!使用此选项是危险的,因为它可能会使系统处于不一致的状态。

结论

在本教程中,我们了解了如何使用 useradd、usermod 和 userdel 系统实用程序分别创建、修改和删除用户帐户。我们看到了一些示例和用例。有关可与这些实用程序一起使用的所有选项的完整概述,请查阅其手册。

©2015-2025 Norria support@alaica.com