Change SIP on a macOS VM
Disable or enable System Integrity Protection from paired macOS Recovery and verify the result.
Use lume sip to change System Integrity Protection (SIP) on a stopped macOS
VM. Lume runs csrutil in the VM's paired Recovery environment and verifies
the result after a normal boot.
For the policy model behind this workflow, read How SIP works in Lume VMs.
Before you start#
The VM must:
- run macOS;
- be stopped;
- have a working administrator account; and
- have Remote Login enabled.
VMs created with Lume's unattended setup meet these requirements. Their
initial username and password are both lume.
Install the optional Recovery VNC driver:
python3 -m pip install --user vncdotoolRecovery input currently supports administrator passwords made from lowercase
ASCII letters, digits, and hyphens. The Recovery password prompt must name the
account passed with --admin-user.
Disable SIP#
With the default lume account, run:
lume sip off macos-tahoeConfirm the change when prompted. Lume validates the account, changes the
policy in Recovery, boots normally to run csrutil status, and leaves the VM
stopped. A successful run ends with:
System Integrity Protection status: disabled.
SIP is disabled.For another administrator account, enter its password without exposing it in the process arguments:
lume sip off macos-tahoe \
--admin-user admin \
--admin-password-stdinFor non-interactive use, provide confirmation with --yes so the password is
the only line read from standard input:
printf '%s\n' "$LUME_ADMIN_PASSWORD" | \
lume sip off macos-tahoe \
--admin-user admin \
--admin-password-stdin \
--yesEnable SIP#
Run the same command with on:
lume sip on macos-tahoe \
--admin-user admin \
--admin-password-stdinA successful run ends with the canonical enabled status and leaves the VM stopped.
Prepare a reusable SIP-disabled VM#
Change SIP on a stopped seed, then clone it:
lume sip off macos-tahoe-seed --yes
lume clone macos-tahoe-seed macos-tahoe-worker-001Lume copies disk.img and nvram.bin together. Do not replace either file
independently because the signed policy, personalized boot files, and
anti-replay state belong to one paired VM state.
Boot a worker and inspect its policy when you need an extra check:
lume run --no-display macos-tahoe-worker-001
lume ssh macos-tahoe-worker-001 'csrutil status'
lume stop macos-tahoe-worker-001