服务器测评网
我们一直在努力

linux用户组有哪些?如何查看和管理用户组?

在Linux系统中,用户组是管理用户权限和资源访问的核心机制之一,通过将用户划分到不同的用户组,系统管理员可以更高效地控制文件访问权限、系统服务权限以及安全策略,本文将详细介绍Linux系统中常见的用户组类型、其功能与作用,以及如何查看和管理用户组,帮助读者全面理解Linux用户组的架构与应用。

linux用户组有哪些?如何查看和管理用户组?

Linux用户组的基本概念

用户组是具有相同权限或属性的用户集合,Linux通过用户组简化权限管理,每个用户至少属于一个主组(Primary Group),创建用户时会自动生成与用户名同名的组;用户还可以加入多个附加组(Supplementary Groups),以获取额外的权限,用户组的主要作用包括:控制文件访问权限(如通过chgrp修改文件所属组)、限制系统服务访问范围、实现资源隔离等。

系统关键用户组

Linux系统预置了一系列用户组,这些组用于维护系统正常运行和安全性,通常不建议直接修改其成员或权限。

root组

root组是Linux系统中权限最高的组,属于该组的用户拥有对系统的完全控制权。root用户(UID为0)默认属于root组,且系统中超级用户的操作通常与root组权限绑定,系统核心文件、配置目录(如/etc/boot)的默认所属组均为root,普通用户无法直接修改。

system组或sys组

不同发行版中名称可能略有差异(如Ubuntu中为systemd-journalsystemd-network等,CentOS中为sys),该组用于运行系统关键服务,系统日志服务(systemd-journal)、网络管理服务(NetworkManager)等进程会以该组成员身份运行,确保服务对系统资源的有限访问权限,避免权限滥用。

daemon组

daemon组用于运行后台守护进程(Daemon),这些进程通常在系统启动时自动运行,负责提供系统服务(如打印服务cups、邮件服务postfix),将守护进程用户归入daemon组,可以统一管理其文件访问权限,例如允许daemon组用户读取临时日志文件,但禁止修改系统配置。

sudo组

sudo组(在Ubuntu/Debian中常见)允许组成员通过sudo命令获取临时超级用户权限,普通用户加入该组后,可执行需要管理员权限的操作(如安装软件、修改系统配置),而无需直接登录root账户,提升了系统安全性,CentOS/RHEL系统中则通过wheel组实现类似功能。

linux用户组有哪些?如何查看和管理用户组?

disk组

disk组用于控制对磁盘设备的访问权限。/dev/sda/dev/nvme0n1等块设备文件默认属于disk组,只有该组成员或root用户可直接读写磁盘设备,防止普通用户误操作导致数据损坏。

tape组

disk组的“轻量版”,专门用于管理磁带设备(如/dev/st0),随着磁带设备使用减少,该组在现代系统中较少见,但在需要备份和归档的企业环境中仍有应用。

video组

video组控制对图形显示设备的访问权限。/dev/dri目录下的设备文件(如/dev/dri/card0)属于video组,用户加入该组后,才能运行图形界面程序(如X11、Wayland)或使用GPU加速功能(如视频解码、机器学习推理)。

audio组

video组类似,audio组管理音频设备(如/dev/snd/目录下的设备文件),普通用户加入该组后,才能播放声音、使用麦克风或通过音频处理软件(如pulseaudiopipewire)访问音频硬件。

input组

input组用于控制输入设备(如键盘、鼠标、触摸板)的访问权限,设备文件(如/dev/input/event0)默认属于该组,用户加入后可正常使用输入设备,同时防止未授权程序窃取输入信息(如密码)。

plugdev组

plugdev组(常见于Ubuntu/Debian)用于管理可移动设备(如U盘、手机、移动硬盘)的自动挂载,当用户插入设备时,系统检测到用户属于plugdev组,会自动触发udisks2pmount等服务进行挂载,提升用户体验。

linux用户组有哪些?如何查看和管理用户组?

netdev组

netdev组与网络设备相关,允许组成员管理网络接口(如启用/禁用网卡、配置IP地址)。NetworkManager服务会以netdev组成员身份运行,动态管理网络连接。

kvm组

kvm(Kernel-based Virtual Machine)组用于管理虚拟化硬件权限,用户加入该组后,才能使用KVM技术创建虚拟机(如通过qemu-kvmlibvirt),直接访问CPU虚拟化扩展和硬件加速功能,提升虚拟机性能。

用户组的管理与查看

查看用户组信息

  • 查看所有用户组:通过cat /etc/group命令可列出系统中所有用户组,格式为组名:密码占位符:GID:组成员列表(如root:x:0:表示root组GID为0,无密码,初始无成员)。
  • 查看用户所属组:使用groups [用户名]命令可查看指定用户的主组和附加组,或通过id -Gn [用户名]仅显示组名。

用户组管理命令

  • 创建用户组sudo groupadd [组名],例如sudo groupadd developers创建developers组。
  • 删除用户组sudo groupdel [组名],注意删除组前需确保无用户以该组为主组。
  • 添加用户到组sudo usermod -aG [组名] [用户名]-aG表示追加到附加组,避免覆盖原有组)。
  • 设置用户主组sudo usermod -g [组名] [用户名],修改用户的主组后,需重新登录生效。

用户组的安全与权限实践

合理使用用户组是Linux系统安全的关键。

  • 最小权限原则:仅为用户分配必要的组权限,避免加入sudoroot组等高权限组。
  • 资源隔离:通过创建自定义组(如webapp组)管理Web服务文件,限制仅webapp组用户可访问网站目录。
  • 审计与监控:定期检查关键组(如sudodisk)的成员列表,避免未授权用户加入。

Linux用户组是权限管理的基石,从系统核心的root组到特定功能的videoaudio组,每个组都承担着明确的职责,通过理解系统预置用户组的功能,并结合groupaddusermod等工具灵活管理,管理员可以构建既安全又高效的系统环境,对于普通用户而言,了解用户组也有助于理解权限边界,避免误操作,在实际应用中,需根据场景需求合理分配组权限,确保系统安全性与可用性的平衡。

赞(0)
未经允许不得转载:好主机测评网 » linux用户组有哪些?如何查看和管理用户组?