这篇教程里的 root 是 Linux/Unix 的超级用户,通常对应有效 UID 0;它不是 Android 上修补 boot.img、安装 Magisk 或管理 App 的 su 请求。我们只在你拥有的 Linux 虚拟机或测试主机上做身份观察,不尝试漏洞利用,也不改变 Android 设备。
你会完成什么#
- 用
id区分登录用户、组和有效身份。 - 用
sudo -l读懂当前账户被允许执行的规则。 - 只让一条发行版自带的只读命令以 root 身份运行,并比较前后输出。
- 认识
su、sudo、doas、polkit 与 Linux capabilities 的不同授权边界。 - 留下会话记录,并确认实验没有创建长期 root 入口。
先看结论#
| 看到的词或任务 | 它实际指什么 | 新手应采取的路线 |
|---|---|---|
sudo command | 策略允许后,以目标用户运行这一条命令 | 先读 sudo -l,再核对命令完整路径 |
su - | 切换到另一账户的登录环境 | 日常管理通常不需要保持 root shell |
CAP_NET_BIND_SERVICE | 把 root 的一小项能力单独授予进程 | 由管理员按服务文档配置,不照抄陌生命令 |
boot.img、Magisk、KernelSU | Android 启动链与 Root 授权 | 离开本篇,按精确机型与系统构建查 Android 指南 |
privesc、exploit | 绕过既有授权的攻防内容 | 新手不要在真实系统执行 |
心智模型#
Linux:普通用户(UID 1000) → sudo 策略/PAM → 单条可信命令(EUID 0) → 命令结束即返回
Android:Bootloader → 修补/替换启动组件 → Root 管理器 → App 的 su 请求
两条路径只是都使用了“root”这个词,并不互通
工具清单#
| 工具 | 角色 | 什么时候用 | 来源与注意 |
|---|---|---|---|
id、whoami | 只读显示当前身份 | 每次实验前后 | 系统自带;whoami 信息少于 id |
sudo | 按 sudoers 策略执行目标命令 | 只在任务确实需要更高权限时 | sudo 不是沙箱,命令及参数都必须可信 |
visudo | 锁定并检查 sudoers 语法 | 有经验的管理员确需改策略时 | 本实验不修改规则;不要用普通编辑器直接改 |
OpenBSD doas | 更小的权限切换工具 | 系统已选择 doas 时 | 语法与 sudo 不同,不能混用配置 |
| polkit | 为系统服务“动作”做授权 | 桌面或 D-Bus 服务请求权限时 | pkexec 不是通用 Android Root 工具 |
| capabilities | 把传统 root 权力拆成小能力 | 服务只需绑定低端口等单项能力时 | 能力仍有安全影响;只做读取观察 |
项目全景:sudo 与权限提升的 17 个项目,一个不漏#
这组结果把 Linux 的 sudo/提权、Android 特权进程、Magisk 特权应用和攻防研究混在一起。文章应先画清授权边界,再把 17 个项目分别放进安全使用、开发接口或仅供审计的路线。
| 技术路线 | 项目数 | 处理等级 | 在主题任务中的位置 |
|---|---|---|---|
| Linux 日常管理任务 | 2 | 候选路线 | 从无 root 安装软件包和显式创建 swap 讲清何时真的需要管理员权限,并强调先读脚本、先做快照。 |
| Android 特权执行接口 | 7 | 候选路线 | 比较 Binder 特权进程、Flutter/Java shell 封装、模拟器临时提权和 POSIX 用户态方案;它们是开发接口,不是通用一键 Root。 |
| 系统级与特权 App 转换 | 2 | 候选路线 | 以 Green2Priv 系列说明把普通 App 变成 priv-app 的系统影响、版本配套和卸载回滚;不要把“能安装”误当成“权限安全”。 |
| 沙箱与提权检测 | 2 | 参考/审计 | 把 namespaces、pivot_root、seccomp、capability dropping 与 eBPF 凭据检测串成防御路线,只在隔离实验机验证。 |
| 提权与后门研究(仅审计) | 3 | 隔离审计 | 对枚举器、提权清单和 setuid 后门只做威胁建模与识别,不给真实目标执行步骤,并明确授权和隔离边界。 |
| 综合教程与待复核项目 | 1 | 边界复核 | 收束教程集合或元数据不足的项目:逐项说明它实际谈的是 Linux、Android 还是文档,不把名称中的 root 当成功能证明。 |
1. Linux 日常管理任务 · 2#
从无 root 安装软件包和显式创建 swap 讲清何时真的需要管理员权限,并强调先读脚本、先做快照。
本组共 2 项:2 个源项目、0 个 Fork,其中 1 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| 3x1l3l4bs/pkget | 主题用途:将 3x1l3l4bs/pkget 纳入「Linux 日常管理任务」候选路线,根据 apt · debian · install · Shell 核对功能、平台与版本适配。 上游自述(保留原文):Install packages on any Debian based Linux distro without root or installing it on the entire system | 已归档源项目 · ★ 122 · GPL-3.0 · 2023-03-22。已归档:保留作历史、迁移或兼容性参考,不作为默认安装源。 |
| spiritLHLS/addswap | 主题用途:将 spiritLHLS/addswap 纳入「Linux 日常管理任务」候选路线,根据 bash · kvm · linux · Shell 核对功能、平台与版本适配。 上游自述(保留原文):为kvm、openvz虚拟化的linux服务器增加swap分区,请确保在root权限下使用(Add swap partition for Linux server with kvm or openvz, please make sure to use it with root privileges) | 未归档源项目 · ★ 30 · MIT · 2026-06-01。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
2. Android 特权执行接口 · 7#
比较 Binder 特权进程、Flutter/Java shell 封装、模拟器临时提权和 POSIX 用户态方案;它们是开发接口,不是通用一键 Root。
本组共 7 项:7 个源项目、0 个 Fork,其中 0 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| quarkslab/AERoot | 主题用途:将 quarkslab/AERoot 纳入「Android 特权执行接口」候选路线,根据 android-emulator · root-privileges · Python 核对功能、平台与版本适配。 上游自述(保留原文):AERoot is a command line tool that allows you to give root privileges on-the-fly to any process running on the Android emulator with Google Play flavors AVDs. | 未归档源项目 · ★ 213 · Apache-2.0 · 2023-11-01。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
| gokul1630/root | 主题用途:将 gokul1630/root 纳入「Android 特权执行接口」候选路线,根据 android · flutter-plugin · root · Dart 核对功能、平台与版本适配。 上游自述(保留原文):A Flutter Plugin to check Android device Root status and execute shell commands with root privileges | 未归档源项目 · ★ 25 · MIT · 2022-09-22。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
| MMRLApp/RootThread | 主题用途:将 MMRLApp/RootThread 纳入「Android 特权执行接口」候选路线,根据 Java 核对功能、平台与版本适配。 上游自述(保留原文):An Android library for executing arbitrary code in a privileged root process via Binder IPC, with first-class support for both Java (Future, ExecutorService) and Kotlin (coroutines, Flow, DSL). | 未归档源项目 · ★ 11 · GPL-3.0 · 2026-04-01。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
| thepanoc95/UserSU | 主题用途:将 thepanoc95/UserSU 纳入「Android 特权执行接口」候选路线,根据 android · posix · root · C++ 核对功能、平台与版本适配。 上游自述(保留原文):A user-based root solution for Android devices. (+ Any other POSIX System) | 未归档源项目 · ★ 10 · 协议未声明 · 2026-06-18。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
| 4evergr8/FlutterClashRoot | 主题用途:将 4evergr8/FlutterClashRoot 纳入「Android 特权执行接口」候选路线,根据 android · clash · flutter · Dart 核对功能、平台与版本适配。 上游自述(保留原文):基于Flutter框架的Clash内核控制器,仅限Root用户 | 未归档源项目 · ★ 8 · 协议未声明 · 2026-07-15。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
| Googlers-Repo/android-xdg-utils | 主题用途:将 Googlers-Repo/android-xdg-utils 纳入「Android 特权执行接口」候选路线,根据 android · cpp · linux · C++ 核对功能、平台与版本适配。 上游自述(保留原文):XDG Utils built for Android with C++ | 未归档源项目 · ★ 4 · MIT · 2023-06-04。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
| parktest0325/AndroidShellExecutor | 主题用途:将 parktest0325/AndroidShellExecutor 纳入「Android 特权执行接口」候选路线,根据 Java 核对功能、平台与版本适配。 上游自述(保留原文):Executing shell commands with app privileges. and "su" command button for rooting. | 未归档源项目 · ★ 4 · 协议未声明 · 2023-08-08。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
3. 系统级与特权 App 转换 · 2#
以 Green2Priv 系列说明把普通 App 变成 priv-app 的系统影响、版本配套和卸载回滚;不要把“能安装”误当成“权限安全”。
本组共 2 项:2 个源项目、0 个 Fork,其中 0 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| K3V1991/Green2Priv-Beta | 主题用途:将 K3V1991/Green2Priv-Beta 纳入「系统级与特权 App 转换」候选路线,根据 android · apk · app · Shell 核对功能、平台与版本适配。 上游自述(保留原文):A simple Module to make Greenify work as a ROM-integrated (privileged) App | 未归档源项目 · ★ 11 · 协议未声明 · 2023-11-04。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
| K3V1991/Green2Priv | 主题用途:将 K3V1991/Green2Priv 纳入「系统级与特权 App 转换」候选路线,根据 android · apk · app · Shell 核对功能、平台与版本适配。 上游自述(保留原文):A simple Module to make Greenify work as a ROM-integrated (privileged) App | 未归档源项目 · ★ 11 · 协议未声明 · 2023-11-04。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
4. 沙箱与提权检测 · 2#
把 namespaces、pivot_root、seccomp、capability dropping 与 eBPF 凭据检测串成防御路线,只在隔离实验机验证。
本组共 2 项:2 个源项目、0 个 Fork,其中 0 项已归档。它们用于对照、诊断或审计,不组成可批量安装的推荐清单。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| Division-36/Z-Jail | 主题用途:将 Division-36/Z-Jail 放在「沙箱与提权检测」中作对照或审计参考,使用 audit · audit-trail · binary-hardening · C 判断它与当前任务的边界。 上游自述(保留原文):A lightweight, multi-layer Linux sandbox combining namespaces, pivot_root, seccomp-bpf, capability dropping, and an evidence-based verdict engine (Truthimatics Public Version) for secure, auditable code execution. | 未归档源项目 · ★ 73 · MIT · 2026-07-19。参考条目:用于防御性观测、概念对照或实验室审计;不是可直接照搬的安装方案。 |
| containerscrew/rootisnaked | 主题用途:将 containerscrew/rootisnaked 放在「沙箱与提权检测」中作对照或审计参考,使用 c · c-programming · credential-detection · C 判断它与当前任务的边界。 上游自述(保留原文):Simple root privilege escalation detection using eBPF 🐝 | 未归档源项目 · ★ 35 · GPL-3.0 · 2026-07-16。参考条目:用于防御性观测、概念对照或实验室审计;不是可直接照搬的安装方案。 |
5. 提权与后门研究(仅审计) · 3#
对枚举器、提权清单和 setuid 后门只做威胁建模与识别,不给真实目标执行步骤,并明确授权和隔离边界。
本组共 3 项:3 个源项目、0 个 Fork,其中 0 项已归档。它们是风险名录,不是新手安装候选;阅读顺序只用于识别威胁、比较上游与 Fork,或在经授权的隔离环境做防御性审计。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| twelvesec/rootend | 主题用途:将 twelvesec/rootend 作为「提权与后门研究(仅审计)」的风险识别样本,只根据 enumerator · escalation · hacking · Python 做防御性分流。 为避免转载攻击步骤或载荷,不复制上游操作性简介。 | 未归档源项目 · ★ 151 · GPL-3.0 · 2021-11-19。隔离条目:只用于风险识别、源码审计或经授权的防御实验;不要在日用机部署,也不要对第三方目标运行。 |
| sujayadkesar/Linux-Privilege-Escalation | 主题用途:将 sujayadkesar/Linux-Privilege-Escalation 作为「提权与后门研究(仅审计)」的风险识别样本,只根据 exploit-scripts · exploits · kernel-exploitation · C 做防御性分流。 为避免转载攻击步骤或载荷,不复制上游操作性简介。 | 未归档源项目 · ★ 61 · 协议未声明 · 2023-01-29。隔离条目:只用于风险识别、源码审计或经授权的防御实验;不要在日用机部署,也不要对第三方目标运行。 |
| azuk4r/nmap_backdoor | 主题用途:将 azuk4r/nmap_backdoor 作为「提权与后门研究(仅审计)」的风险识别样本,只根据 backdoor · nmap · C 做防御性分流。 为避免转载攻击步骤或载荷,不复制上游操作性简介。 | 未归档源项目 · ★ 53 · NOASSERTION · 2025-10-28。隔离条目:只用于风险识别、源码审计或经授权的防御实验;不要在日用机部署,也不要对第三方目标运行。 |
6. 综合教程与待复核项目 · 1#
收束教程集合或元数据不足的项目:逐项说明它实际谈的是 Linux、Android 还是文档,不把名称中的 root 当成功能证明。
本组共 1 项:1 个源项目、0 个 Fork,其中 1 项已归档。它们的平台、用途或分类存在边界,只作逐项核验,不当作默认安装候选。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| sudoskys/Root | 主题用途:将 sudoskys/Root 作为「综合教程与待复核项目」边界条目,通过 android · magisk · root 核对它实际是否属于本教程。 为避免转载攻击步骤或载荷,不复制上游操作性简介。 | 已归档源项目 · ★ 740 · NOASSERTION · 2024-07-29。边界条目:先核对实际平台、用途和分类理由,不作为默认安装源。 |
开始前#
使用你控制的 Linux VM、容器外测试机或可通过控制台恢复的主机。确认账户本来就在管理员允许的 sudoers 策略中;没有权限时应联系管理员,而不是下载“提权脚本”。打开一个终端,并用 script、终端日志或手工笔记保存命令和输出。不要在生产服务器练习。
操作步骤#
1. 记录普通用户身份#
运行 id、whoami 和 pwd。记录 UID、主组、附加组及当前目录。普通桌面 Linux 用户常见 UID 1000,但不要把 1000 当作固定标准。再运行 command -v id,确认稍后调用的是系统路径中的工具,而不是当前目录里的同名脚本。
2. 只读检查授权并运行一条命令#
执行 sudo -l,阅读“可作为哪些用户运行哪些命令”。若策略允许,运行 sudo id;它只显示该进程的身份,不写文件。预期能看到 UID 0,然后命令立即结束。不要运行 sudo -i 或 sudo su -:持续 root shell 会扩大输错命令的影响,也不利于审计。
3. 观察细粒度能力并结束会话#
运行 command -v getcap >/dev/null && getcap "$(command -v ping)"。有些发行版会显示 cap_net_raw,另一些使用不同设计或没有输出,这都不代表失败。它说明程序可以拥有一项能力而不必获得完整 UID 0。最后运行 sudo -k 清除当前终端缓存的认证时间戳,再运行 id 确认已经回到普通身份。回滚就是结束本次会话;本实验没有修改 sudoers 或文件权限。
验证#
- 第一份
id输出显示你的普通 UID,而sudo id只在该子进程中显示 UID 0。 sudo id结束后再次运行id,身份仍是原用户。sudo -l的输出与你实际执行的命令一致,没有新增规则。sudo -k后下一次受保护操作会重新走认证策略。- 系统中没有新建账户、setuid 文件、计划任务或长期 root shell。
排错#
| 现象 | 常见原因 | 安全处理 |
|---|---|---|
sudo: command not found | 极简系统未安装 sudo,或该系统使用 doas | 查发行版官方管理文档;不要从随机脚本安装 |
| “user is not in the sudoers file” | 管理员未授权此账户 | 停止并联系主机管理员,不尝试提权漏洞 |
sudo -l 列出复杂通配符 | 规则依赖命令参数或路径匹配 | 不猜测;让管理员解释并用 visudo 审核 |
getcap 无输出 | 工具未安装或该二进制不用 file capability | 这是允许的结果,不用 sudo 修改二进制 |
sudo id 后误以为手机已 Root | 混淆 Linux 主机与 Android 设备 | 核对运行命令的主机、终端提示符和设备序列号 |
完成清单#
- 我记录了测试主机、账户 UID 和当前目录。
- 我在执行前读过
sudo -l,且只运行了系统自带的只读命令。 - 我能解释 UID 0、sudo 策略和 capability 的区别。
- 我已运行
sudo -k,并确认身份回到普通用户。 - 我没有创建持久入口,也没有把 Linux root 当成 Android Root。