用户和组高级操作

简介: 本文介绍了Linux系统中用户和组管理的基本操作,包括使用`usermod`命令修改用户属性、使用`passwd`和`usermod`命令禁用和恢复用户账户、使用`userdel`命令删除用户账户、使用`groupadd`、`groupdel`和`groupmod`命令管理组群,以及使用`gpasswd`命令为组群添加用户。此外,还介绍了`su`和`sudo`命令的使用方法,帮助用户在不同身份之间切换。

 1 维护用户账户

1.1 修改用户账户

usermod命令用于修改用户的属性,格式为

usermod [选项] 用户名

Linux系统中的一切都是文件,因此在系统中创建用户也就是修改配置文件的过程。用户的信息保存在/etc/passwd文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息,诸如用户的UID、基本/扩展用户组、默认终端等。usermod命令的参数以及作用如下表所示。

参 数 作 用
-c 填写用户账户的备注信息
-d -m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
-e 账户的到期时间,格式为YYYY-MM-DD
-g 变更所属用户组
-G 变更扩展用户组
-L 锁定用户禁止其登录系统
-U 解锁用户,允许其登录系统
-s 变更默认终端
-u 修改用户的UID

例子:

创建用户user1,查看用户及其组信息。

[root@rhel7-lzq-01 ~]# useradd user1
[root@rhel7-lzq-01 ~]# id user1
uid=1001(user1) gid=1001(user1) 组=1001(user1)

image.gif

也可以直接通过tail 查看是否添加用户成功。

image.gif 编辑

将用户user1加入root用户组中,这样扩展组列表中会出现root用户组的字样,而基本组不会受到影响:

[root@rhel7-lzq-01 ~]# usermod -G root user1
[root@rhel7-lzq-01 ~]# id user1
uid=1001(user1) gid=1001(user1) 组=1001(user1),0(root)

image.gif

用-g参数修改用户的基本组ID,用-G参数修改用户扩展组ID

[root@rhel7-lzq-01 ~]# id user1
uid=1001(user1) gid=1001(user1) 组=1001(user1),0(root)
[root@rhel7-lzq-01 ~]# usermod -u 8888 user1
[root@rhel7-lzq-01 ~]# id user1
uid=8888(user1) gid=1001(user1) 组=1001(user1),0(root)

image.gif

修改用户user1的主目录为/var/user1,把启动shell修改为/bin/tcsh,完成后恢复到初始状态,操作如下:

#### 默认目录和shell编辑器 ########
[root@rhel7-lzq-01 ~]# tail -n 5 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
lu:x:1000:1000:lu:/home/lu:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash

image.gif

#### 修改目录:########
[root@rhel7-lzq-01 ~]# usermod -d /var/user1 -s /bin/tcsh user1
[root@rhel7-lzq-01 ~]# tail -3 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
lu:x:1000:1000:lu:/home/lu:/bin/bash
user1:x:8888:1001::/var/user1:/bin/tcsh
[root@rhel7-lzq-01 ~]#

image.gif

#### 恢复原状 ########
[root@rhel7-lzq-01 ~]# usermod -d /home/user1 -s /bin/bash user1
[root@rhel7-lzq-01 ~]# tail -3 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
lu:x:1000:1000:lu:/home/lu:/bin/bash
user1:x:8888:1001::/home/user1:/bin/bash

image.gif

1.2 禁用和恢复用户账户

有时需要临时禁用一个账户而不删除它。禁用用户账户可以用passwd或usermod命令实现,也可以直接修改/etc/passwd或/etc/shadow文件。

例如,暂时禁用和恢复user1账户,可以使用以下3种方法实现。

(1)使用passwd命令

修改用户口令(密码)信息

[root@rhel7-lzq-01 ~]# passwd user1
更改用户 user1 的密码 
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

image.gif

锁定用户:

[root@rhel7-lzq-01 ~]# passwd -l  user1
锁定用户 user1 的密码 
passwd: 操作成功

image.gif

查看锁定情况:

使用passwd命令禁用user1账户,利用tail命令可以看到被锁定的账户密码栏前面会加上“!”

[root@rhel7-lzq-01 ~]# tail -1 /etc/shadow
user1:!!$6$CM5uCdgm$bwxneTRd62xKfVzheARIlBfpA3XYADrK8JeRE7SZXU5KvhY35MJXN1FTgvMLBEAKk/5ds7aqWzIcRb7do3EZz.:20017:0:99999:7:::

image.gif

解除锁定并查看结果:

利用passwd命令的-u选项解除账户锁定,重新启用user1账户

[root@rhel7-lzq-01 ~]# passwd -u user1
解锁用户 user1 的密码。
passwd: 操作成功
[root@rhel7-lzq-01 ~]# tail -1 /etc/shadow
user1:$6$CM5uCdgm$bwxneTRd62xKfVzheARIlBfpA3XYADrK8JeRE7SZXU5KvhY35MJXN1FTgvMLBEAKk/5ds7aqWzIcRb7do3EZz.:20017:0:99999:7:::

image.gif

(2)使用usermod命令

[root@rhel7-lzq-01 ~]# usermod -L user1
[root@rhel7-lzq-01 ~]# tail -1 /etc/shadow
user1:!$6$CM5uCdgm$bwxneTRd62xKfVzheARIlBfpA3XYADrK8JeRE7SZXU5KvhY35MJXN1FTgvMLBEAKk/5ds7aqWzIcRb7do3EZz.:20017:0:99999:7:::
[root@rhel7-lzq-01 ~]# usermod -U user1
[root@rhel7-lzq-01 ~]# tail -1 /etc/shadow
user1:$6$CM5uCdgm$bwxneTRd62xKfVzheARIlBfpA3XYADrK8JeRE7SZXU5KvhY35MJXN1FTgvMLBEAKk/5ds7aqWzIcRb7do3EZz.:20017:0:99999:7:::

image.gif

(3)直接修改用户账户配置文件

可将/etc/shadow文件中关于user1账户的passwd域的第一个字符前面加上一个“!”,达到禁用账户的目的,在需要恢复的时候只要删除字符“!”即可。

1.3 删除用户账户

要删除一个账户,可以直接删除/etc/passwd和/etc/shadow文件中要删除的用户所对应的行,或者用userdel命令删除。userdel命令的格式为

userdel [-r] 用户名

如果不加-r选项,userdel命令会在系统中所有与账户有关的文件中(例如/etc/passwd,/etc/shadow,/etc/group)将用户的信息全部删除。

如果加-r选项,则在删除用户账户的同时,还将用户主目录以及其下的所有文件和目录全部删除掉。另外,如果用户使用E-mail的话,同时也将/var/spool/mail目录下的用户文件删掉。

[root@rhel7-lzq-01 ~]# userdel -r user1
[root@rhel7-lzq-01 ~]# tail -5 /etc/passwd
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
lu:x:1000:1000:lu:/home/lu:/bin/bash
# user1 已经被删除了

image.gif

2 维护组群

2.1 添加组

[root@rhel7-lzq-01 ~]# groupadd testgroup
[root@rhel7-lzq-01 ~]# cat /etc/group
...
ntp:x:38:
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
tcpdump:x:72:
lu:x:1000:
testgroup:x:1001:

image.gif

2.2 删除组

要删除一个组可以用groupdel命令,例如删除刚创建的testgroup组时可用以下命令:

[root@rhel7-lzq-01 ~]# groupdel testgroup
[root@rhel7-lzq-01 ~]# tail -5 /etc/group
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
tcpdump:x:72:
lu:x:1000:

image.gif

2.3 修改组群

修改组群的命令是groupmod,其命令格式为

groupmod [选项] 组名

常见的命令选项如下表所示。

选 项 说 明
-g gid 把组群的GID改成gid
-n group-name 把组群的名称改为group-name
-o 强制接受更改的组的GID为重复的号码

修改组名

[root@rhel7-lzq-01 ~]# groupmod -n lzq lu
[root@rhel7-lzq-01 ~]# tail -5 /etc/group
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
tcpdump:x:72:
lzq:x:1000:

image.gif

3 为组群添加用户

在Red Hat Linux中使用不带任何参数的useradd命令创建用户时,会同时创建一个和用户账户同名的组群,称为主组群。当一个组群中必须包含多个用户时,则需要使用附属组群。在附属组中增加、删除用户都用gpasswd命令。gpasswd命令的格式为

gpasswd [选项] [用户] [组]

只有root用户和组管理员才能够使用这个命令,命令选项如下表所示:

选 项 说 明
-a 把用户加入组
-d 把用户从组中删除
-r 取消组的密码
-A 给组指派管理员

例子:

要把user1用户加入testgroup组,并指派user1为管理员,可以执行下列命令:

[root@rhel7-lzq-01 ~]# groupadd  testgroup 
[root@rhel7-lzq-01 ~]# gpasswd -a user1 testgroup
[root@rhel7-lzq-01 ~]# gpasswd -A user1 testgroup

image.gif

4 su命令和sudo命令的使用

4.1 su 命令

su命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户,比如从root管理员切换至普通用户:

[root@rhel7-lzq-01 ~]# id
uid=0(root) gid=0(root) =0(root) =unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@rhel7-lzq-01 ~]# useradd -G testgroup test
[root@rhel7-lzq-01 ~]# su - test
[test@rhel7-lzq-01 ~]$ id
uid=1001(test) gid=1002(test) =1002(test),1001(testgroup) =unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

image.gif

当从root管理员切换到普通用户时是不需要密码验证的,而从普通用户切换成root管理员就需要进行密码验证。

[test@rhel7-lzq-01 ~]$ su root
密码:
[root@rhel7-lzq-01 test]# su - test
上一次登录:一 1021 09:41:01 CST 2024pts/0 上
[test@rhel7-lzq-01 ~]$ exit
登出
[root@rhel7-lzq-01 test]#

image.gif

4.2 sudo

尽管像上面这样使用su命令后,普通用户可以完全切换到root管理员身份来完成相应工作,但这会暴露root管理员的密码,从而增大了系统密码被黑客获取的概率,因此上述操作并不是最安全的方案。

这个命令自学。

相关文章
|
前端开发 算法
如何玩转新技术栈!高德大前端演进历程
高德技术开放日已经顺利落幕,我们准备了精彩的视频回放。这次放出的是由高德工程技术中心 郭忍东 为大家带来的《如何玩转新技术栈!高德大前端演进历程》。
1322 0
如何玩转新技术栈!高德大前端演进历程
|
11月前
|
消息中间件 监控 Java
借助最新技术构建 Java 邮件发送功能的详细流程与核心要点分享 Java 邮件发送功能
本文介绍了如何使用Spring Boot 3、Jakarta Mail、MailHog及响应式编程技术构建高效的Java邮件发送系统,涵盖环境搭建、异步发送、模板渲染、测试与生产配置,以及性能优化方案,助你实现现代化邮件功能。
748 0
|
机器学习/深度学习 人工智能 前端开发
2024年软件开发新趋势:关键技术和实践
2024年软件开发迎来新趋势,涵盖AI/ML深度集成、微前端架构进展、单元测试最佳实践及CI/CD最新动态,推动产品质量、效率和创新的提升。
|
存储 SQL 分布式计算
MaxCompute 近实时增全量处理一体化新架构和使用场景介绍
本文主要介绍基于 MaxCompute 的离线近实时一体化新架构如何来支持这些综合的业务场景,提供基于Delta Table的近实时增全量一体的数据存储和计算解决方案。
|
监控 Android开发 数据安全/隐私保护
安卓kotlin JetPack Compose 实现摄像头监控画面变化并录制视频
在这个示例中,开发者正在使用Kotlin和Jetpack Compose构建一个Android应用程序,该程序 能够通过手机后置主摄像头录制视频、检测画面差异、实时预览并将视频上传至FTP服务器的Android应用
|
开发框架 前端开发 JavaScript
闲鱼技术2022年度白皮书-KUN主题-大终端领域的新物种-KUN(上)
闲鱼技术2022年度白皮书-KUN主题-大终端领域的新物种-KUN
1304 0
闲鱼技术2022年度白皮书-KUN主题-大终端领域的新物种-KUN(上)
|
存储 Web App开发 前端开发
5分钟站点生成神器——Docusaurus
Docusaurus 是 Facebook 专门为开源项目开发者提供的一款易于维护的静态网站创建工具,使用 Markdown 即可更新网站。构建一个带有主页、文档、API、帮助以及博客页面的静态网站,只需5分钟。
2799 0
5分钟站点生成神器——Docusaurus
|
关系型数据库 MySQL 大数据
Centos7使用CDH6.3.0安装大数据集群
Centos7使用CDH6.3.0安装大数据集群
1211 1
Centos7使用CDH6.3.0安装大数据集群
|
消息中间件 SpringCloudAlibaba 监控
阿里内部“Spring Cloud Alibaba项目文档”正式发布
阿里内部“Spring Cloud Alibaba项目文档”正式发布
1545 0
阿里内部“Spring Cloud Alibaba项目文档”正式发布
云通信智能语音服务-工作手机号使用FAQ
工作手机号是具备APP注册、语音通话、上网、点对点短信等功能的手机号码,含实体SIM卡。“工作手机号”面向企业客户提供一站式通信、办理、 维护和结算能力,支持企业管理注销、变更和付费、员工使用等众多客户实际业务场景。
5299 0
云通信智能语音服务-工作手机号使用FAQ