Skip to content

macOS:系统对象、身份与服务机制 ​

系统版本、终端路径与文件权限 ​

macOS 管理要区分交互终端、图形登录会话与后台任务。先记录系统版本、处理器架构、命令路径和文件权限,再理解 launchd 的运行域;不能假定后台任务拥有终端的环境变量或图形授权。

系统、架构与终端 ​

macOS 平台识别先记录系统版本、CPU 架构和终端宿主。Apple Silicon 原生 arm64 与 Rosetta 下的 x86_64 进程可能调用不同工具;操作系统、终端窗口、Zsh 解释器不是一个对象。首次准备从已有终端与本机手册开始,保存课程文件到用户专用目录,不要求安装 Homebrew 或开发工具。本课只提供理论,不做 macOS 原生运行验收。

只读观察和工具族 ​

macOS 只读命令中 sw_vers 读取系统版本,uname -m 读取当前架构,id 读取身份,/usr/bin/du -h -d 1 观察当前目录占用。它们不安装软件。BSD stat 的格式选项与 GNU stat 不通用;找到同名程序也要确认绝对路径。先读帮助再选参数,不能直接粘贴 Linux 命令。

应用包、路径与用户目录 ​

macOS 路径中的应用包是目录,/Applications/Example.app/Contents 包含资源与可执行程序;Finder 显示一个图标不代表它是普通文件。用户配置通常在 ~/Library,系统与用户 Library 归属不同。APFS 卷可以区分或不区分大小写,不能用文件名大小写推断平台保证。Finder 的 Command+Shift+G 可定位目录,Control+Command+F 在支持应用中切换全屏;它们不是 Shell 命令。

用户、管理员与权限 ​

macOS 文件所有权影响常规访问;管理员账户也不是每个进程都以 root 运行。修改某个项目的归属前先确认实际路径与所有者,避免递归扩大范围。这里的示例仅向标准输出打印报告,不需要 sudo,也不读取桌面、通讯录或钥匙串。文件可写仍不代表隐私授权已授予。

练习与参考解答 ​

题目:一台Apple Silicon Mac在Rosetta终端显示x86_64,系统信息显示Apple芯片;用户有管理员组身份。仅凭这两项,能否断定所有进程都是Intel程序、当前脚本有root权限?请给出结论及还需记录的对象。

参考解答:不能。x86_64描述该终端调用链的架构环境,不能推导所有进程;管理员组身份不等于当前进程有效用户为root。应分别记录sw_vers版本、当前进程/工具架构、id身份,以及脚本调用的是系统路径还是第三方路径。快照的三个字段分别回答版本、架构、用户编号,不回答全机进程清单或提升状态。

核对资料 ​

历史参照:原macOS 全屏快捷键。全文为Control+Command+F全屏切换,将桌面入口与终端命令区分融入路径节。

历史参照:原go2shell。全文为Go2ShellHelper拖入工具栏的旧GUI流程;仅吸收Finder与终端职责区分,不承诺当前第三方应用可用。

launchd、进程与权限边界 ​

先明确macOS 14/15、Zsh 路径、用户域与文件权限,再对照配套示例理解sw_vers/uname/id 输出、Label 和后台退出状态。

教学版本族:macOS 14/15,Apple Silicon 与 Intel;系统自带 BSD 工具、Zsh 5.9 语义;不承诺所有小版本。核对日期2026-10-17,不称为2026最新版。示例未执行,配置与命令需按目标环境验收。macOS只交付理论,不纳入原生运行验收。

launchd 域与生命周期 ​

macOS launchd 管理作业生命周期。用户 LaunchAgent 与登录会话关联,系统 LaunchDaemon 不获得桌面交互环境。Label 是作业标识,ProgramArguments 是分开的参数数组,不自动做 Shell 管道和变量展开;~ 也不会在 plist 字符串中替你展开。归档指南解释这些稳定概念,但部署时还须核对目标系统本机手册。

TCC、SIP 与普通权限 ​

macOS TCC 管理应用对受保护数据的访问,SIP 限制受保护系统区域的修改;二者与文件 mode/ACL 是不同层。终端里可以读文件不代表 launchd 作业具有相同隐私授权。遇到拒绝不能先禁用 SIP 或给全盘访问;先缩小数据范围并核对实际运行应用身份。

磁盘容量与备份 ​

macOS 磁盘占用要区分目录统计、卷剩余容量与 APFS 共享空间。du 的目录总计与 Finder、df 的文件系统剩余量口径不同;权限不足也可能让目录统计不完整。Time Machine 是版本备份机制,快照和同步副本不自动等于独立灾备,应验证能否恢复所需文件。

后台环境与路径 ​

macOS 后台环境通常不读取交互式 .zshrc。在终端里修改 PATH 不能证明 LaunchAgent 使用相同程序。课程快照 plist 直接指定 /bin/zsh 和固定脚本路径;旧 JDK 14 Eclipse 记录只说明应用启动配置与终端 PATH 可以不同,不适合作为现代 JDK 安装教程。

练习与参考解答 ​

题目:同一用户在已获文件访问授权的Terminal中读取Documents成功;LaunchAgent改用同一脚本读取该目录时报告Operation not permitted,plist参数仍含字面~/Documents。指出两个必须分开调查的原因,能否直接给目录chmod 777?

参考解答:先纠正路径契约:ProgramArguments不做Shell的波浪号展开,字面~/Documents不能当作用户目录绝对路径。路径修正后再调查实际后台调用身份、会话与TCC授权;Terminal的授权不能直接推导后台作业具有相同授权。chmod 777既不修正字面路径,也不授予TCC权限,而且扩大普通文件权限。应使用明确绝对路径与最少数据范围,不关闭SIP或盲目授予全盘访问。

核对资料 ​

历史参照:原Mac mini 开发环境配置记录。实际阅读旧profile与PATH及标题结构;Java14/Go1.14与公司代理DNS是环境快照,不复制全局环境文件。未采样的安装与网络细节不推定已审定。

历史参照:原macOS 查看目录占用。du -h -d 1仍有查阅价值,课程补统计口径与GNU/BSD选项边界,不把目录总量当卷剩余空间。

继续阅读