Linux特权组全解析:识别GID带来的权限提升风险
组ID(Group ID,简称 GID)是Linux系统中用来标识不同用户组的唯一数字标识符。每个用户组都有一个对应的 GID,通过 GID,系统能够区分并管理不同的用户组。
在Linux系统中,系统用户和组的配置文件通常包括以下内容:
/etc/passwd
文件:存储用户账户信息(包括 UID 和 GID)。/etc/group
文件:存储用户组的信息(包括组名、GID、组成员等)。
如何查看系统中的组和 GID
1. 查看所有组信息
使用 cat
命令查看 /etc/group
文件,它列出了系统中所有组的名称、GID 和成员信息:
cat /etc/group
输出示例:
root:x:0:root
adm:x:4:syslog,john
docker:x:999:jane,root
sudo:x:27:root,john
wheel:x:10:admin
disk:x:6:root,john
tty:x:5:root
2. 查看特定用户的组信息
使用 groups
命令可以查看当前用户属于哪些组:
groups username
输出示例:
john : john adm sudo docker
这表示 john
用户属于 john
、adm
、sudo
和 docker
组。
3. 查看特定用户的 UID 和 GID
使用 id
命令可以查看特定用户的 UID 和 GID:
id john
输出示例:
uid=1000(john) gid=1000(john) groups=1000(john),4(adm),27(sudo),999(docker)
常见的系统组及其 GID
以下是一些常见的 Linux 系统用户组及其默认的 GID。
组名 | 描述 | 默认 GID |
---|---|---|
root | 系统超级用户组,具有最高权限,通常是系统管理员所在组。 | 0 |
sys | 系统管理组,通常与硬件设备操作、系统服务管理相关。 | 3 |
adm | 系统日志组,通常有权限查看系统日志文件和其他监控信息。 | 4 |
tty | 与终端设备相关的用户组,通常用于控制台操作、终端设备访问。 | 5 |
disk | 允许用户访问和管理磁盘设备的组,通常包括对磁盘分区的操作权限。 | 6 |
邮件相关用户组,用于邮件服务器的配置和管理。 | 8 | |
wheel | 允许通过su 或sudo 执行特权命令的用户组。通常用于授权管理员权限。 | 10 |
docker | Docker容器运行组,赋予用户管理Docker容器的权限。 | 999 |
sudo | 允许用户通过sudo 命令执行特权操作的用户组。通常与wheel 组功能重叠。 | 27 |
games | 游戏相关的用户组,授予游戏应用相关的权限。 | 60 |
staff | 具有管理员权限的普通用户组,通常授予安装和管理软件的权限。 | 50 |
users | 默认的普通用户组,系统中所有非特权用户的默认归属组。 | 100 |
lxd | LXD容器组,LXD是Linux的系统容器管理工具,用户属于此组可管理LXD容器。 | 101 |
network | 网络设备相关的用户组,通常允许管理网络设备和配置。 | 101 |
plugdev | 允许用户挂载和访问外部存储设备(如USB设备)的组。 | 46 |
audio | 与音频设备相关的用户组,允许用户访问音频硬件。 | 70 |
video | 与视频设备相关的用户组,允许用户访问视频硬件,如摄像头或显示设备。 | 44 |
cdrom | 允许用户访问光驱设备的组。 | 24 |
power | 控制系统电源管理权限的组,通常包括关机、重启权限。 | 98 |
storage | 允许用户管理存储设备的组。通常包括对硬盘和存储设备的访问权限。 | 118 |
组ID与权限提升
docker
(GID: 999)
GID 999 是 Docker 用户组的默认组 ID。加入 docker
组的用户可以无需 sudo
执行 Docker 命令,这种特权可能导致容器逃逸(container escape)。
提权途径:如果攻击者能够加入 docker
组,他们可以直接控制 Docker 容器。若容器以特权模式运行,攻击者可以通过容器访问宿主机文件系统,甚至执行恶意操作,进而提权至宿主机的 root 用户,获取完全控制权限。
例如,攻击者可以通过以下命令将容器挂载宿主机的根文件系统,进而访问宿主机所有文件:
docker run -v /:/mnt --rm -it alpine chroot /mnt sh
disk
(GID: 6)
GID 6 是 disk
组的默认 GID。属于 disk
组的用户有权限访问磁盘设备,包括硬盘分区、挂载设备等。
提权途径:攻击者可以利用 disk
组的权限直接操作磁盘设备。通过工具如 fdisk
或 parted
修改磁盘分区表,攻击者可能绕过权限限制,访问本应受到保护的文件或设备。攻击者甚至能够通过修改启动分区来控制系统。
例如,攻击者可以执行以下操作来查看磁盘分区信息:
df -h
然后,使用 debugfs
获取磁盘分区的详细信息:
debugfs /dev/sda3
通过该方式,攻击者可对整个磁盘进行读写操作,包括读取 /root/.ssh/id_rsa
(私钥)或 /etc/shadow
(用户密码哈希),进而破解系统账户密码,获取更高权限。
adm
(GID: 4)
GID 4 是 adm
组的默认 GID。该组的用户通常具有查看系统日志文件的权限,常见的日志文件包括 /var/log/auth.log
和 /var/log/syslog
,这些文件可能包含系统的敏感信息,如用户登录记录和身份验证信息。
提权途径:攻击者若能访问 adm
组的权限,便可以读取日志文件,从中提取有用的信息,例如用户名、密码哈希等。结合暴力破解工具(如 John the Ripper),攻击者可以破解密码,从而进一步提升权限。
例如,攻击者可以通过查看 /var/log/auth.log
中的记录,获得用户登录信息。
tty
(GID: 5)
GID 5 是 tty
组的默认 GID。该组的用户拥有对终端设备的访问权限,能够进行输入和输出操作。
提权途径:攻击者可以利用 tty
组的权限伪装终端设备,从而捕获用户的输入,甚至干扰其他用户的会话,获取更多的控制权。通过对终端的控制,攻击者可能会获取其他用户的凭证或执行恶意操作,进一步提升自己的权限。
wheel
(GID: 10)
GID 10 是 wheel
组的默认 GID。该组标识可以通过 sudo
或 su
获得 root 权限的用户。
提权途径:加入 wheel
组的用户能够使用 sudo
执行任意命令,如果 sudo
配置不当,攻击者可能通过 sudo
提权至 root 用户,执行恶意命令并完全控制系统。通过此途径,攻击者可以绕过普通用户的权限限制,进行任意操作,如安装恶意软件、修改系统配置或删除日志等。
总结
Linux系统中的组ID(GID)是区分用户组和管理权限的重要手段。了解每个组及其对应的 GID,有助于管理员在系统配置和权限控制中做出更加合理的选择。然而,不当的组配置或权限分配可能为攻击者提供潜在的攻击面,导致系统安全风险。因此,在进行系统配置和渗透测试时,必须特别关注具有特殊权限的用户组,确保系统能够在最小权限原则下正常运行,并及时发现并修复安全漏洞。
系统中的某些特权组(如 docker
、disk
、adm
、tty
和 wheel
)具有较高的权限,若攻击者能够成功加入这些组,便能通过相应的权限提升手段对系统进行攻击。因此,管理员需要确保这些组的权限配置严格控制,定期审查用户组的成员,并确保敏感命令和文件的访问权限得到适当限制,从而降低潜在的安全风险。
相关文章:
Linux特权组全解析:识别GID带来的权限提升风险
组ID(Group ID,简称 GID)是Linux系统中用来标识不同用户组的唯一数字标识符。每个用户组都有一个对应的 GID,通过 GID,系统能够区分并管理不同的用户组。 在Linux系统中,系统用户和组的配置文件通常包括以…...
安卓/ios脚本开发按键精灵经验小分享
1. 程序的切换 我们经常碰到这样的需求:打开最近的应用列表,选取我们想要的程序。但是每个手机为了自己的风格,样式都有区别,甚至连列表的滑动方向都不一样,我们很难通过模拟操作来识别点击,那么我们做的只…...
机器学习在癌症分子亚型分类中的应用
学习笔记:机器学习在癌症分子亚型分类中的应用——Cancer Cell 研究解析 1. 文章基本信息 标题:Classification of non-TCGA cancer samples to TCGA molecular subtypes using machine learning发表期刊:Cancer Cell发表时间:20…...
DeepSeek本地部署保姆级教程
由于DeepSeek近期遭受攻击,又加上用户访问量较大,导致总是服务不可用,让人十分窝火。有没有好的解决办法呢?答案是自己在电脑端部署一套,这样就不用和别人抢着用了。另外本地部署的好处还有保护隐私与减少延迟。 如果…...
无惧户外复杂环境,安科瑞 AKH-0.66/K-HW 开口式互感器准确测流
安科瑞 吕梦怡 18706162527 1.产品特点 AKH-0.66/K-HW 系列互感器具有防水功能,可在户外使用,切面端口采用橡胶垫环绕可有效阻止雨水进入。互感器采用注塑技术,将互感器线圈直接在模具中进行注塑,同时二次侧引线采用防水端子…...
玩转Docker | 使用Docker部署httpd服务
玩转Docker | 使用Docker部署httpd服务 前言一、准备工作环境确认检查操作系统准备网站目录和配置文件二、拉取httpd镜像三、运行httpd容器运行容器命令检查容器状态四、验证httpd服务浏览器访问测试错误排查五、容器管理与维护查看容器状态停止和启动容器更新网站内容和配置六…...
MacOS 安装NVM
MacOS 安装NVM 方法一:使用Homebrew安装nvm 打开终端(Terminal),输入以下命令安装Homebrew: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装nvm…...
Qt 数据库SQLite 使用【01】基本功能
1.开发背景 Qt 开发过程中难免需要存储数据,可以选择保存到本地文件,但是查找比较麻烦,所以就有了数据库,主要是方便查找数据,增删改查等操作,而 SqLite 属于数据库中轻量级的存在,适合本地数据…...
http状态码:请说说 503 Service Unavailable(服务不可用)的原因以及排查问题的思路
503 Service Unavailable(服务不可用) 是一种HTTP状态码,表示服务器当前无法处理请求,通常是由于临时性原因导致服务中断。以下是它的常见原因和排查思路: 一、503错误的常见原因 1. 服务器过载 场景:服务…...
58页PPT学习华为面向业务价值的数据治理实践
目录 1. 正文解读... 1 2. 华为数据质量管控的质量度量框架是怎样的?... 2 3. 如何在企业中实施类似华为的数据质量管控...
电脑开机提示按f1原因分析及终极解决方法来了
经常有网友问到一个问题,我电脑开机后提示按f1怎么解决?不管理是台式电脑,还是笔记本,都有可能会遇到开机需要按F1,才能进入系统的问题,引起这个问题的原因比较多,今天小编在这里给大家列举了比…...
DeepSeek模型构建与训练
在完成数据预处理之后,下一步就是构建和训练深度学习模型。DeepSeek提供了简洁而强大的API,使得模型构建和训练变得非常直观。无论是简单的全连接网络,还是复杂的卷积神经网络(CNN)或循环神经网络(RNN),DeepSeek都能轻松应对。本文将带你一步步构建一个深度学习模型,并…...
ProxySQL实现mysql8主从同步读写分离
一、ProxySQL基本介绍 ProxySQL是 MySQL 的高性能、高可用性、协议感知代理。 简单介绍下ProxySQL及其功能和配置,主要包括: 最基本的读/写分离,且方式有多种;可定制基于用户、基于schema、基于语句的规则对SQL语句进行路由&…...
Day38-【13003】短文,树的基本概念,用广义表表示树
文章目录 第五章 树与二叉树第一节 树的基本概念用广义表,也就是集合表示发,来表示树 第五章 树与二叉树 第一节 树的基本概念 因为树是一种层次结构,所以它是一种非线性结构,在实际应用中具有广泛的用途。 日常生活中ÿ…...
LabVIEW与PLC交互
一、写法 写命令立即读出 写命令后立即读出,在同一时间不能有多个地方写入,因此需要在整个写入后读出过程加锁 项目中会存在多个循环并行执行该VI,轮询PLC指令 在锁内耗时,就是TCP读写的实际耗时为5-8ms,在主VI六个…...
MySQL第四次作业
新建数据库 新建表 student表 2.course表 3.sc表 修改Student 表中年龄(sage)字段属性,数据类型由int 改变为smallint alter table student modify sage smallint; 为Course表中Cno 课程号字段设置索引,并查看索引 create index index_cno on cou…...
栈和队列的实现(C语言)
1:栈 1:概念和结构 栈:一种特殊的线性表,其只运行在固定的一段进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守先进后出的原则。 压栈:在栈里面插入…...
(四)QT——QMainWindow——界面菜单设计
目录 前言 QMainWindow 结构 菜单栏 工具栏 状态栏 停靠部件 核心部件 UI 文件创建窗口 总结 前言 QMainWindow 是 Qt 框架中的一个类,主要用于创建桌面应用程序的主窗口。它提供了一个标准的窗口布局,包含菜单、工具栏、状态栏和中心小部件等功…...
MySQL InnoDB引擎 脏读、不可重复读和幻读
在 MySQL 的 InnoDB 存储引擎中,脏读、不可重复读和幻读是并发事务操作时可能出现的数据不一致问题,不同的事务隔离级别对这些问题有不同的处理方式。 1、脏读(Dirty Read) 定义:一个尚未提交的数据变更的事务&#…...
初阶数据结构:树---堆
目录 一、树的概念 二、树的构成 (一)、树的基本组成成分 (二)、树的实现方法 三、树的特殊结构------二叉树 (一)、二叉树的概念 (二)、二叉树的性质 (三&#…...
判断192.168.1.0/24网络中,当前在线的ip有哪些
需求:判断192.168.1.0/24网络中,当前在线的ip有哪些,并编写脚本打印出来。 [rootopenEuler ~]# cat 1.sh #!/bin/bash for ip in $(seq 1 254); do ping -c 1 -W 1 "192.168.1.$ip" > /dev/null 2>&1 if [ $? …...
初始JavaEE篇 —— Spring Web MVC入门(上)
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏:JavaEE 目录 RequestMappingg 注解介绍 Postman的介绍与使用 PostMapping 与 GetMapping 注解 构造并接收请求 接收简单参数 接收对象…...
STM32的HAL库开发-通用定时器输入捕获实验
一、通用定时器输入捕获部分框图介绍 1、捕获/比较通道的输入部分(通道1) 首先设置 TIM_CCMR1的CC1S[1:0]位,设置成01,那么IC1来自于TI1,也就是说连接到TI1FP1上边。设置成10,那个IC1来自于TI2,连接到TI2FP1上。设置成…...
nodejs:express + js-mdict 网页查询英汉词典,能播放.spx 声音
向 DeepSeek R1 提问: 我想写一个Web 前端网页,后台用 nodejs js-mdict , 实现在线查询英语单词,并能播放.spx 声音文件 1. 项目结构 首先,创建一个项目目录,结构如下: mydict-app/ ├── public/ │ …...
【蓝桥杯嵌入式】5_PWM
全部代码网盘自取 链接:https://pan.baidu.com/s/1PX2NCQxnADxYBQx5CsOgPA?pwd3ii2 提取码:3ii2 1、PWM占空比可调 以往届的赛题举例 将PA6、PA7分别设置为TIM16_CH1和TIM17_CH1 打开TIM16和TIM17,并设置PWM输出模式及其频率 设置占空比初…...
ESM-IF1:从AF2的预测结构中学习逆折叠
作者研究了从蛋白质骨干原子坐标预测蛋白质序列的问题。迄今为止,机器学习解决此问题的方法一直受限于可用的实验测定蛋白质结构的数量。作者使用AlphaFold2为1200万个蛋白质序列预测的结构,从而将训练数据扩充了近三个数量级。相比现有方法,…...
kafka服务端之控制器
文章目录 概述控制器的选举与故障恢复控制器的选举故障恢复 优雅关闭分区leader的选举 概述 在Kafka集群中会有一个或多个broker,其中有一个broker会被选举为控制器(Kafka Controler),它负责管理整个集群中所有分区和副本的状态。…...
Redis双写一致性(数据库与redis数据一致性)
一 什么是双写一致性? 当修改了数据库(MySQL)中的数据,也要同时更新缓存(redis)中的数据,缓存中的数据要和数据库中的数据保持一致 双写一致性,根据业务对时间上的要求,…...
feign Api接口中注解问题:not annotated with HTTP method type (ex. GET, POST)
Bug Description 在调用Feign api时,出现如下异常: java.lang.IllegalStateException: Method PayFeignSentinelApi#getPayByOrderNo(String) not annotated with HTTPReproduciton Steps 1.启动nacos-pay-provider服务,并启动nacos-pay-c…...
开源2+1链动模式AI智能名片S2B2C商城小程序:突破流量与创意困境的新路径
摘要:本文深入剖析当前互联网行业中流量集中于巨头以及创意边际效应递减的困境,并探讨开源21链动模式AI智能名片S2B2C商城小程序在应对这些困境时所展现的独特优势与应用策略。通过对行业现状的分析以及该小程序功能特点的研究,旨在为企业在艰…...
python编程-内置函数compile(),exec(),complex(),eval()详解
1. compile() 函数 用途:将一个字符串源代码编译为字节码对象,这样可以直接被Python解释器执行,或者通过exec()或eval()函数来执行。 参数: source:一个字符串或AST(抽象语法树)对象&am…...
websocket自动重连封装
websocket自动重连封装 前端代码封装 import { ref, onUnmounted } from vue;interface WebSocketOptions {url: string;protocols?: string | string[];reconnectTimeout?: number; }class WebSocketService {private ws: WebSocket | null null;private callbacks: { [k…...
解锁C/C++:链表数据结构的奇幻之旅
目录 一、引言二、链表基础概念2.1 链表是什么2.2 链表的类型三、C 语言实现链表3.1 定义链表节点3.2 创建链表3.3 链表操作3.3.1 遍历链表3.3.2 插入节点3.3.3 删除节点3.3.4 查找节点3.4 完整示例代码四、C++ 实现链表4.1 定义链表节点类4.2 创建链表4.3 链表操作4.3.1 遍历链…...
x64、aarch64、arm与RISC-V64:详解四种处理器架构
x64、aarch64、arm与RISC-V64:详解四种处理器架构 x64架构aarch64架构ARM架构RISC-V64架构总结与展望在计算机科学领域,处理器架构是构建计算机系统的基石,它决定了计算机如何执行指令、管理内存和处理数据。x64、aarch64、arm与RISC-V64是当前主流的四种处理器架构,它们在…...
nuxt3中报错: `setInterval` should not be used on the server.
那是因为在后端渲染没有浏览器的执行环境,一些浏览器环境提供的对象和方法都无法使用,代码判断下就行。 if (import.meta.client) {setInterval(() > {}, 1000) }Import meta Nuxt API...
python编程-集合内置函数和filter(),集合常见操作
在Python中,列表、集合、字典是三种常用的数据结构,它们各自拥有一些内置函数,用于执行各种操作。 一、列表的常用内置函数 #1、append(obj): 在列表末尾添加新的对象。list_a [1, 2, 3] list_a.append(4) print(list_a) # 输出: [1,…...
三极管的截止、放大、饱和区
三极管的几个区,都有什么用: 截止区:晶体管不导通,用于开关电路的“关”状态。 放大区:晶体管用于信号放大,集电极电流与基极电流成正比。 饱和区:晶体管完全导通,用于开关电路的“…...
python爬虫--简单登录
1,使用flask框架搭建一个简易网站 后端代码app.py from flask import Flask, render_template, request, redirect, url_for, sessionapp Flask(__name__) app.secret_key 123456789 # 用于加密会话数据# 模拟用户数据库 users {user1: {password: password1}…...
苹果公司宣布正式开源 Xcode 引擎 Swift Build145
2025 年 2 月 1 日,苹果公司宣布正式开源 Xcode 引擎 Swift Build145。 Swift 是苹果公司于 2014 年推出的一种开源编程语言,用于开发 iOS、iPadOS、macOS、watchOS 和 tvOS 等平台的应用程序。 发展历程 诞生:2014 年,苹果在全球…...
齿轮减速机和平行轴减速机有何区别?
减速机是传动系统中重要的组成部分,常用的减速机有四大系列,分别是平行轴减速机、同轴减速机、直角减速机和齿轮减速机。那么大家知道齿轮减速机和平行轴减速机投什么区别吗? 齿轮减速机的轴不一定是平行的,还可能存在相交轴或交错…...
基于Hexo实现一个静态的博客网站
原文首发:https://blog.liuzijian.com/post/8iu7g5e3r6y.html 目录 引言1.初始化Hexo2.整合主题Fluid3.部署评论系统Waline4.采用Nginx部署 引言 Hexo是中国台湾开发者Charlie在2012年创建的一个开源项目,旨在提供一个简单、快速且易于扩展的静态博客生…...
MIT6.824 Lecture 1-Introduction
balance:性能和容错 Faulty tolerance: Availablity、Recoverability、NV storage(非易失性存储,比较贵)、Replication(多个数据副本) consistency: Put(key,…...
【Redis实战】投票功能
1. 前言 现在就来实践一下如何使用 Redis 来解决实际问题,市面上很多网站都提供了投票功能,比如 Stack OverFlow 以及 Reddit 网站都提供了根据文章的发布时间以及投票数计算出一个评分,然后根据这个评分进行文章的展示顺序。本文就简单演示…...
1Panel应用推荐:WordPress开源博客软件和内容管理系统
1Panel(github.com/1Panel-dev/1Panel)是一款现代化、开源的Linux服务器运维管理面板,它致力于通过开源的方式,帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用,1Panel特别开通应用商店&am…...
GGML、GGUF、GPTQ 都是啥?
GGML、GGUF和GPTQ是三种与大型语言模型(LLM)量化和优化相关的技术和格式。它们各自有不同的特点和应用场景,下面将详细解释: 1. GGML(GPT-Generated Model Language) 定义:GGML是一种专为机器学习设计的张量库,由Georgi Gerganov创建。它最初的目标是通过单一文件格式…...
MySQL主从复制原理及工作过程
一、主从复制原理 1、MySQL将数据变化记录到二进制日志中; 2、Slave将MySQL的二进制日志拷贝到Slave的中继日志中; 3、Slave将中继日志中的事件在做一次,将数据变化,反应到自身(Slave)的数据库 详细步骤&…...
Unity VideoPlayer播放视屏不清晰的一种情况
VideoPlayer的Rnder Texture可以设置Size,如果你的视屏是1920*1080那么就设置成1920*1080。 如果设置成其他分辨率比如800*600会导致视屏不清晰。...
发布:大彩科技DN系列2.8寸高性价比串口屏发布!
一、产品介绍 该产品是一款2.8寸的工业组态串口屏,采用2.8寸液晶屏,分辨率为240*320,支持电阻触摸、电容触摸、无触摸。可播放动画,带蜂鸣器,默认为RS232通讯电平,用户短接屏幕PCB上J5短接点即可切换为TTL电…...
Oh3.2项目升级到Oh5.0(鸿蒙Next)具体踩坑记录(一)
目录 1.自动修复部分 Cause: The project structure and configuration require an upgrade. Solution: 1. Use Migrate Assistant to auto-upgrade the project structure and configuration. 2. Manually upgrade the project structure and configuration by following th…...
pytest+request+yaml+allure 接口自动化测试全解析[手动写的跟AI的对比]
我手动写的:Python3:pytest+request+yaml+allure接口自动化测试_request+pytest+yaml-CSDN博客 AI写的:pytest+request+yaml+allure 接口自动化测试全解析 在当今的软件开发流程中,接口自动化测试扮演着至关重要的角色。它不仅能够提高测试效率,确保接口的稳定性和正确性…...