← macOS & Jamf Pro & Jamf Pro
🖥️ macOS

macOS Administration — Getting Started

Introduction to macOS administration for IT professionals — system preferences, terminal basics, and common troubleshooting approaches.

📚
Knowledge purpose only. This post covers macOS security concepts to help IT professionals understand how the operating system works. Understanding these mechanisms helps admins better configure, manage, and protect macOS environments.
01
System Information & the I/O Kit Registry

macOS provides a powerful subsystem called the I/O Kit — a collection of frameworks and tools the OS uses to communicate with hardware. It maintains a registry of all hardware and devices connected to or built into the Mac.

IT administrators can query the I/O Kit registry to gather detailed system information such as hardware model, serial numbers, and platform identifiers. This is commonly used for asset management, warranty lookups, and device provisioning during MDM enrolment.

What the I/O Kit Registry Contains → Hardware model identifier (e.g. MacBookPro15,1) → Platform UUID — a unique system identifier used in MDM and licensing → Serial number — used for warranty checks and asset tracking → Platform serial number — used for hardware validation → Device class hierarchy — parent/child relationships between hardware components

The ioreg command-line utility is the standard way to access this registry. By querying a specific device class (such as IOPlatformExpertDevice), admins can retrieve structured hardware information. This is a read-only, non-destructive operation used routinely in IT workflows.

02
TCC — Transparency, Consent & Control

TCC is one of macOS's most important privacy frameworks, introduced in macOS Mojave (10.14). It controls which applications are allowed to access sensitive system resources and user data. Every time an app tries to access the camera, microphone, contacts, or location, TCC steps in to request the user's permission.

These permissions are stored in a SQLite database maintained by the OS. There are two separate TCC databases — one for the current user and one system-wide — each storing a record of which applications have been granted or denied access to specific services.

Resources Managed by TCC → Camera and Microphone → Location Services → Contacts, Calendar, and Reminders → Photos and Media Library → Screen Recording and Accessibility → Full Disk Access → Bluetooth and Network volumes
TCC Database Locations → User DB: ~/Library/Application Support/com.apple.TCC/TCC.db → System DB: /Library/Application Support/com.apple.TCC/TCC.db

For IT admins: In managed environments, TCC permissions can be pre-approved and pushed via MDM using Privacy Preference Policy Control (PPPC) profiles. This prevents permission prompts appearing when deploying corporate tools like endpoint agents, screen sharing utilities, or monitoring software.

03
Application Bundles & User-Specific Data

Every macOS application is packaged as a .app bundle — a directory that appears as a single file in Finder but contains a structured hierarchy of resources. Understanding this structure is essential for IT admins who deploy, troubleshoot, or audit applications.

Standard .app Bundle Structure MyApp.app/Contents/ → Info.plist — App config, entitlements, bundle ID, privacy usage strings → MacOS/ — The compiled executable binary → Resources/ — Icons, fonts, localisation strings → Frameworks/ — Bundled libraries and dependencies → PlugIns/ — Optional app extensions

The Info.plist is particularly important — it declares the app's bundle identifier, entitlements, minimum OS version, and the privacy usage descriptions shown in TCC prompts. Admins should inspect this file before deploying unfamiliar software.

Common User Data Locations → ~/Library/Application Support/ — App data, local databases, config → ~/Library/Preferences/ — .plist preference files → ~/Library/Caches/ — Temporary cached files → ~/Library/Logs/ — Per-app log files → ~/Library/Containers/ — Sandboxed app data (App Store apps)
04
macOS Keychain — Credential Storage

The macOS Keychain is the OS's built-in secure credential store. It holds passwords, certificates, encryption keys, and secure notes in an encrypted database, accessible only to authorised applications with the correct entitlements and user consent.

User Keychain → Stores: web passwords, app credentials, private keys, certificates → Location: ~/Library/Keychains/login.keychain-db → Unlocked automatically at login with the user's password → Apps must be explicitly granted access by the user System Keychain → Stores: system-wide certificates, Wi-Fi passwords, domain credentials → Location: /Library/Keychains/System.keychain → Requires elevated (admin/root) privileges to access → Used by system services and background daemons

For IT admins: The Keychain Access app (in /Applications/Utilities/) and the security CLI tool are the standard ways to inspect and manage keychains. Common use cases include certificate management, Wi-Fi troubleshooting, and PKI administration. Jamf Pro can push certificates directly into the System Keychain via Configuration Profiles.

05
Code Signing, Notarization & Gatekeeper

macOS uses a layered trust system to verify that software is legitimate before allowing it to run. Understanding these layers helps IT admins manage approved software, troubleshoot installation errors, and set the right MDM policies.

Code Signing → All distributed apps should be signed with an Apple Developer certificate → Confirms the developer's identity and that the binary hasn't been tampered with → Unsigned apps are blocked or warn users on modern macOS Notarization → An automated Apple service that scans apps for known malware before distribution → Required for apps distributed outside the App Store on macOS 10.15+ → Produces a ticket stapled to the app, verified by Gatekeeper on first launch → Completely automated via Xcode or the notarytool CLI Gatekeeper → Enforces signature and notarization checks at app launch → Configurable in System Settings › Privacy & Security → Enterprise admins can manage via MDM Configuration Profiles → The spctl command-line tool assesses and manages Gatekeeper policies
06
Persistence Mechanisms — Launch Agents & Login Items

macOS provides structured mechanisms for software to run automatically at login or in the background. IT admins need to understand these to manage startup behaviour, troubleshoot slow logins, and audit what is running persistently on managed devices.

Launch Agents (User-level) → Run on behalf of the logged-in user → Defined by .plist files in: ~/Library/LaunchAgents/ → Start at login, can auto-restart if they crash → Common use: sync services, update checkers, menu bar apps Launch Daemons (System-level) → Run as root, independent of any user session → Defined by .plist files in: /Library/LaunchDaemons/ → Start at boot, not at user login → Common use: MDM agents, network services, system tools Login Items → User-managed apps visible in System Settings › General › Login Items → Added by apps using the ServiceManagement framework → Less powerful than Launch Agents but more transparent to end users → Common use: Dropbox, OneDrive, Spotify, printer utilities

For IT admins: Jamf Pro and other MDM platforms can audit LaunchAgent and LaunchDaemon directories via extension attributes and scripts, helping identify unexpected persistence or unwanted software.

07
SIP, Hardened Runtime & XPC

Modern macOS is defended by several overlapping security frameworks that restrict what software can do, even with admin privileges. Understanding these is essential for IT admins deploying security tools, kernel extensions, or system-level agents.

System Integrity Protection (SIP) → Introduced in macOS El Capitan (10.11) → Protects critical system directories from modification — even by root → Protected paths: /System, /usr, /bin, /sbin, and system Apple apps → Can only be disabled via Recovery Mode (requires physical access) → Check current status with: csrutil status Hardened Runtime → An opt-in security mode for developers → Restricts loading unsigned code, JIT compilation, and sensitive API access → Required for notarization; specific capabilities re-enabled via entitlements → Developers of security/debugging tools may request exceptions via entitlements XPC (Cross-Process Communication) → macOS's inter-process communication system, built on Grand Central Dispatch → Each XPC service runs in its own sandbox — limits blast radius if one is compromised → Used by system services, app extensions, and MDM helper tools → IT admins encounter XPC when troubleshooting MDM agent communication issues
08
Browser Data & Diagnostic Logs — IT Support Reference

IT support teams regularly need to locate browser data and system diagnostic logs when troubleshooting user issues. Below is a reference for where macOS stores this data.

Browser Data Locations Google Chrome: → User profile data: ~/Library/Application Support/Google/Chrome/Default/ Mozilla Firefox: → Profile data: ~/Library/Application Support/Firefox/Profiles/ Safari: → Preferences: ~/Library/Safari/ → Local storage: ~/Library/Safari/LocalStorage/
System Diagnostic Reports → System-wide crashes: /Library/Logs/DiagnosticReports/ → Per-user crashes: ~/Library/Logs/DiagnosticReports/ → File types: .crash, .hang, .spin, .diag → View in: Console.app (Applications › Utilities › Console) Unified Logging → macOS maintains a centralised log store → Access via Console.app or the log CLI tool → Filter by subsystem, process name, or time range → Essential for diagnosing MDM sync issues, app crashes, and network failures
Summary. macOS is a deeply layered operating system. For IT professionals, understanding the I/O Kit, TCC, Keychain, code signing, Launch Agents, SIP, and XPC provides the foundation needed to effectively manage, troubleshoot, and secure macOS environments — especially in MDM-managed enterprise fleets running Jamf Pro.