myfreax

Linux的usermod命令

usermod是一个命令行程序,可让您修改用户的登录信息。本文介绍如何使用usermod命令将用户添加到组,更改用户shell,登录名,主(home)目录等

6 min read
By myfreax
Linux的usermod命令

usermod是一个命令行程序,可让您修改用户的登录信息。本教程介绍如何使用usermod命令将用户添加到组,更改用户默认的登录shell,UID,登录名,家目录,更改/修改用户主要组,更改GECOS/用户的全名信息,用户的有效期限/到期日期,锁定/解锁用户帐号,禁止用户登录。

usermod命令

usermod命令的语法采用以下形式:

usermod [options] USER

只有root用户或具有sudo权限的用户才能调用usermod并修改用户帐户。 成功后,该命令将不显示任何输出。

添加用户到其它组

usermod最典型的用例是将用户添加到组中。要将现有用户添加到辅助组,请使用-a-G选项,然后输入组的名称和用户名:

usermod -a -G GROUP USER

如果要一次将用户添加到多个组,请在-G选项后指定由逗号,分隔的组,中间不留空格。例如,要将用户myfreax添加到games组,您可以运行以下命令:

sudo usermod -a -G games myfreax

将用户添加到新组时,始终使用-a追加选项。 如果省略-a选项,则该用户将从-G选项之后未列出的组中删除。如果该用户或组不存在,该命令将给出警告。

更改/修改用户主要组

要更改用户的主要组,调用usermod命令使用-g选项,然后输入主要组名称和用户名:

sudo usermod -g GROUP USER

在以下示例中,我们将用户myfreax的主要组更改为developers

usermod -g developers myfreax

每个用户可以完全属于一个主要组,零个或多个次要组。

更改用户信息

要更改GECOS/用户的全名信息,请使用-c选项,后跟新的注释和用户名:

usermod -c "GECOS Comment" USER

以下是显示如何向用户myfreax添加GECOS信息的示例:

usermod -c "Test User" myfreax

此信息存储在/etc/passwd文件中。

更改/修改用户家目录

在大多数Linux系统上,用户家目录以用户名命名,并在/home目录下创建家目录。如果由于某种原因要更改用户的家目录。调用usermod命令时,请使用-d选项,后接新的家目录的绝对路径和用户名:

usermod -d HOME_DIR USER

默认情况下,该命令不会将用户家目录的内容移至新的家目录。 要移动内容,请使用-m选项。 如果新目录尚不存在,则会创建它:

usermod -d HOME_DIR -m USER

这里是显示如何将用户www-data的家目录更改为/var/www的示例:

usermod -d /var/www www-data

修改用户默认Shell

默认Shell程序是登录系统后运行的Shell程序。 默认情况下,在大多数Linux系统上,默认shell设置为Bash Shell。要更改用户的默认Shell程序,请使用-s选项运行命令。后接Shell程序的绝对路径和用户名:

usermod -s SHELL USER

在以下示例中,我们将用户Shell更改为Zsh:

sudo usermod -s /usr/bin/zsh myfreax

通过cat命令打印/etc/shells文件的内容,可以找出系统上可用的Shell程序。

cat /etc/shells

更改用户UID

UID用户标识符是分配给每个用户的号码。 操作系统使用它来指代用户。要更改用户UID,使用-u选项调用usermod命令,后接新的UID和用户名:

usermod -u UID USER

以下示例显示了如何将用户myfreax的UID更改为1050:

sudo usermod -u 1050 myfreax

家目录中用户拥有的文件和用户的邮箱文件将自动更改所有权。 其他文件的所有权必须手动更改。

更改用户名

尽管不是很经常,但有时您可能想要更改现有用户的名称。 -l选项用于更改用户名:

usermod -l NEW_USER USER

在下面的示例中,我们将用户myfreax,从myfreax重命名为lisa

sudo usermod -l myfreax lisa

更改用户名时,您可能还希望更改用户的家目录以响应新的用户名变化。

设置用户有效期限

到期日期是将禁用用户帐户的日期。 要设置用户的到期日期,请使用-e选项:

sudo usermod -e DATE USER

到期日期必须使用格式YYYY-MM-DD。例如,要在2022-02-21上禁用用户myfreax,您可以运行以下命令:

sudo usermod -e "2022-02-21" myfreax

要停止帐户的到期时间,请设置一个空的到期日期,表示永远不会到期:

sudo usermod -e "" myfreax

你可以使用chage -l命令查看用户的到期日期:

sudo chage -l myfreax
Last password change					: Jul 24, 2018
Password expires					: never
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7

到期日期存储在/etc/shadow文件中。

锁定和解锁用户帐户

-L选项可让您锁定用户帐户:

usermod -L USER

该命令将在加密密码的前面插入一个感叹号!。 当/etc/shadow文件中的密码字段包含感叹号时,用户将无法使用密码身份验证登录到系统。

但仍然允许使用其他登录方法,例如基于密钥的身份验证使用su命令切换用户。 如果要锁定帐户并禁用所有登录方法,则还需要将到期日期设置为1。以下示例显示了如何锁定用户myfreax

sudo usermod -L myfreax

锁定帐户并禁用所有登录方法:

sudo usermod -L -e 1 myfreax

要解锁用户,请使用-U选项运行usermod

usermod -U USER

结论

我们已经向您展示了如何使用usermod命令设置用户帐户信息。如有任何疑问,请随时发表评论。

Related Articles