大型 IT公司的电子设备一般都有企业级设备管理,即通过在电子设备上安装管理软件达到监控\限制员工网络请求、一键预装软件、拥有最高权限可远程控制员工电子设备的目的。例如,针对 apple设备的Jamf MDM。另外,二手手机市场,有好多分期零元购的手机产品,本质上也是在手机上安装了 MDM软件,如果分期贷款不及时偿还,手机售卖方会通过 MDM远程锁死设备。
本人在一次使用私人电脑登录公司邮箱的过程中,误装了Jamf MDM软件,结果出现了如下问题:
a,被安装了很多公司内部app及microsoft office 全套办公软件,且移到废纸篓后,会再次自动安装,无法删除
b,系统偏好设置里多了描述文件一项,里面多了10几个描述文件,且减号按钮为灰色不可删除状态
c,开机会弹出提示框,提示遵守公司协议,并只有接受这一选项,开机后会时不时弹出一些其他公司协议弹框
相信一些小伙伴也可能遇到类似的问题,说下我的解决过程:
1,进入系统偏好设置,找到mdm描述文件点击减号删除,这样其余描述文件随着mdm的删除自动就被删除了
如果以上方案无效,建议用recovery mode强制删除,步骤如下:
- Boot the Mac into Recovery Mode (hold down command+R during startup).
- Go to the Utilities menu and open Terminal and type: csrutil disable. This will disable SIP (System Integrity Protection).
- Reboot into the OS.
- Open the integrated terminal and type
- cd /var/db/ConfigurationProfiles
- rm -rf *
- mkdir Settings touch Settings/.profilesAreInstalled
- Reboot.
- Boot the Mac into Recovery Mode (hold down command+R during startup).
- Go to the Utilities menu and open Terminal and type: csrutil enable. This will re-enable SIP.
- Reboot into the OS
完成操作后,描述文件、预装软件删不掉的问题就解决了,但是开机仍会弹出公司协议并强制接受。这是因为 MDM软件隐式地篡改了开机启动项,如果设置中的开机启动项目没有相关项目,就是需要命令行排查系统启动项。
macOS 使用 launchd 程序來启动、停止、管理系统下进程,开机后的所有默认启动项都是由launchd启动并管理的, launchd是系统启动的第一个进程,PID为1。launchctl是launchd的管理工具,二者之间的关系类似于linux系统的systemd和systemctl。
当你开机之后,launchd会先后启动系统启动项,详细逻辑如下:
当launchd启动后,扫描/System/Library/LaunchDaemons和/Library/LaunchDaemons中的plist文件并加载,以root或者指定用户权限运行,在开机未输入密码的时候就开始运行,如果要配置开机自启动服务,推荐把plist文件放到/Library/LaunchDaemons中
输入密码登入系统后,扫描/System/Library/LaunchAgents、/Library/LaunchAgents(plist文件所有用户可见)、~/Library/LaunchAgents(plist当前用户可见)这三个目录中的plist文件并加载,以当前用户权限运行,在开机并且输入账号密码之后开始运行
每一个plist文件,都叫一个Job(即一个任务),只有plist里设置了RunAtLoad为true或keepAlive为true时,才会在加载这些plist文件的同时启动plist所描述的服务
这时候,你需要排查/System/Library/LaunchDaemons、/Library/LaunchDaemons、/System/Library/LaunchAgents、/Library/LaunchAgents这几个文件夹下的 plist文件,找到控制你弹出协议的配置行,将该配置行的RunAtLoad设置为false、将keepAlive设置为false,问题基本就能解决了。
如果还没解决,就只能用时间机器将系统还原到之前的纯净版本了。工程量巨大。因此,使用私人电脑登录公司网站的时候,一定要慎重,切勿手贱,血泪教训啊。