👑 macOS Enterprise Support

macOS Enterprise Support

Master macOS administration from installation through enterprise deployment, encryption, and troubleshooting.

Learning Objectives

Module 1: macOS Installation & Recovery

~3 hours

Lesson 1.1: Installing macOS

Creating bootable installers, clean installs, and migration strategies.

  • macOS recovery partitions vs internet recovery
  • creating bootable USB installer with createinstallmedia
  • Clean install workflow vs. Migration Assistant

Lesson 1.2: Recovery Mode & Diagnostics

Accessing and using macOS Recovery, Disk Utility, and terminal in RE mode.

  • Cmd+R, Cmd+Option+R, holding power button — which key combo?
  • diskutil and fsck_hfs in recovery terminal
  • Reinstalling macOS without data loss
$ sudo /Applications/Install\ macOS\ Sonoma.app/Contents/Resources/createinstallmedia \ --volume /Volumes/MyUSB --nointeraction $ diskutil list # list volumes in recovery $ diskutil repairVolume /dev/disk0s2

Hands-On Lab: Recovery Boot & Repair

  1. Create a bootable macOS Monterey installer on a USB drive
  2. Boot a VM into Recovery Mode (Cmd+R) and explore the menu
  3. Use Disk Utility to verify and repair a volume
  4. Open recovery terminal and run diskutil info on your main volume

Real-World Scenario

A MacBook can't boot past the spinning globe. Internet recovery loads but the internal drive doesn't appear in Disk Utility. Diagnose whether the drive is dead or just corrupted and outline your next steps.

Module 2: User Preferences & System Settings

~2.5 hours

Lesson 2.1: System Settings Deep Dive

Navigating the modern macOS System Settings (formerly Preferences) interface.

  • General, Desktop & Dock, Screen Saver configurations
  • Network settings: Wi-Fi profiles, DNS, proxy configuration
  • Energy Saver and Sleep settings for fleet management

Lesson 2.2: User Account Management

Local accounts, admin vs standard users, parent controls, and mobile accounts.

  • Creating accounts via sysadminctl and GUI
  • Password policies and screen lock settings
  • Migrating accounts between Macs
$ sysadminctl -addUser jdoe -password 'TempPass!' -fullName "John Doe" $ sysadminctl -deleteUser jdoe -deleteHomeDirectory $ dscl . -list /users # list all local users $ ditto /SourceUser/Home /TargetUser/Home # migrate home folder

Hands-On Lab: Fleet Configuration

  1. Create 3 test users with varying privilege levels
  2. Configure a custom wallpaper and login screen message via profile
  3. Set energy settings to prevent sleep during work hours
  4. Use System Information (about this Mac > More Info) to audit hardware

Module 3: FileVault Encryption

~2 hours

Lesson 3.1: Enabling & Managing FileVault

XTS-AES-128 full-disk encryption management across macOS fleets.

  • Turning on FileVault and recovery key storage options
  • Recovery Key Distributor in MDM environments
  • FileVault and external/preboot drives

Lesson 3.2: Recovery & Emergency Access

What happens when the password is lost? Recovery key workflows.

  • Locating the 56-character recovery key
  • Resetting FileVault password via single-user mode
  • Impact on data privacy and legal compliance
$ fdesetup status # check encryption status $ fdesetup enable -uservalue -admemberships "IT Staff" $ fdesetup changerecovery -personal -newrecoverykeypair # rotate keys $ fdesetup disable # decrypt (slow process)

Hands-On Lab: Encrypt & Recover

  1. Enable FileVault on a test Mac and record the recovery key
  2. Simulate a lost password scenario using the recovery key
  3. Disable FileVault and measure how long decryption takes
  4. Practice exporting recovery keys via command line

Real-World Scenario

An employee's MacBook was stolen. You suspect they had FileVault disabled but suspect the IT department pushed a recovery key you didn't capture. Outline the incident response steps including law enforcement documentation requirements.

Module 4: Time Machine Backups

~2 hours

Lesson 4.1: Backup Strategy Fundamentals

SMB shares, APFS snapshots, and local automatic backups as layered protection.

  • Time Machine over AFP/SMB/NAS
  • Automatic local snapshots when network backup unavailable
  • Exclusion lists to protect sensitive and large data

Lesson 4.2: Restoring Data & Systems

Migration Assistant, individual file recovery, and complete disk restores.

  • Timemachine.app interface deep-dive
  • tmutil commands for scripted operations
  • Cloning a drive directly from Time Machine sparse bundle
$ tmutil listbackups # show available backups $ tmutil latestBackup # find newest snapshot $ tmutil compare /Backups.backupdb/2024-01-01 ~/Documents # diff $ tmutil delete 2024-01-01 # remove old backup

Hands-On Lab: Backup & Restore Workflow

  1. Connect an external drive and enable Time Machine backups
  2. Configure exclusions for ~/Library/Caches and ~/Downloads
  3. Simulate a deleted file and restore it from the Timeline
  4. Use tmutil to compare two backup points and report differences

Module 5: MDM Basics

~3 hours

Lesson 5.1: Mobile Device Management Concepts

MDM protocol, push certificates, enrolled device lifecycle, and compliance reporting.

  • VPP (Volume Purchase Program) and DEP/ABM enrollment
  • Supervised vs unsupervised modes
  • Configuration profiles: payload types and restrictions

Lesson 5.2: Popular MDM Solutions

Jamf Pro, Mosyle, Kandji, and Microsoft Intune for macOS deployment.

  • Jamf Pro: policy creation, smart groups, scripts
  • Microsoft Intune: iOS/macOS app config and compliance policies
  • Open-source alternative: SimpleMDM/Munki
$ profiles -C # see installed profiles $ profiles show # detailed profile info $ profiles remove -identifier com.company.policy $ /usr/libexec/PlistBuddy -c "Add : AllowedApps dict" /Library/Preferences/com.apple.MCCS.json # whitelist apps

Hands-On Lab: Profile Deployment

  1. Generate a configuration profile that enforces a FileVault recovery key
  2. Create a restriction profile blocking App Store purchases
  3. Install the profile manually (double-click .mobileconfig) and verify
  4. Remove the profile and confirm the changes are reverted

Real-World Scenario

Your company uses Jamf Pro to deploy 200 MacBooks. A new hire complains their laptop has no access to Zoom even though it's approved. Debug the application whitelist configuration and push a corrected profile.

Module 6: App Management

~2 hours

Lesson 6.1: App Distribution Methods

Mac App Store, .pkg installers, .dmg mounting, and JAMF/binary deployment patterns.

  • Installing from .dmg: mount, copy, eject workflow
  • .pkg installers and package receipts
  • Notarization and Gatekeeper exceptions (spctl)

Lesson 6.2: Quarantine & Security

xattr quarantine attribute, Gatekeeper, and bypassing for trusted software.

  • xattr -l to inspect quarantine flags
  • xattr -d com.apple.quarantine app to clear quarantine
  • spctl --assess --type execute for manual assessments
$ xattr -l /Applications/MyApp.app # check quarantine attrs $ xattr -rd com.apple.quarantine /Applications/MyApp.app $ spctl --assess --type execute /Applications/MyApp.app $ pkgutil --files com.company.installer # list installed files

Hands-On Lab: App Lifecycle

  1. Download a .dmg app and perform manual install/cleanup
  2. Check if the app has quarantine attributes; remove them
  3. Use pkgutil to inspect a .pkg installation receipt
  4. Bulk-remove unused apps older than 6 months from /Applications

Module 7: macOS Terminal Basics

~2.5 hours

Lesson 7.1: System Profiling Commands

system_profiler, systeminfo, top, ps — understanding what's running on macOS.

  • system_profiler SPHardwareDataType, SPSoftwareDataType
  • top and htop equivalents; lsof for open files
  • netstat and lsof -i for network diagnostics

Lesson 7.2: macOS-Specific Diagnostics

Console.app log analysis, ASL (Apple System Logger), unified logging system.

  • log stream and log show for real-time and historical logs
  • /var/log/ legacy log locations still relevant
  • Console.app filters for crash reports and assertions
$ system_profiler SPDisplaysDataType SPMemoryDataType $ log stream --predicate 'eventMessage contains "error"' --last 1h $ ps aux | grep chrome | wc -l # count Chrome processes $ lsof -i :443 # processes on port 443

Hands-On Lab: macOS Diagnostic Workflow

  1. Extract complete hardware spec with system_profiler and export to text
  2. Stream console logs filtered for kernel panic messages
  3. Identify what process is using the most CPU with top -o cpu
  4. Find all listening ports and which apps own them with lsof

Module 8: Common Issues & Fixes

~3 hours

Lesson 8.1: Permission Problems

sudo failures, SIP-restricted operations, and safe permission resets.

  • sip status and when to temporarily disable it
  • resetting Launch Services database (lsregister)
  • Fixing broken Finder icon caches

Lesson 8.2: Networking Troubleshooting

Wi-Fi drops, VPN config failures, DNS resolution problems on macOS.

  • flushdns and dns_sd cleanup
  • interface setup and reset via networksetup
  • Testing VPN tunnel endpoints and MTU issues

Quick Reference: Common Fixes

SymptomCommand / Fix
App won't launch (damaged)xattr -rd com.apple.quarantine /Applications/App.app
DNS not resolvingsudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
WiFi won't connectnetworksetup -setairportpower en0 off && on
Finder frozenkillall Finder
Login window freezesudo pkill -KILL -u 0 (use caution!)
Slow startup appsSystem Settings > General > Login Items
Corrupt launchpadrm ~/Library/Application\ Support/Dock/*.db && killall Dock

Hands-On Lab: Problem Simulation

  1. Corrupt the Dock database by deleting the .db file and observe reset behavior
  2. Flush the DNS cache and verify with dig commands
  3. Simulate a stuck application and use Activity Monitor + Terminal to terminate it
  4. Reset NVRAM/PRAM on a VM and document what settings change

Real-World Scenario

A designer reports their After Effects project crashes every time they save. Their disk is 97% full, and Log Insight shows repeated OOM kills. Prioritize your actions and execute the most effective fix first.

Module 9: Automation Scripts

~2.5 hours

Lesson 9.1: Bash for macOS Sysadmins

Differences between bash and Linux bash, path conventions, Apple extensions.

  • /usr/bin vs /bin vs /usr/local/bin paths on macOS
  • defaults write/read for preference management
  • osascript for AppleScript integration from bash

Lesson 9.2: Python on macOS

Python 3 availability, pipenv, Homebrew Python, and script deployment.

  • Using brew install python3 instead of system Python
  • Deploying Python scripts via MDM profiles or jamf helper
  • Automating software updates with osascript
#!/bin/bash # auto-update-check.sh updateCount=$(softwareupdate --list 2>/dev/null | grep -c "^ *") if [ "$updateCount" -gt 0 ]; then echo "Updates available: $updateCount" | osascript -e 'display dialog "'$updateCount' updates available" with title "Mac Update Check"' fi

Hands-On Lab: Build Automation Tools

  1. Write a script that checks macOS version and prompts for reboot if major update available
  2. Script that disables Spotlight indexing for a specific volume
  3. Python script inventorying all installed apps and exporting to CSV
  4. Schedule scripts with launchd plist (the macOS equivalent of cron)
Progress: 0%