Linux系统中的Usermod命令

评论 0 浏览 0 2020-09-02

usermod是一个命令行工具,允许你修改一个用户的登录信息。

本文介绍了如何使用usermod命令将一个用户添加到一个组中,改变用户的shell、登录名、主目录等。

usermod 命令

usermod命令的语法有以下形式。

usermod [options] USER

只有root或具有sudo权限的用户可以调用usermod并修改一个用户账户。成功后,该命令不显示任何输出。

将用户添加到群组

usermod最典型的使用情况是将一个用户添加到一个组中。

要把一个现有的用户添加到一个二级组中,使用-a -G选项,后跟着组的名称和用户名。

usermod -a -G GROUP USER

如果你想一次将用户添加到多个组,请在-G选项后指定组,用,(逗号)隔开,中间不要有空格。

例如,要把用户linuxize添加到games组,你要运行下面的命令。

sudo usermod -a -G games linuxize

当添加用户到一个新的组时,总是使用-a(追加)选项。如果你省略了-a选项,该用户将被从-G选项后未列出的组中删除。

如果该用户或组不存在,该命令会警告你。

改变用户主要组别

要改变一个用户的主组,请调用usermod命令,并在-g选项后面加上组的名称和用户名。

sudo usermod -g GROUP USER

在下面的例子中,我们要把用户linuxize的主要组别改为developers

usermod -g developers linuxize

每个用户只能属于一个主要组和零个或多个次要组。

变更用户信息

要改变GECOS(用户的全名)信息,请运行带有-c选项的命令,并在后面加上新的注释和用户名。

usermod -c "GECOS Comment" USER

下面是一个例子,显示了如何为用户linuxize添加额外的信息。

usermod -c "Test User" linuxize

这些信息被储存在/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,在运行该命令时,在shell的绝对路径和用户的名字后面加上-s选项。

usermod -s SHELL USER

在下面的例子中,我们要把用户的shell改成Zsh。

sudo usermod -s /usr/bin/zsh linuxize

你可以通过显示/etc/shells文件的内容来找出系统上可用的 shell。

改变一个用户的UID

UID(用户标识符)是分配给每个用户的一个数字。它被操作系统用来指代一个用户。

要改变用户的UID,请调用-u选项,后面跟上新的UID和用户的名字。

usermod -u UID USER

下面的例子显示了如何将 "UID "号码改为 "1050"。

sudo usermod -u 1050 linuxize

由用户拥有并位于用户主目录下的文件的UID,以及用户的邮箱文件将被自动改变。所有其他文件的所有权必须手动改变。

更改用户名称

虽然不是很经常,但有时你可能想改变一个现有用户的名字。-l选项是用来改变用户名的。

usermod -l NEW_USER USER

在下面的例子中,我们将用户linuxize重命名为lisa,以 "1050"为UID。

sudo usermod -l linuxize lisa

当改变用户名时,你可能还想改变用户的主目录,以反映新的用户名。

设置用户的到期日

过期日期是指用户账户将被禁用的日期。要设置用户的过期日期,请使用-e选项。

sudo usermod -e DATE USER

过期日期必须使用YYYY-MM-DD的格式来设置。

例如,要禁用2022-02-21上的用户linuxize,你要运行下面的命令。

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

要禁用一个账户过期,请设置一个空的过期日期:

sudo usermod -e "" linuxize

使用chage -l命令查看用户的到期日。

sudo chage -l linuxize

输出

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文件中的密码字段包含一个感叹号时,用户将无法使用密码认证登录系统。其他登录方式,如基于钥匙的认证切换到用户仍被允许。如果你想锁定账户并禁用所有的登录方式,你还需要将过期日期设置为1。

下面的例子显示了如何锁定用户linuxize

sudo usermod -L linuxize
sudo usermod -L -e 1 linuxize

要解锁一个用户,请运行带有-U选项的usermod

usermod -U USER

总结

我们已经向你展示了如何使用usermod命令来设置用户的账户信息。

如果你有任何问题,请随时留言评论。

最后更新2023-08-07
0 个评论
标签