Come disabilito la System Integrity Protection (SIP) AKA "rootless" su macOs [OS X]

146

Apple ha introdotto la Protezione dell'integrità del sistema , anche conosciuta come "senza radici", con OS X 10.11, El Capitan . Capisco che questo è un passo per la protezione generale contro il malware, ma come sviluppatore ho bisogno di accedere in scrittura ad alcuni dei file che si blocca.

Come disabilitare questa protezione?

    
posta bdnchr 01.10.2015 - 21:09
fonte

6 risposte

138

La documentazione di Apple copre la disattivazione di SIP, Informazioni sulla protezione dell'integrità del sistema sul tuo Mac e Configurazione della protezione dell'integrità del sistema .

Un articolo su lifehacker.com elenca questi passaggi:

  1. Reboot your Mac into Recovery Mode by restarting your computer and holding down Command+R until the Apple logo appears on your screen.
  2. Click Utilities > Terminal.
  3. In the Terminal window, type in csrutil disable and press Enter.
  4. Restart your Mac.

Puoi verificare se un file o una cartella sono limitati emettendo questo comando ls utilizzando la O maiuscola (e non zero 0) per modificare il flag dell'elenco lungo:

ls -lO /System /usr 

Cerca il testo limitato per indicare dove viene applicato SIP.

Per impostazione predefinita (= SIP attivato), le seguenti cartelle sono limitate (vedi pagina di supporto Apple ):

/System
/usr
/bin
/sbin
Apps that are pre-installed with OS X

... e le seguenti cartelle sono gratuite:

/Applications
/Library
/usr/local
    
risposta data 01.10.2015 - 21:16
fonte
96

È possibile disattivare SIP avviando su Ripristino HD ed eseguendo il seguente comando:

csrutil disable

ÈanchepossibileabilitareleprotezioniSIPedisabilitarneselettivamentealcuniaspetti,aggiungendounoopiùflagalcomandocsrutilenable.Tuttirichiedonol'avviodaRecoveryperimpostarli:

AbilitaSIPeconsentil'installazionediestensionikernelnonfirmate

csrutilenable--withoutkext

AbilitaSIPedisabilitaleprotezionidelfilesystem

csrutilenable--withoutfs

AbilitaSIPedisabilitalerestrizionididebug

csrutilenable--withoutdebug

AbilitaSIPedisabilitalerestrizioniDTrace

csrutilenable--withoutdtrace

AbilitaSIPedisabilitalerestrizionisullascritturasuNVRAM

csrutilenable--withoutnvram

HoancheunpostdisponibileconmaggioriinformazionisuSIP:

System Integrity Protection - Aggiunta di un altro livello al modello di sicurezza di Apple

    
risposta data 06.10.2015 - 20:26
fonte
12

Se l'obiettivo è davvero disabilitare la protezione dell'integrità del sistema, l'avvio nella partizione di Recovery HD come precedentemente raccomandato nelle altre risposte qui tramite Comando + r all'avvio è non il modo più veloce per farlo.

È possibile combinare l'avvio in modalità utente singolo con l'avvio di ripristino HD in una combinazione di chiavi di avvio non documentata:

  • Il link copre il normale recupero
  • tieni premuto Comando + r + s per avviare in modalità di recupero utente singolo.

Questo ti porta proprio nell'ambiente minimo necessario per questo direttamente .

    
risposta data 14.09.2017 - 01:23
fonte
4

Se tutto ciò di cui hai bisogno è accedere a / usr / local, dai un'occhiata a questa pagina: link

L'idea è di temporaneamente disabilitare SIP utilizzando csrutil disable , aggiungi /usr/local , usa chflags per impostare quella directory su non limitato

 sudo mkdir /usr/local && sudo chflags norestricted /usr/local && sudo chown -R $(whoami):admin /usr/local

e quindi riattivare SIP utilizzando csrutil enable .

Se /usr/local esiste già al momento dell'aggiornamento, allora neanche quello sopra non è necessario. Puoi semplicemente eseguire

sudo chown -R $(whoami):admin /usr/local
    
risposta data 31.10.2015 - 13:02
fonte
4

Sarebbe più sicuro modificare /etc/paths in modo che /usr/local/bin sia solo prima di usr/bin . In questo modo puoi svolgere il tuo lavoro di sviluppo entro /usr/local/bin senza dover disabilitare SIP.

Le installazioni pulite del sistema operativo hanno ordinato /etc/paths in questo modo da El Capitan, ma se stavi aggiornando il sistema operativo da Yosemite o prima, dovresti modificare manualmente l'ordine del percorso.

    
risposta data 15.03.2017 - 06:16
fonte
0

Se non riesci a entrare in Partizione di ripristino per eseguire csrutil disable (per disabilitare SIP ), prova a impostare gli argomenti di avvio con il comando nvram , ad esempio

sudo nvram boot-args="rootless=0"

Tuttavia, se hai il seguente errore:

nvram: Error setting variable - 'boot-args': (iokit/common) not permitted

allora non funzionerà. Hai ancora bisogno di riavviarlo in modalità recovery / safe.

See:

risposta data 05.08.2016 - 17:34
fonte

Leggi altre domande sui tag