介绍


创建用户帐户后,在一些需要更改现有用户属性的场景中,例如更改用户的主目录、登录名、登录 shell、密码到期日期等,在这种情况下使用 usermod 命令。

当我们在终端中执行 usermod 命令时,会使用和影响以下文件。

  • /etc/passwd– 用户帐户信息。
  • /etc/shadow– 帐户密码信息。
  • /etc/group– 组帐户信息。
  • /etc/gshadow– 组密码信息。
  • /etc/login.defs– 是设置用户帐号限制的文件。该文件里的配置对root用户无效。

usermod命令的基本语法是


usermod [options] username

usermod要求


我们必须有现有的用户帐户才能执行 usermod 命令。
只允许超级用户(root)执行 usermod 命令。
usermod 命令可以在任何 Linux 发行版上执行。
必须具有带选项的 usermod 命令的基本知识

usermod 的选项


这 usermod 命令使用起来很简单,有很多选项可以对现有用户进行更改。让我们通过以下选项的帮助,通过修改 Linux box 中的一些现有用户来看看如何使用 usermod 命令。

  • -c= 我们可以为用户帐户添加评论字段。
  • -d= 修改任何现有用户帐户的目录。
  • -e= 使用此选项,我们可以使帐户在特定时期到期。
  • -g= 更改用户的主要组。
  • -G= 添加补充组。
  • -a= 将组中的任何人添加到辅助组。
  • -l= 将登录名从 rumenz 更改为 rumenz_admin。
  • -L= 锁定用户帐户。这将锁定密码,因此我们无法使用该帐户。
  • -m= 将主目录的内容从现有主目录移动到新目录。
  • -p= 使用未加密的密码作为新密码。(不安全)。
  • -s= 为新帐户创建一个指定的 shell。
  • -u= 用于为 0 到 999 之间的用户帐户分配 UID。
  • -U= 解锁用户帐户。这将删除密码锁并允许我们使用用户帐户。

1. 向用户账户添加信息


-c 选项用于设置关于用户帐户的简短备注。例如添加有关的信息rumenz 用户,使用以下命令。

usermod -c "This is rumenz" rumenz

添加用户信息后,相同的评论可以在/etc/passwd文件。

grep -E --color 'rumenz' /etc/passwd
rumenz:x:500:500:This is rumenz:/home/rumenz:/bin/sh

2. 更改用户主目录


在上面的步骤中,我们可以看到我们的主目录在/home/rumenz/下,如果我们需要将其更改为其他目录,我们可以使用-d选项和 usermod 命令来更改它。

例如,我想将我们的主目录更改为/var/www/,但在更改之前,让我们使用以下命令检查用户的当前主目录。

grep -E --color '/home/rumenz' /etc/passwd
rumenz:x:500:500:This is rumenz:/home/rumenz:/bin/sh

现在,将主目录从/home/rumenz到/var/www/并在更改后确认主控制器。

usermod -d /var/www/ rumenz
grep -E --color '/var/www/' /etc/passwd
rumenz:x:500:500:This is rumenz:/var/www:/bin/sh

3. 设置用户账户到期日


选项 -e 用于在具有日期格式的用户帐户上设置到期日期YYYY-MM-DD.在为用户设置到期日期之前,让我们首先使用检查当前帐户的到期状态chage(更改用户密码到期信息)命令。

chage -l rumenz
    
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

到期状态rumenz 用户是2021 年 12 月 1 日,将其更改为2021 年 11 月 1 日 usermod -e选项并用确认到期日期chage 命令。

usermod -e 2014-11-01 rumenz
chage -l rumenz
    
Last password change     : Nov 02, 2021
Password expires     : never
Password inactive     : never
Account expires      : Nov 01, 2021
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 命令。在更改用户主要组之前,首先确保检查用户rumenz_test的当前组。

id rumenz_test
uid=501(rumenz_test) gid=502(rumenz_test) groups=502(rumenz_test)

现在,将babin组设置为用户rumenz_test的主要组并确认更改。

usermod -g babin rumenz_test
id rumenz_test
    
uid=501(rumenz_test) gid=502(babin) groups=502(rumenz_test)

5. 向现有用户添加组


如果您想添加一个名为rumenz_test0的新组到rumenz用户,您可以使用选项-G 使用 usermod 命令,如下所示。

usermod -G rumenz_test0 rumenz
id rumenz

将组添加到用户

Note: 在向现有用户添加新组时使用 -G单独选项,将删除用户所属的所有现有组。所以,总是添加 -a(附加)与-G 添加或追加新组的选项。

6. 为用户添加补充组和主组


如果您需要将用户添加到任何一个补充组,您可以使用选项 -a和-G。例如,这里我们要添加一个用户帐户rumenz_test0与wheel用户。

usermod -a -G wheel rumenz_test0
id rumenz_test0

因此,用户rumenz_test0保留在其主要组和次要组中(wheel)。这将使我的普通用户帐户在 Linux 框中执行任何 root 特权命令。

eg : sudo service httpd restart

7. 更改用户登录名


要更改任何现有的用户登录名,我们可以使用 -l(帐号名称)选项。在下面的示例中,我们更改登录名rumenz到rumenz_admin.所以用户名rumenz已使用新名称重命名rumenz_admin.

usermod -l rumenz_admin rumenz

现在检查rumenz用户,它将不存在,因为我们已将其更改为rumenz_admin.

id rumenz

检查rumenz_admin帐户它将以相同的方式存在UID以及我们之前添加的现有组。

id rumenz_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. 将用户主目录移动到新位置


可以使用选项 -d和-m 将现有用户文件从当前主目录移动到新的主目录。

检查帐户及其当前主目录。

grep -E --color 'pinky' /etc/passwd

然后列出用户拥有的文件。

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 (密码)。出于演示目的,我正在设置一个新密码,例如 redhat 对用户pinky.

usermod -p redhat pinky

设置密码后,现在检查影子文件,看看它是加密格式还是未加密格式。

grep -E --color 'pinky' /etc/shadow

12. 更改用户shell


用户登录shell可以在用户创建期间更改或定义useradd命令或更改为 usermod命令使用选项-s (shell)。例如,用户 babin 有/bin/bashshell 默认情况下,现在我想将其更改为/bin/sh.

grep -E --color 'babin' /etc/passwd
usermod -s /bin/sh babin

更改用户shell后,使用以下命令验证用户shell。

grep -E --color 'babin' /etc/passwd

更改用户登录shell

13. 更改用户 ID (UID)


在下面的示例中,您可以看到我的用户帐户 babin 持有的 UID502,现在我想把它改成888作为我的 UID。我们可以在之间分配 UID0到999.

grep -E --color 'babin' /etc/passwd
OR
id babin

现在,让我们更改用户的 UIDbabin使用 -u (uid) 选项并验证更改。

usermod -u 888 babin
id babin

更改用户 UID

14. 使用多个选项修改用户帐户


这里我们有一个用户rumenz,现在我想使用一个带有我们上面讨论的所有选项的单个命令一次修改他的主目录、shell、到期日期、标签、UID 和组。

用户rumenz的默认主目录为/home/rumenz,现在我想将其更改为/var/www/html并将其 shell 指定为bash,将到期日期设置为 2021 年 12 月 10 日,添加新标签为This is rumenz,更改 UID 到 555,改到deploy组。

现在让我们看看如何使用多个选项修改 rumenz 帐户。

usermod -d /var/www/html/ -s /bin/bash -e 2021-12-10 -c "This is rumenz" -u 555 -aG deploy rumenz

然后检查 UID 和主目录更改。

grep -E --color 'rumenz' /etc/passwd

帐户过期检查。

chage -l rumenz

检查所有 rumenz 都加入的组。

grep -E --color 'rumenz' /etc/group

对 usermod 使用多个选项

15. 更改用户的 UID 和 GID


我们可以更改当前用户的 UID 和 GID。要更改为新 GID,我们需要一个现有组。这里已经有一个名为orange的帐户,其 GID 为777。

现在,我的 rumenz 用户帐户要分配给666 的UID和 Orange (777) 的GID。

在修改之前检查当前的 UID 和 GID。

id rumenz

修改 UID 和 GID。

usermod -u 666 -g 777 rumenz

检查更改。

id rumenz

CSDN_码404:linux使用usermod修改用户主目录
https://www.code404.icu/1427.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐