usermod 是一个命令行程序,可让您修改用户的登录信息和所属组。本教程介绍如何使用 usermod 命令将用户加入到指定组。

更改用户默认的登录 Shell,UID,登录名,家目录,更改/修改用户主要组,更改GECOS/用户的全名信息。

修改用户的有效期限或者是到期日期,锁定或者解锁用户帐号,禁止用户登录。

usermod 命令

usermod 命令的语法形式是 usermod [options] USERoptionsusermod 命令的选项,可选参数。USER 是 Linux 系统用户名。

只有root用户或具有 sudo 权限的用户才能运行 usermod 命令并修改用户帐户。usermod 成功后不打印任何输出,且退出代码是0。

添加用户到次要组

usermod 最典型的用例是将用户加入指定的组。要将用户添加到次要组,请使用usermod 命令的 -a-G 选项,然后输入组的名称和用户名。

将用户添加次要组时,你应该始终使用 -a 选项追加。如果省略 -a 选项,则用户将从 -G 选项之后未列出的组中删除。

如果要一次将用户添加到多个组,请在 -G 选项指定多个组名称,并使用逗号,分隔。

例如命令 sudo usermod -a -G games myfreax 会将用户 myfreax 添加到 games 组。如果指定的用户或组不存在,usermod 命令将给出警告且退出代码不为0。

#usermod -a -G GROUP USER
sudo usermod -a -G games myfreax

修改用户主要组

要更改用户的主要组,请使用 usermod 命令的 -g 选项,后跟组名称和用户名。每个用户仅有一个主要组,零个或多个次要组。

因此,如果你修改用户的主要组,用户将会离开与用户名同名的主要组。如果你只是让用户加入组拥有相应权限,请将用户添加到次要组。

例如命令 sudo usermod -g developers myfreax 用户 myfreax 的主要组更改为developers

#sudo usermod -g GROUP USER
sudo usermod -g developers myfreax

修改用户信息

要更改 GECOS 或者用户的全名信息,请使用 -c 选项,后跟新的注释和用户名。此信息存储在/etc/passwd文件中。

GECOS 信息通常用于记录帐户或用户的一般信息,例如他们的真实姓名和电话号码,也可以是自定义的任何信息。

例如命令 sudo usermod -c "Test User" myfreax 将会修改用户 myfreax 的 GECOS 信息。

#usermod -c "GECOS Comment" USER
sudo usermod -c "Test User" myfreax

修改用户家目录

在大多数 Linux 系统上,用户家目录以用户的名称作为目录的名称,并将其存在目录 /home。

如果由于某种原因要更改用户的家目录。请使用 usermod 命令 -d 选项,后跟家目录的绝对路径和用户名。

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

例如命令 usermod -d /var/www www-data 会将 www-data 用户的家目录更改为/var/www

#usermod -d HOME_DIR USER
#usermod -d HOME_DIR -m USER
usermod -d /var/www www-data

修改用户默认登录 Shell

Shell 是 Linux/UNIX 操作系统的用户和计算机的交互接口。可以让用户直接输入命令来执行各种各样的任务。可以运行 cat 命令查看 /etc/shells 文件的内容,找到系统可用的Shell。

默认 Shell 程序是登录系统后运行的 Shell 程序。在大多数Linux系统,默认 Shell 设置为 Bash Shell。

要更改用户的默认 Shell 程序,请使用 usermod 命令的 -s 选项。后跟 Shell 程序的绝对路径和用户名。

例如命令 sudo usermod -s /usr/bin/zsh myfreax 修改用户 myfreax 的默认 Shell 为Zsh。

#usermod -s SHELL USER
cat /etc/shells
sudo usermod -s /usr/bin/zsh myfreax

usermod 命令修改用户UID

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

在修改用户的UID时,usermod命令将会帮助你修改用户在家目录拥有所有权的文件,包括用户的邮箱文件。其他文件的所有权必须手动更改。

例如命令sudo usermod -u 1050 myfreax,将会修改myfreax用户的UID为1050。

#usermod -u UID USER
sudo usermod -u 1050 myfreax

修改用户名

尽管不是很经常,但有时您可能想要更改现有用户的名称。usermod 命令的 -l 选项允许你修改用户的名称。

在更改用户名时,您可能还希望修改用户的家目录名称以对应新的用户名变化。要修改用户家目录,请参考 usermod 命令更改用户家目录。

例如命令 sudo usermod -l myfreax lisa 将会修改 myfreax 用户名称为 lisa

usermod -l NEW_USER USER
sudo usermod -l myfreax lisa

设置用户有效期限

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

到期日期必须使用格式 YYYY-MM-DD。要停止帐户的到期时间,请设置一个空的到期日期,表示永远不会到期。

如果你需要验证是否设置成功或者查看用户有效期,请运行命令 chage -l 命令查看用户的有效期。到期日期存储在 /etc/shadow 文件。

例如要在 2022-02-21 禁用用户 myfreax,请运行命令 sudo usermod -e "2022-02-21" myfreax

#sudo usermod -e DATE USER
sudo usermod -e "2022-02-21" myfreax
sudo usermod -e "" myfreax #永远不会过期
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

锁定和解锁用户帐户

要锁定用户请使用 usermod 命令的 -L 选项,被锁定的用户将在加密密码的前面插入一个感叹号!。 要解锁用户,请使用 usermod 命令的 -U 选项。

/etc/shadow 文件中的密码字段包含感叹号时,用户将无法使用密码登录到系统。 但仍然允许使用其他登录方法。

例如基于密钥的身份验证或使用 su 命令切换用户。如果要锁定用户并禁用所有登录方法,则还需要将到期日期设置为 1。

例如命令 sudo usermod -L myfreax 将会锁定用户myfreax

#usermod -L USER
sudo usermod -L myfreax

命令 sudo usermod -L -e 1 myfreax 锁定 myfreax 用户并禁用所有登录方法。

sudo usermod -L -e 1 myfreax

命令 sudo usermod -U myfreax 解锁myfreax用户。

#usermod -U USER
sudo usermod -U myfreax

结论

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