“usermod”命令使用完整指南 - 15 个带屏幕截图的实际示例
在 Unix/Linux 发行版中,命令“usermod”用于通过命令行修改或更改已创建的用户帐户的任何属性。命令“usermod”与“useradd”或“adduser”类似,但登录权限授予现有用户。
命令“useradd”或“adduser”用于在 Linux 系统中创建用户帐户。要了解有关如何创建系统用户的更多信息,请阅读我们的完整指南:
- Linux 中“useradd”命令的完整指南
创建用户帐户后,在某些情况下我们需要更改现有用户的属性,例如更改用户的主目录、登录名、登录 shell、密码到期日期等,在这种情况下使用“usermod”命令。
当我们在终端中执行“usermod”命令时,以下文件将被使用并受到影响。
- /etc/passwd – 用户帐户信息。
- /etc/shadow – 保护帐户信息。
- /etc/group – 组帐户信息。
- /etc/gshadow – 保护组帐户信息。
- /etc/login.defs – 影子密码套件配置..
命令的基本语法是:
usermod [options] username
要求
- 我们必须有现有的用户帐户才能执行 usermod 命令。
- 只有超级用户(root)才被允许执行 usermod 命令。
- usermod 命令可以在任何 Linux 发行版上执行。
- 必须具备带选项的 usermod 命令的基本知识
用户模式的选项
“usermod”命令使用起来很简单,有很多选项可以对现有用户进行更改。让我们看看如何使用 usermod 命令通过在以下选项的帮助下修改 Linux 中的一些现有用户。
- -c=我们可以为用户帐户添加评论字段。
- -d=修改任何现有用户帐户的目录。
- -e=使用此选项我们可以使帐户在特定期限内到期。
- -g=更改用户的主要组。
- -G=添加补充组。
- -a=将组中的任何人添加到辅助组。
- -l=将登录名从 howtoing 更改为 howtoing_admin。
- -L=锁定用户帐户。这将锁定密码,因此我们无法使用该帐户。
- -m=将主目录的内容从现有主目录移动到新目录。
- -p=使用未加密的密码作为新密码。 (不安全)。
- -s=为新帐户创建指定的 shell。
- -u=用于为用户帐户分配 0 到 999 之间的 UID。
- -U=解锁用户帐户。这将解除密码锁定并允许我们使用用户帐户。
在本文中,我们将看到“15 usermod 命令”及其在 Linux 中的实际示例和用法,这将帮助您使用这些选项学习和增强命令行技能。
1.向用户帐户添加信息
‘-c’选项用于设置有关用户帐户的简短注释(信息)。例如,让我们使用以下命令添加有关“howtoing”用户的信息。
usermod -c "This is Tecmint" tecmint
添加用户信息后,可以在/etc/passwd文件中查看相同的注释。
grep -E --color 'tecmint' /etc/passwd
tecmint:x:500:500:This is Tecmint:/home/tecmint:/bin/sh
2. 更改用户主目录
在上面的步骤中我们可以看到我们的主目录位于 /home/howtoing/ 下,如果我们需要将其更改为其他目录,我们可以使用 -d 更改它usermod 命令的选项。
例如,我想将我们的主目录更改为 /var/www/,但在更改之前,让我们使用以下命令检查用户当前的主目录。
grep -E --color '/home/tecmint' /etc/passwd
tecmint:x:500:500:This is Tecmint:/home/tecmint:/bin/sh
现在,将主目录从 /home/howtoing 更改为 /var/www/ 并确认更改后的主目录。
usermod -d /var/www/ tecmint
grep -E --color '/var/www/' /etc/passwd
tecmint:x:500:500:This is Tecmint:/var/www:/bin/sh
3. 设置用户帐户到期日期
选项“-e”用于设置用户帐户的到期日期,日期格式为YYYY-MM-DD。在为用户设置到期日期之前,我们首先使用“chage”(更改用户密码到期信息)命令检查当前帐户的到期状态。
chage -l tecmint
Last password change : Nov 02, 2014
Password expires : never
Password inactive : never
Account expires : Dec 01, 2014
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
“howtoing”用户的到期状态是 2014 年 12 月 1 日,让我们使用“usermod -e”将其更改为 2014 年 11 月 1 日 ' 选项并使用 'chage' 命令确认到期日期。
usermod -e 2014-11-01 tecmint
chage -l tecmint
Last password change : Nov 02, 2014
Password expires : never
Password inactive : never
Account expires : Nov 01, 2014
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
4. 更改用户主要组
要设置或更改用户主要组,我们将选项“-g”与 usermod 命令一起使用。在更改用户主要组之前,首先确保检查用户howtoing_test的当前组。
id tecmint_test
uid=501(tecmint_test) gid=502(tecmint_test) groups=502(tecmint_test)
现在,将 babin 组设置为用户 howtoing_test 的主要组并确认更改。
usermod -g babin tecmint_test
id tecmint_test
uid=501(tecmint_test) gid=502(babin) groups=502(tecmint_test)
5. 为现有用户添加组
如果您想向“howtoing”用户添加一个名为“howtoing_test0”的新组,可以在 usermod 命令中使用选项“-G”如下所示。
usermod -G tecmint_test0 tecmint
id tecmint
注意:请小心,在单独使用“-G”选项向现有用户添加新组时,将会删除所有现有组用户所属。因此,请始终添加“-a”(附加)和“-G”选项来添加或附加新组。
6. 为用户添加补充组和主要组
如果您需要将用户添加到任何一个补充组,可以使用选项“-a”和“-G”。例如,这里我们将添加一个用户帐户howtoing_test0和wheel用户。
usermod -a -G wheel tecmint_test0
id tecmint_test0
因此,用户 howtoing_test0 仍保留在其主要组中,并且也在次要组 (wheel) 中。这将使我的普通用户帐户能够在 Linux 盒子中执行任何 root 特权命令。
eg : sudo service httpd restart
7. 更改用户登录名
要更改任何现有的用户登录名,我们可以使用“-l”(新登录)选项。在下面的示例中,我们将登录名 howtoing 更改为 howtoing_admin。因此,用户名 howtoing 已重命名为新名称 howtoing_admin。
usermod -l tecmint_admin tecmint
现在检查 howtoing 用户,它不会出现,因为我们已将其更改为 howtoing_admin。
id tecmint
检查 howtoing_admin 帐户,它将具有相同的 UID 以及我们之前添加的现有组。
id tecmint_admin
8. 锁定用户帐户
要锁定任何系统用户帐户,我们可以使用'-L'(锁定)选项,帐户锁定后我们无法使用密码登录,您将看到一个! 在/etc/shadow文件中的加密密码前添加,表示禁用密码。
usermod -L babin
检查帐户是否被锁定。
grep -E --color 'babin' cat /etc/shadow
9. 解锁用户帐户
“-U”选项用于解锁任何锁定的用户,这将删除加密密码之前的 !。
grep -E --color 'babin' /etc/shadow
usermod -U babin
解锁后验证用户。
grep -E --color 'babin' /etc/shadow
10. 将用户主目录移动到新位置
假设您有一个用户帐户“pinky”,主目录为“/home/pinky”,您想要移动到新位置“/var” /小指'。您可以使用选项“-d”和“-m”将现有用户文件从当前主目录移动到新的主目录。
检查帐户及其当前主目录。
grep -E --color 'pinky' /etc/passwd
然后列出用户 Pinky 拥有的文件。
ls -l /home/pinky/
现在我们必须将主目录从 /home/pinky 移动到 /var/pinky。
usermod -d /var/pinky/ -m pinky
接下来,验证目录更改。
grep -E --color 'pinky' /etc/passwd
检查“/home/pinky”下的文件。在这里,我们使用 -m 选项移动文件,因此不会有文件。小指用户文件现在将位于 /var/pinky 下。
ls -l /home/pinky/
ls -l /var/pinky/
11.为用户创建未加密的密码
要创建未加密的密码,我们使用选项“-p”(密码)。出于演示目的,我为用户 pinky 设置了一个新密码“redhat”。
usermod -p redhat pinky
设置密码后,现在检查影子文件是否为加密格式或未加密格式。
grep -E --color 'pinky' /etc/shadow
注意:您在上图中看到了吗,密码对每个人都清晰可见。因此,不建议使用此选项,因为密码将对所有用户可见。
12. 更改用户外壳
用户登录 shell 可以在用户创建期间使用 useradd 命令进行更改或定义,或者使用选项“-s”通过“usermod”命令进行更改(壳)。例如,用户'babin'默认有/bin/bash shell,现在我想将其更改为/bin/sh 。
grep -E --color 'babin' /etc/passwd
usermod -s /bin/sh babin
更改用户 shell 后,使用以下命令验证用户 shell。
grep -E --color 'babin' /etc/passwd
13. 更改用户ID (UID)
在下面的示例中,您可以看到我的用户帐户 'babin' 持有的 UID 为 502,现在我想将其更改为 888作为我的UID。我们可以分配0到999之间的UID。
grep -E --color 'babin' /etc/passwd
OR
id babin
现在,让我们使用“-u”(uid)选项更改用户 babin 的 UID 并验证更改。
usermod -u 888 babin
id babin
14. 多种方式修改用户账户
这里我们有一个用户 jack,现在我想使用一个命令以及我们上面讨论的所有选项立即修改他的主目录、shell、到期日期、标签、UID 和组。
用户Jack有默认的主目录/home/jack,现在我想将其更改为/var/www/html并分配他的shell 为 bash,设置到期日期为 2014 年 12 月 10 日,添加新标签为 This is jack,将 UID 更改为 555,他将成为 Apple 组的成员。
现在让我们看看如何使用多个选项修改 Jack 帐户。
usermod -d /var/www/html/ -s /bin/bash -e 2014-12-10 -c "This is Jack" -u 555 -aG apple jack
然后检查 UID 和主目录更改。
grep -E --color 'jack' /etc/passwd
帐户过期检查。
chage -l jack
检查所有杰克都已加入的组。
grep -E --color 'jack' /etc/group
15. 更改用户的UID和GID
我们可以更改当前用户的UID和GID。为了更改为新 GID,我们需要一个现有组。这里已经有一个名为 orange 的帐户,GID 为 777。
现在我的 jack 用户帐户想要分配 UID 为 666 和 GID 为 Orange (777)。
修改前检查当前UID和GID。
id jack
修改UID和GID。
usermod -u 666 -g 777 jack
检查是否有变化。
id jack
结论
在这里,我们已经非常详细地了解了如何使用 usermod 命令及其选项,在了解 usermod 命令之前,必须了解“useradd”命令及其选项才能使用 usermod。如果我遗漏了文章中的任何要点,请通过评论告诉我,并且不要忘记添加您的宝贵意见。