macOS è dotato di un meccanismo di protezione dei file di sistema decisamente aggressivo: si chiama System Integrity Protection (SIP), ed impedisce all'utente di salvare le modifiche a com.apple.Boot.plist
ed altri file memorizzati nei percorsi "delicati", fra i quali /Library/Preferences/SystemConfiguration/
. Vediamo allora come disabilitare temporaneamente System Integrity Protection (SIP)
Trattazione aggiornata a macOS Mojave (10.14.2)
nota: questa procedura è stata testata con macOS High Sierra e Mojave ma dovrebbe funzionare con tutte le versioni.
System Integrity Protection (SIP) impedisce la modifica dei file di sistema
Disabilitare System Integrity Protection di macOS non è un'operazione da svolgersi nella quotidianità. Anzi! È una scelta che può impattare negativamente sulla sicurezza, poiché SIP è una funzionalità pensata prima di tutto per impedire la modifica non-autorizzata dei file di sistema da parte dei malware
» Leggi anche: Come ripulire dai malware un sistema operativo Mac OS X con Malwarebytes Anti-Malware
Ciò nonostante, SIP preclude anche all'utente di apportare modifiche al sistema operativo. Possiamo verificarlo, ad esempio, aprendo con i privilegi massimi un file di configurazione:
sudo nano /Library/Preferences/SystemConfiguration/com.apple.Boot.plist
Aggiungiamo uno spazio alla fine, proviamo a salvare con la combinazione da tastiera Ctrl+O
seguita da Invio
e riceveremo l'errore Error writing com.apple.Boot.plist Operation not permitted
» Leggi anche: Guida: modificare i file di configurazione di Linux Ubuntu/CentOS da terminale è facile con "nano" (alternativa a "vi")
Nell'architettura "standard" dei sistemi basati su Unix (come Linux e macOS stesso), un errore di privilegi insufficienti come questo non dovrebbe presentarsi, dato che stiamo operando come utente root. Il responsabile del divieto, appunto, è proprio SIP.
Disattivare System Integrity Protection (SIP) su macOS
Per disattivare temporaneamente System Integrity Protection su macOS dobbiamo innanzitutto entrare in modalità recovery seguendo la procedura presentata in questo articolo:
» Leggi: Guida: come entrare in modalità macOS Recovery (anche in VirtualBox)
Una volta "dentro", apriamo il Terminale cliccando la voce di menu Utility -> Terminale
ed impartiamo questo semplice comando:
csrutil disable
macOS conferma la corretta riuscita dell'operazione mostrando il testo Successfully disabled System Integrity Protection
Procediamo ora a riavviare in modalità "normale" cliccando il menu Mela
nell'angolo in alto a sinistra per poi selezionare Riavvia
Una volta tornati al desktop regolare di macOS, possiamo svolgere nuovamente la prova indicata in apertura. Scopriremo così che, a patto di agire con i privilegi di root, potremo modificare tutto quello che ci aggrada.
Verificare lo stato di SIP
In qualsiasi momento possiamo verificare lo stato attuale di SIP, anche dall'ambiente "standard" di macOS. Basta aprire il Terminale ed impartire
csrutil status
La risposta System Integrity Protection status: disabled
conferma che SIP è attualmente disabilitato
Riattivare System Integrity Protection
Nel corso delle mie prove con macOS High Sierra avevo notato che SIP si ri-attivava automaticamente in seguito ad uno spegnimento completo del sistema. Con Mojave questo non si verifica più: una volta che la protezione è stata disattivata, non sembra riattivarsi di nuovo in automatico.
[preciso che non sono per nulla sicuro della correttezza di quanto ho appena affermato: sono rilevazioni sperimentali, per le quali non ho trovato conferme nella documentazione ufficiale]
Per riattivare SIP su macOS Mojave è dunque necessario rientrare in modalità recovery ed impartire quindi:
csrutil enable
I file modificati mentre era disabilitato, comunque, conserveranno le variazioni apportate.