Linux命令:usermod
usermod 命令
基本介绍
usermod(User Modify)是 Linux 系统中用于修改用户账户信息的命令。它可以修改用户的用户名、用户ID(UID)、用户组、主目录、登录shell等属性。usermod是系统管理员管理用户账户的重要工具。
资料合集:https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a
语法
usermod [OPTIONS] USERNAME常用选项
基本选项
-c, --comment=COMMENT:设置用户注释信息(GECOS字段)-d, --home=HOME_DIR:设置用户主目录-e, --expiredate=EXPIRE_DATE:设置账户过期日期(格式:YYYY-MM-DD)-f, --inactive=INACTIVE:设置账户过期后多少天禁用-g, --gid=GROUP:设置用户的主组-G, --groups=GROUPS:设置用户的附加组(逗号分隔)-h, --help:显示帮助信息-l, --login=NEW_LOGIN:修改用户名-L, --lock:锁定用户账户-m, --move-home:移动用户主目录-o, --non-unique:允许使用非唯一的UID-p, --password=PASSWORD:设置用户密码(加密格式)-R, --root=PATH:指定根目录路径-s, --shell=SHELL:设置用户登录shell-u, --uid=UID:设置用户ID-U, --unlock:解锁用户账户-Z, --selinux-user=SEUSER:设置SELinux用户映射
使用示例
1. 修改用户名
usermod-lnewname oldname2. 修改用户UID
usermod-u1001username3. 修改用户主组
usermod-gdevelopers username4. 添加用户到附加组
usermod-Gsudo,developers username5. 添加用户到附加组(保留现有组)
usermod-aGsudousername6. 修改用户主目录
usermod-d/home/newhome username7. 修改主目录并移动文件
usermod-md/home/newhome username8. 修改登录shell
usermod-s/bin/bash usernameusermod-s/usr/bin/zsh username9. 锁定用户账户
usermod-Lusername10. 解锁用户账户
usermod-Uusername11. 设置账户过期日期
usermod-e2025-12-31 username12. 设置账户过期后禁用天数
usermod-f7username13. 设置用户注释
usermod-c"John Doe, IT Department"username14. 设置SELinux用户映射
usermod-Zstaff_u username输出格式说明
成功执行
# 无输出,直接修改成功错误输出示例
usermod: user 'username' does not exist usermod: UID '1001' already exists用户修改流程
修改用户信息的步骤
# 1. 查看用户当前信息idusernamecat/etc/passwd|grepusername# 2. 修改用户名usermod-lnewname oldname# 3. 修改UIDusermod-u1001username# 4. 修改主目录(并移动文件)usermod-md/home/newhome username# 5. 添加到附加组usermod-aGsudousername# 6. 验证修改idusername相关文件
| 文件 | 说明 |
|---|---|
/etc/passwd | 用户账户信息 |
/etc/group | 用户组信息 |
/etc/shadow | 用户密码(加密) |
/home/username | 用户主目录 |
实用技巧
批量修改用户
#!/bin/bash# 修改多个用户的shellforuserinuser1 user2 user3;doecho"Modifying shell for$user..."usermod-s/bin/bash"$user"done创建受限用户
#!/bin/bashUSERNAME="limiteduser"# 创建用户useradd-m"$USERNAME"# 设置受限shellusermod-s/usr/bin/rbash"$USERNAME"# 设置账户过期usermod-e2025-12-31"$USERNAME"echo"User$USERNAMEcreated with restrictions"修改用户并同步文件权限
#!/bin/bashOLD_UID=1000NEW_UID=1001USERNAME="username"# 修改UIDusermod-u"$NEW_UID""$USERNAME"# 更新文件所有权find/-user"$OLD_UID"-execchown"$NEW_UID"{}\;2>/dev/null检查用户信息
# 查看用户详细信息idusername# 查看用户密码状态passwd-Susername# 查看用户所属组groupsusername相关命令
useradd:添加用户userdel:删除用户groupadd:添加用户组groupdel:删除用户组id:显示用户和组信息passwd:设置用户密码chown:修改文件所有者chgrp:修改文件组
注意事项
- 权限要求:
usermod需要 root 权限 - 用户登录:修改用户名或UID前,应确保用户没有运行中的进程
- UID唯一性:默认情况下UID必须唯一,使用
-o选项允许非唯一UID - 主目录移动:使用
-m选项会移动用户主目录的内容 - 文件所有权:修改UID后,旧UID拥有的文件需要手动更新所有权
- 密码设置:
-p选项需要提供加密后的密码 - SELinux:修改用户后可能需要更新SELinux上下文
总结
usermod是 Linux 系统中修改用户账户信息的工具。它可以修改用户名、UID、GID、主目录、登录shell等属性。修改用户信息时应注意用户的当前状态,必要时先终止用户进程。usermod是系统管理员管理用户账户的重要工具。
