Linux基本功系列之usermod命令实战

简介: Linux基本功系列之usermod命令实战

@[toc]

01. 命令概述

使用useradd添加的用户,如果不小心添加错了用户信息该如何修改呢?

这时候就会用到usermod 命令

usermod命令用于修改用户账号 。usermod可用来修改用户账号的各项设定,修改系统账号文件来反映通过命令行指定的变化。

这里一定要分清 useradd 命令和 usermod 命令的区别,前者用于添加用户,当然,添加用户时可以对用户信息进行定制;后者针对与已存在的用户,使用该命令可以修改它们的信息。

02. 命令格式

用法:usermod [参数] 用户名

usermod的参数和useradd的参数大同小异,这里我们可以使用 usermod --help来查看常用的命令参数选项:

03. 常用选项

[root@mufenggrow ~]# usermod --help
用法:usermod [选项] 登录

选项:
  -c, --comment 注释            GECOS 字段的新值
  -d, --home HOME_DIR           用户的新主目录
  -e, --expiredate EXPIRE_DATE  设定帐户过期的日期为 EXPIRE_DATE
  -f, --inactive INACTIVE       过期 INACTIVE 天数后,设定密码为失效状态
  -g, --gid GROUP               强制使用 GROUP 为新主组
  -G, --groups GROUPS           新的附加组列表 GROUPS
  -a, --append GROUP            将用户追加至上边 -G 中提到的附加组中,
                                并不从其它组中删除此用户
  -h, --help                    显示此帮助信息并推出
  -l, --login LOGIN             新的登录名称
  -L, --lock                    锁定用户帐号
  -m, --move-home               将家目录内容移至新位置 (仅于 -d 一起使用)
  -o, --non-unique              允许使用重复的(非唯一的) UID
  -p, --password PASSWORD       将加密过的密码 (PASSWORD) 设为新密码
  -R, --root CHROOT_DIR         chroot 到的目录
  -s, --shell SHELL             该用户帐号的新登录 shell
  -u, --uid UID                 用户帐号的新 UID
  -U, --unlock                  解锁用户帐号
  -Z, --selinux-user  SEUSER       用户账户的新 SELinux 用户映射

从上面的执行代码中可以看到,有很多参数与usermod相同,比如 -g 参数,指的是更换新的熟组。

04. 参考示例

4.1 修改用户的UID

## 创建测试用户
[root@mufenggrow ~]# useradd oracle
[root@mufenggrow ~]# id oracle
uid=1002(oracle) gid=1002(oracle) 组=1002(oracle)
## 修改用户的UID
[root@mufenggrow ~]# usermod -u 1111 oracle
[root@mufenggrow ~]# id oracle
uid=1111(oracle) gid=1002(oracle) 组=1002(oracle)
[root@mufenggrow ~]# 

4.2 修改shell

## 查看oracle用户原来的shell
[root@mufenggrow ~]# grep oracle /etc/passwd
oracle:x:1111:1002::/home/oracle:/bin/bash
## 修改shell
[root@mufenggrow ~]# usermod -s /sbin/nologin oracle
[root@mufenggrow ~]# !grep
grep oracle /etc/passwd
oracle:x:1111:1002::/home/oracle:/sbin/nologin

4.3 更改用户主目录

## 先登录到用户家目录创建一个文件便于测试
[root@mufenggrow ~]# cd /home/oracle/
[root@mufenggrow oracle]# touch a.txt
## 可以看到刚刚创建的文件
[root@mufenggrow oracle]# ll
总用量 0
-rw-r--r--. 1 root root 0 1月  18 20:03 a.txt
## 使用-d参数移动家目录
[root@mufenggrow oracle]# usermod  -m -d /tmp/mufeng oracle
[root@mufenggrow oracle]# cd /tmp/mufeng
## 可以看到家目录已经移动过来了
[root@mufenggrow mufeng]# ls
a.txt

这里的 -m选项会自动创建新目录并且移到内容到新目录里面

4.4 添加说明信息

## 查看没有添加之前的信息
[root@mufenggrow mufeng]# grep oracle /etc/passwd
oracle:x:1111:1002::/tmp/mufeng:/sbin/nologin
## 使用-c参数添加
[root@mufenggrow mufeng]# usermod -c "i am mufeng" oracle
## 查看添加之后的信息
[root@mufenggrow mufeng]# grep oracle /etc/passwd
oracle:x:1111:1002:i am mufeng:/tmp/mufeng:/sbin/nologin

4.5 修改用户名为zhangsan

[root@mufenggrow mufeng]# usermod -l zhangsan oracle
[root@mufenggrow mufeng]# id zhangsan
uid=1111(zhangsan) gid=1002(oracle) 组=1002(oracle)
# 可以看到原来的用户没有了
[root@mufenggrow mufeng]# id oracle
id: oracle: no such user

此处需要注意,把oracle 改为zhangsan

语法为:

usermod -l 新用户 要修改的用户名

4.6 锁定用户mufeng

[root@mufenggrow mufeng]# usermod -L mufeng

4.7 解锁用户mufeng

[root@mufenggrow mufeng]# usermod -U mufeng

4.8 添加新的附加组

[root@mufenggrow mufeng]# usermod -U root mufeng

4.9 指定帐号过期日期

[root@mufenggrow mufeng]# usermod -e 2023/11/11 mufeng

## 查看过期时间
[root@mufenggrow mufeng]# chage -l mufeng
最近一次密码修改时间                    :1月 18, 2023
密码过期时间                    :从不
密码失效时间                    :从不
帐户过期时间                        :11月 11, 2023
两次改变密码之间相距的最小天数        :0
两次改变密码之间相距的最大天数        :99999
在密码过期之前警告的天数    :7

4.10 指定用户帐号密码过期多少天后,禁用该帐号

## 先查看lisi用户的账号信息
[root@mufenggrow mufeng]# sed -n '$p' /etc/shadow
lisi:!!:19375:0:99999:7:::
## 使用 -f餐宿进行修改
[root@mufenggrow mufeng]# usermod -f 30 lisi
[root@mufenggrow mufeng]# !sed
sed -n '$p' /etc/shadow
lisi:!!:19375:0:99999:7:30::

可以看到实效的时间已经变成了30天

05. 附录

linux系统基本功命令实战汇总参考链接:linux基本功之命令篇系列博文汇总

相关文章
|
22天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
50 14
Linux 10 个“who”命令示例
|
1天前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
22 8
|
11天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
90 20
|
11天前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
35 7
|
29天前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解
|
Linux Shell Unix
带你读《Linux实战》之一:欢迎使用Linux
你正在期望学习管理Linux计算机吗?这是一个很好的选择。虽然Linux常常驻留于消费者的桌面计算机上,但它同时也是服务器领域的绝对主宰,特别是虚拟服务器和云服务器。如果你打算管理当前引人关注的服务器和网络体系架构,你将不得不围绕Linux的命令行展开学习。除了第1章之外,本书的每一章都包括一个或两个实际项目。鉴于第1章的内容主要用来填补你的Linux知识体系中可能存在的基础知识空白,因此其组织形式与其他章节有所不同。
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
110 8
|
1月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
410 6
|
1月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
93 3
|
1月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
81 2