Linux系统中的Usermod命令
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
命令来设置用户的账户信息。
如果你有任何问题,请随时留言评论。