Skip to content

yz-tao/ACL-Reader-New

Repository files navigation

ACL Reader New (开发预览版)

ACL Reader New 是一款用于探索 macOS 文件系统扩展访问控制列表 (ACL) 的实验性工具。本项目旨在挑战一个系统级难题:在复杂的 macOS 权限体系中,尝试通过递归算法追踪权限条目的原始继承源头。

[!CAUTION] 注意: 本项目目前处于活跃开发阶段。由于 macOS 权限继承逻辑的复杂性(如权限缩减、系统拦截、非标准继承等),“继承项溯源”功能目前仍存在不确定性,扫描结果仅供参考。

🔍 项目初衷

在 macOS 中,了解一个文件“有什么权限”相对直观,但了解这些权限“从哪里来”却充满挑战。本项目尝试通过以下技术路径探索解决之道:

🛠️ 技术路径

基础 ACL 解析:深度调用底层 Darwin.acl API,解析并展示包含读取、写入、属性修改等全部 13 种细分权限位。

尝试性溯源算法:构建 performClimb 逻辑,沿路径向上递归查找父目录,试图匹配并定位继承权限的显式定义点。

📊 现状说明

递归查找局限:目前的递归逻辑在处理“权限位缩减”或“非标准继承”场景时,可能无法精准对应到物理源头路径。

启发式匹配:引入了初步的子集匹配逻辑 (MatchGrade.compatible),尝试在权限不完全匹配时提供可能的源头建议。

系统拦截处理:初步识别因 SIP (系统完整性保护) 或沙盒限制导致的溯源中断,并标记为“系统受限”。

✨ 主要功能

可视化条目列表:基于 SwiftUI 构建,动态区分 Allow 与 Deny 类型。

遗传标志解析:识别 file_inherit、directory_inherit 等关键标志。

沙盒访问兼容:内置 NSOpenPanel 授权引导,解决手动输入路径导致的权限拒绝问题。

🖥️ 界面预览 截屏2025-12-31 上午4 10 15

⚙️ 系统要求与安装

环境要求

系统版本: macOS 15.5 或更高

开发工具: Xcode 16+

权限: 建议开启“完全磁盘访问权限”以获得最佳溯源体验

💻 技术实现细节

桥接处理:通过 Bridging-Header.h 引入 <membership.h>,利用 mbr_uuid_to_id 实现 UUID 到用户名的转换。

核心挑战:ACE 溯源逻辑目前仍处于持续优化中。目前的难点在于如何更精准地模拟内核判断“哪些项有资格遗传给子项”的边界逻辑。

🚧 路线图 (Roadmap)

[ ] 溯源准确性优化:针对更多极端样本(如多重继承冲突)进行压力测试。

[ ] 置信度 UI 反馈:在界面上区分“确定”与“推测”的匹配结果。

[ ] 深层权限修改:探索在安全环境下修改 ACL 的可能性。

⚖️ 声明

这是一个个人探索性质的项目,代码中可能存在逻辑疏漏。

诚邀指教:如果您在溯源算法、POSIX 权限位处理或 macOS 权限继承机制上有更好的见解,欢迎通过 Issues 交流或提交 Pull Request。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors