Come ricreare / usr / local con SIP / rootless mode su El Capitan?

6

Con la modalità rootless abilitata (a.k.a System Integrity Protection) risulta che puoi rimuovere /usr/local ma non puoi ricrearlo:

$ sudo rm -rf /usr/local
$ sudo mkdir /usr/local
mkdir: /usr/local: Operation not permitted

Come (ri) creare /usr/local o una di queste cartelle?

    
posta Lloeki 09.04.2016 - 07:28
fonte

2 risposte

10

/usr/local è stato sia ri-creabile sia scrivibile su El Capitan dal 2015-10-21 quando Apple ha rilasciato /System/Library/Sandbox/Compatibility.bundle versione 12 nell'aggiornamento software 031-40358 con patch 10.11 e 10.11.1 e installato come parte del Aggiornamento 10.11.2, aggiornamento combinato 10.11.2 e installazioni pulite 10.11.2. Non devi fare nulla di speciale a meno che tu non sia aggiornato all'ultima versione di El Capitan.

Un sistema con patch avrà un bundle di compatibilità maggiore o uguale a 12 e mostra

iMac-TMP:~ joe$ grep /usr/local /System/Library/Sandbox/rootless.conf 
*               /usr/local
iMac-TMP:~ joe$ grep /usr/local /System/Library/Sandbox/Compatibility.bundle/Contents/Resources/paths
/usr/local
iMac-TMP:~ joe$ defaults read /System/Library/Sandbox/Compatibility.bundle/Contents/Info.plist CFBundleVersion
12.0
iMac-TMP:~ joe$

Un sistema senza patch avrà un bundle di compatibilità inferiore a 12.0 e non ha la voce /usr/local in /System/Library/Sandbox/Compatibility.bundle/Contents/Resources/paths .

    
risposta data 09.04.2016 - 14:03
fonte
5

Il modo più semplice e sicuro è:

  • riavvia il ripristino ( CMD + R )
  • avvia Utility Disco
  • dal menu, seleziona Macintosh HD e Unlock se criptato altrimenti Monta
  • una volta che Macintosh HD è montato, chiudi Utility Disco
  • avvia un Terminale dal menu Utility Disco

Ora esegui i seguenti comandi:

  mkdir "/Volumes/Macintosh HD/usr/local"
  chflags norestricted "/Volumes/Macintosh HD/usr/local"
  ls -lOd "/Volumes/Macintosh HD/usr/local"
  drwxr-xr-x  2 root  wheel  - 68 17 Mar 09:24 /Volumes/Macintosh HD/usr/local
  exit

Oppure, come un semplice comando:

  mkdir "/Volumes/Macintosh HD/usr/local"; chflags norestricted "/Volumes/Macintosh HD/usr/local"; ls -lOd "/Volumes/Macintosh HD/usr/local"; drwxr-xr-x  2 root  wheel  - 68 17 Mar 09:24 /Volumes/Macintosh HD/usr/local; exit

Infine, esci da Terminal e riavvia in OS X.

References:

risposta data 09.04.2016 - 07:28
fonte

Leggi altre domande sui tag