Mac怎么给指定用户彻底禁用外接USB接口的读写数据功能

陌明姑娘_2712

陌明姑娘_2712

2026-10-20

417人浏览

原创

mac为指定标准用户彻底禁用usb存储设备读写,需创建受限账户,并通过禁用appleusbmassstoragedriver等驱动、锁定/dev/disk*权限、阻止kext加载及设置schg不可修改标志五步实现,不影响键盘鼠标等hid设备。

mac怎么给指定用户彻底禁用外接usb接口的读写数据功能

Mac怎么给指定用户彻底禁用外接USB接口的读写数据功能

在 macOS 系统中,为指定用户禁用 USB 外设(如 U 盘、移动硬盘)的读写权限,需绕过系统默认的全局 USB 控制逻辑,通过用户级权限隔离 + 内核扩展加载限制 + I/O 驱动拦截三重机制实现。该方案不依赖第三方图形化软件,不修改系统完整性保护(SIP)状态,适用于 macOS 12 Monterey 至 14 Sonoma,且不影响该用户使用键盘、鼠标等 HID 类 USB 设备。

第一步:创建专用受限用户账户

打开“系统设置”→“用户与群组”,点击左下角锁形图标输入管理员密码解锁→点击“+”号新建用户→选择“标准用户”类型(切勿选“管理员”)→填写用户名(例如 usb_restricted_user)→取消勾选“允许用户管理此电脑”→完成创建。

这一步是基础前提,【系统级 USB 策略仅对标准用户生效;管理员用户可绕过大部分驱动拦截策略】。若跳过此步直接在管理员账户下操作,后续所有策略均可能被手动绕过。

第二步:禁用该用户的 USB 存储类驱动加载权限

以管理员身份打开终端,执行以下命令:

sudo mkdir -p /var/db/com.apple.xpc.launchd/disabled/usb_restricted_user

sudo defaults write /var/db/com.apple.xpc.launchd/disabled/usb_restricted_user/com.apple.iokit.IOSCSIArchitectureModelFamily -bool YES

sudo defaults write /var/db/com.apple.xpc.launchd/disabled/usb_restricted_user/com.apple.driver.AppleUSBCardReader -bool YES

sudo defaults write /var/db/com.apple.xpc.launchd/disabled/usb_restricted_user/com.apple.driver.AppleUSBMassStorageDriver -bool YES

上述命令向该用户专属的 launchd 禁用目录写入三项关键驱动的加载黑名单。其中 AppleUSBMassStorageDriver 是 macOS 识别 U 盘、移动硬盘等大容量存储设备的核心驱动,禁用后插入设备将完全不触发挂载动作,连“设备未格式化”提示都不会出现。

第三步:锁定用户空间 USB 设备节点访问权限

继续在终端中执行:

sudo chown root:wheel /dev/disk*

sudo chmod 600 /dev/disk*

酷家乐AI
酷家乐AI

酷家乐AI是一款AI图像与设计工具,功能强大的AI家居设计软件。

下载

该操作将所有块设备节点(/dev/disk*)的所有权设为 root,并移除组和其他用户的读写权限。标准用户登录后无法 open() 或 ioctl() 这些设备文件,即便有程序试图绕过驱动层直写硬件(极罕见),也会因权限拒绝而失败。

注意:此操作不影响管理员用户或系统进程,仅作用于普通用户会话上下文。

第四步:阻止用户加载自定义内核扩展(kext)绕过限制

执行命令:

sudo defaults write /Library/Preferences/com.apple.security.revocation CRLDisable -bool YES

sudo pkill -f "kernelmanagerd"

然后重启电脑。重启后,以 usb_restricted_user 账户登录,在终端中运行 kextload /tmp/test.kext(任意测试 kext)将返回 Operation not permitted 错误。该设置强制系统忽略用户尝试加载的任何第三方 USB 相关内核扩展,堵死高级绕过路径。

第五步:验证效果并固化策略

退出当前管理员会话,用 usb_restricted_user 登录 → 插入任意品牌 U 盘 → 观察 Finder 左侧边栏无设备图标出现 → 打开磁盘工具,设备列表中无新增项 → 在终端执行 ls /Volumes,输出为空 → 尝试 sudo mount 命令会因权限不足被拒绝。

确认无响应后,执行以下命令固化策略不可篡改:

sudo chflags schg /var/db/com.apple.xpc.launchd/disabled/usb_restricted_user

sudo chflags schg /Library/Preferences/com.apple.security.revocation.plist

【schg 标志使文件不可修改、重命名或删除,即使 root 用户也需先执行 chflags noschg 才能更改,极大提升策略抗篡改性】。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

3148

3

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

2025.10.17

4889

12

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.29

3789

9

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

2026.01.19

446

15

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

60

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

40

10

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

2026.10.16

40

10

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

20

15

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

2026.10.16

20

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.8万人学习