Linux用户与组管理
Linux 用户
一、用户介绍
1.1 用户是什么
用户账号是服务器安全的根基,用来管权限。所有文件、正在跑的程序,都归某个用户名下;系统靠这个限制谁能读写文件、运行程序。对外我们用用户名登录,系统内部靠一串数字 UID 区分每个账号,不会搞混。登录密码用来验证身份,防止别人冒充账号登录操作服务器。
用户三大分类
1.2 passwd
用户信息文件
这个文件存系统所有用户基础信息,每行代表一个用户,冒号:分成 7 段内容。
# 查看全部用户信息
[xiaoma@centos7 ~ 16:43:37]$ cat /etc/passwd
# 只看指定用户
[xiaoma@centos7 ~ 17:14:29]$ grep xiaoma /etc/passwd
xiaoma:x:1000:1000:xiaoma:/home/xiaoma:/bin/bash
七段内容拆分(xiaoma❌1000:1000:xiaoma:/home/xiaoma:/bin/bash)
个人理解:想查服务器有哪些登录账号,直接看这个文件,末尾是 /bin/bash 的都是可登录普通用户。
二、查看登录用户命令
2.1 whoami
看自己当前登录账号
[xiaoma@centos7 ~ 17:20:56]$ whoami
xiaoma
打印你现在正在用的用户名,分不清 su 切换账号时用。
理解:root 执行输出 root,普通用户登录输出自己的账号名。
2.2 who
查看所有终端登录的人
[xiaoma@centos7 ~ 17:22:08]$ who
xiaoma :0 2026-07-17 10:40 (:0)
xiaoma pts/0 2026-07-17 10:54 (:0)
xiaoma pts/1 2026-07-17 16:05 (10.1.8.1)
xiaoma pts/2 2026-07-17 16:05 (10.1.8.1)
列出所有正在登录服务器的用户、登录 IP、登录时间、终端窗口。
理解:多人共用服务器时,快速看谁在线、从哪台电脑连上来。
2.3 w
who 增强版,带系统负载
[xiaoma@centos7 ~ 17:24:36]$ w
17:24:38 up 5:51, 4 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
xiaoma :0 :0 10:40 ?xdm? 2:23 0.27s /usr/libexec/gnome-
xiaoma pts/0 :0 10:54 6:23m 0.06s 2.12s /usr/libexec/gnome-
xiaoma pts/1 10.1.8.1 16:05 6.00s 0.10s 0.02s w
xiaoma pts/2 10.1.8.1 16:05 1:18m 0.04s 0.10s sshd: xiaoma [priv]
不仅显示登录用户,还展示服务器 CPU、内存负载,每个人正在执行的命令。
理解:排查服务器卡顿、谁在占用资源首选 w 命令。
2.4 users
只打印在线用户名
[xiaoma@centos7 ~ 17:25:14]$ users
xiaoma xiaoma xiaoma xiaoma
极简输出,只列出所有登录账号名称,无额外信息。
三、用户管理核心命令
3.1 useradd
新建用户
基础创建(自动生成同名主组、家目录、bash 登录 shell)
[root@centos7 ~ 21:20:07]# grep user01 /etc/passwd
user01:x:1001:1001::/home/user01:/bin/bash
创建 user01 用户,自动创建组 user01,家目录 /home/user01。
# 用户2
[root@centos7 ~ 21:20:44]# useradd -u 8888 -g wheel -c "software manager" -d /opt/user02 -s /sbin/nologin user02
# -u 指定UID;
# -g 用户的主组
# -c 描述信息
# -d 用户家目录
# -s 用户登录shell程序
[root@centos7 ~ 21:21:38]# grep user02 /etc/passwd
user02:x:8888:10:software manager:/opt/user02:/sbin/nologin
[root@centos7 ~ 21:28:44]# ls -d /opt/user02/
/opt/user02/
# 创建一个没有密码的账户,该用户在图形化界面中可以直接登录
[root@centos7 ~ 21:30:23]# useradd -p '' tom
新用户家目录中的文件来源于 /etc/skel/目录
[root@centos7 ~ 21:30:43]#
[root@centos7 ~ 21:30:43]# ls -a ~tom
. .. .bash_logout .bash_profile .bashrc .mozilla
[root@centos7 ~ 21:35:00]# ls -a /etc/skel/
. .. .bash_logout .bash_profile .bashrc .mozilla
创建用户的时候,用户属性默认参数配置在/etc/login.defs文件
[root@centos7 ~ 21:40:37]# vim /etc/login.defs
3.2 usermod
修改用户属性
# -m 移动家目录到新的位置
[root@centos7 ~ 21:45:26]# usermod user02 -u 1008 -md /home/user02 -s /bin/bash
[root@centos7 ~ 21:46:25]# grep user02 /etc/passwd
user02:x:1008:10:software manager:/home/user02:/bin/bash
[root@centos7 ~ 21:46:55]# ls -d /home/user02/
/home/user02/
[root@centos7 ~ 21:47:05]# su – user02
Last login: Mon Nov 7 17:08:58 CST 2022 on pts/2
[user02@centos7 ~ 21:47:06]$
添加补充组,如果没有-a选项,则代表将补充组设置为user01,原先的补充组就被覆盖了。
[root@centos7 ~ 21:52:18]# usermod -aG user01 user02
[root@centos7 ~ 21:52:48]# id user02
uid=1008(user02) gid=10(wheel) 组=10(wheel),1001(user01)
重点理解:-G代表附加组,必须搭配 – a 追加,否则之前加入的其他组全部清空。
3.3 userdel
删除用户
# 正常删除
[root@centos7 ~ 21:54:11]# useradd user03
[root@centos7 ~ 21:54:28]# userdel user03
# 强制删除
[root@centos7 ~ 21:55:10]# userdel user02
userdel: user user02 is currently used by process 9071
[root@centos7 ~ 21:55:44]# id user02
uid=1008(user02) gid=10(wheel) groups=10(wheel),1003(user01)
# 尽量不要强制删除,要找到无法删除的原因
[root@centos7 ~ 21:58:57]# userdel -f user02
userdel: user user02 is currently used by process 9071
[root@centos7 ~ 21:59:15]# id user02
id: user02: no such user
七、练习
#1 创建用户
[root@centos7 ~ 21:59:43]# useradd operator1
#2 查看id
[root@centos7 ~ 22:05:23]# id operator1
uid=8890(operator1) gid=8890(operator1) 组=8890(operator1)
#3 查看passwd
[root@centos7 ~ 22:05:31]# grep operator1 /etc/passwd
operator1:x:8890:8890::/home/operator1:/bin/bash
#4 设置密码
[root@centos7 ~ 22:08:52]# ehco redhat | passwd –stdin operator1
更改用户 operator1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
#5 修改UID
[root@centos7 ~ 22:15:33]# usermod -u 1088 operator1
#6 修改备注
[root@centos7 ~ 22:17:22]# usermod -c "Operaror one " operator1
#7 添加wheel附加组
[root@centos7 ~ 22:18:19]# usermod -aG wheel operator1
#8 查看wheel组
[root@centos7 ~ 22:18:50]# grep wheel /etc/group
wheel:x:10:xiaoma,operator1
#9 删除用户(最后执行)
[root@centos7 ~ 22:20:38]# userdel -r operator1
综合练习
# 1 添加账户
[root@centos7 ~]# vim /etc/passwd
# 最后一行添加如下内容,注意uid要在原有的基础上增加1
zhangsan:x:1002:1002::/home/zhangsan:/bin/bash
# 2 添加组
[root@centos7 ~]# vim /etc/group
# 最后一行添加如下内容
zhangsan:x:1002:
# 3 添加密码
[root@centos7 ~]# vim /etc/shadow
# 最后一行添加如下内容
zhangsan:$6$FgUNKn74yoEDbcXD$pxDk9AEhsxkJGYi76Rv91zLy5LRns8olgAyGuNssQYG07ypaidhuX0gHAU4hrNi9Zp9A7vtMEvbyzCQ0e/gbk1::0:99999:7:::
# 4 准备家目录
[root@centos7 ~]# cp -r /etc/skel/ /home/zhangsan
# 修改zhangsan家目录所属有zhangsan用户和组
[root@centos7 ~]# chown zhangsan:zhangsan /home/zhangsan
[root@centos7 ~]# ll -d /home/zhangsan
drwxr-xr-x. 16 zhangsan zhangsan 4096 7月 19 14:00 zhangsan
# 测试
[root@centos7 ~]# ssh zhangsan@localhost
组管理
一、用户组介绍
组就是一批用户的集合,靠 GID 数字编号区分,用来批量给一批人分配文件访问权限。
两种组
# 查看用户信息
[xiaoma@centos7 ~ 17:17:10]$ id
uid=1000(xiaoma) gid=1000(xiaoma) groups=1000(xiaoma),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
# 查看用户 uid
[xiaoma@centos7 ~ 17:19:52]$ id -u xiaoma
1000
group
组信息文件
存放所有用户组信息,每行一组,冒号分 4 段
# 查看所有组
[xiaoma@centos7 ~ 17:16:00]$ cat /etc/group
# 过滤指定组
[xiaoma@centos7 ~ 17:16:31]$ grep wheel /etc/group
wheel:x:10:xiaoma
四段内容(wheel❌10:xiaoma)
二、本地组管理
groupadd 命令
新建用户组
# 创建名称为 admin 的组
[root@centos7 ~]# groupadd admin
# 创建名称为sysadmin的组,组id为2000
[root@centos7 ~]# groupadd sysadmin -g 2000
# 验证
[root@centos7 ~]# grep admin /etc/group
printadmin:x:997:
admin:x:1002:
sysadmin:x:2000:
groupmod 命令
修改已有组的信息
# 修改组名称
[root@centos7 ~]# groupmod –new-name admins admin
# 修改组id
[root@centos7 ~]# groupmod -g 2002 admins
# 验证
[root@centos7 ~]# grep 'admins' /etc/group
admins:x:2002:
groupdel 命令
删除空用户组
# 删除sysadmin组
[root@centos7 ~]# groupdel sysadmin
# 验证
[root@centos7 ~]# grep sysadmin /etc/group
groupmems 命令
管理组内附加用户成员
作用:专门用来给组添加、移除、清空、查看里面的附属用户,只能 root 执行。
# 添加成员
[root@centos7 ~]# groupmems -g admins -a xiaoma
[root@centos7 ~]# groupmems -g admins -l
xiaoma
[root@centos7 ~]# id xiaoma
uid=1000(xiaoma) gid=1000(xiaoma) 组=1000(xiaoma),10(wheel),2002(admins)
# 删除成员
[root@centos7 ~]# groupmems -g admins -d xiaoma
[root@centos7 ~]# groupmems -g admins -l
# 清空组中所有成员
[root@centos7 ~]# groupmems -g admins -a xiaoma
[root@centos7 ~]# groupmems -g admins -p
课后练习
# 创建developer组,组id2000
[root@centos7 ~ 16:56:59]# groupadd developer -g 2000
# 验证
[root@centos7 ~ 17:01:53]# grep developer /etc/group
developer:x:2000:
# 修改组名称
[root@centos7 ~ 17:02:56]# groupmod –new-name developers developer
# 修改组id
[root@centos7 ~ 17:04:21]# groupmod -g 3000 developers
# 验证
[root@centos7 ~ 17:04:44]# grep 'developers' /etc/group
developers:x:3000:
# 创建用户
[root@centos7 ~ 17:06:11]# useradd developer1
[root@centos7 ~ 17:08:44]# groupmems -g developers -a developer1
# 验证
[root@centos7 ~ 17:11:07]# groupmems -g developers -l
developer1
# 删除用户
[root@centos7 ~ 17:13:16]# groupmems -g developers -d developer1
[root@centos7 ~ 17:14:42]# groupmems -g developers -l
# 删除组
[root@centos7 ~ 17:15:31]# groupdel developers
[root@centos7 ~ 17:16:29]# grep developers /etc/group
全文总结
Linux 用户和组是服务器权限管控的基础,整体分为 6 大核心模块:



