groups 命令
基本介绍
groups 是 Linux 系统中用于显示用户所属用户组的命令。它可以显示当前用户或指定用户所属的所有组。groups 是系统管理员和普通用户查看组归属的常用工具。
资料合集:https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a
语法
groups [OPTIONS] [USERNAME…]
常用选项
基本选项
- -h, –help:显示帮助信息
- -V, –version:显示版本信息
使用示例
1. 显示当前用户所属组
groups
输出示例:
user adm cdrom sudo dip plugdev lpadmin sambashare
2. 显示指定用户所属组
groups username
3. 显示多个用户所属组
groups user1 user2 user3
4. 检查用户是否属于某个组
groups | grep -q sudo && echo "User is in sudo group" || echo "User is not in sudo group"
5. 在脚本中使用
#!/bin/bash
# 检查当前用户是否属于 sudo 组
if groups | grep -qw sudo; then
echo "User has sudo access"
else
echo "User does not have sudo access"
fi
输出格式说明
成功执行
# 输出格式: username : group1 group2 group3 …
user : adm cdrom sudo
错误输出示例
groups: 'invalid_user': no such user
工作原理
groups 执行流程
# 1. 用户执行 groups 命令
groups
# 2. 读取 /etc/group 文件
# 3. 查找用户所属的所有组
# 4. 输出组列表
相关文件
| /etc/group | 用户组信息 |
| /etc/passwd | 用户信息 |
组信息格式
getent group sudo
# 输出格式: sudo:x:27:user1,user2,user3
实用技巧
检查用户组归属
#!/bin/bash
USERNAME="john"
GROUPNAME="sudo"
# 检查用户是否属于指定组
if id -nG "$USERNAME" | grep -qw "$GROUPNAME"; then
echo "$USERNAME belongs to $GROUPNAME"
else
echo "$USERNAME does not belong to $GROUPNAME"
fi
获取用户主组
# 显示用户主组
id -gn
# 显示用户主组ID
id -g
获取用户所有组
# 显示所有组名
id -nG
# 显示所有组ID
id -G
批量检查用户组
#!/bin/bash
# 检查多个用户是否属于 sudo 组
for user in alice bob charlie; do
if id -nG "$user" | grep -qw sudo; then
echo "$user: has sudo access"
else
echo "$user: no sudo access"
fi
done
查找属于特定组的用户
# 查找 sudo 组的所有成员
getent group sudo | cut -d: -f4
# 查找所有属于 sudo 组的用户
grep -E '^sudo:' /etc/group | cut -d: -f4
相关命令
- id:显示用户和组ID信息
- whoami:显示当前用户
- useradd:添加用户
- usermod:修改用户信息
- groupadd:添加用户组
- gpasswd:管理组密码和成员
- getent:获取系统数据库条目
注意事项
总结
groups 是 Linux 系统中用于显示用户所属用户组的工具。它可以显示当前用户或指定用户所属的所有组。groups 是系统管理员和普通用户查看组归属的常用工具。


