用户和组高级操作

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
性能测试 PTS,5000VUM额度
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
简介: 本文介绍了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管理员的密码,从而增大了系统密码被黑客获取的概率,因此上述操作并不是最安全的方案。

这个命令自学。

相关文章
|
Linux
Linux操作系统实验九 用户与组管理(二)(中)
Linux操作系统实验九 用户与组管理(二)(中)
215 0
|
6月前
|
数据安全/隐私保护
用户及组管理操作
用户及组管理操作
49 0
|
Linux vr&ar
Linux操作系统实验九 用户与组管理(二)(上)
Linux操作系统实验九 用户与组管理(二)
240 0
Linux操作系统实验九 用户与组管理(二)(上)
|
Linux
Linux操作系统实验九 用户与组管理(二)(下)
Linux操作系统实验九 用户与组管理(二)(下)
257 0
|
关系型数据库 MySQL Linux
Linux操作系统实验八 用户与组管理(一)(上)
Linux操作系统实验八 用户与组管理(一)
225 0
|
Ubuntu Linux Shell
Linux操作系统实验八 用户与组管理(一)(下)
Linux操作系统实验八 用户与组管理(一)(下)
444 0
|
关系型数据库 MySQL 应用服务中间件
用户和组管理 | 学习笔记
快速学习用户和组管理 。
用户和组管理 | 学习笔记
|
关系型数据库 MySQL Shell
Linux用户和组管理 - 用户和组管理
一、默认值设定 二、显示或更改默认设置 三、新建用户的相关文件和命令 四、用户属性修改 五、删除用户 六、查看用户相关的 ID 信息 七、切换用户以其他用户身份执行命令 八、设置密码 九、修改用户密码策略 十、用户相关的其他命令 十一、创建组 十二、修改和删除组 十三、更改组密码 十四、更改和查看组成员 十五、文件权限
Linux用户和组管理 - 用户和组管理
【产品功能】创建实例支持同时加入多个安全组
背景: 长期以来,创建ECS实例只支持同时加入一个安全组,但是某些友商支持多个安全组,这会增加混合云用户上云成本,比如基于Terraform的国际站用户想迁移到阿里云就要修改大量代码。为此ECS提供了创建实例同时加入多个安全组的功能,此功能一方面可以让上述用户最小成本使用阿里云,另外一方面也降低实例加入多个安全组的复杂度,可以方便的随实例创建同时加入多个安全组。
1190 0