¿Cómo recrear / usr / local con el modo SIP / rootless en El Capitán?

6

Con el modo sin root habilitado (a.k.a Protección de integridad del sistema) resulta que puedes eliminar /usr/local pero no puedes recrearlo:

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

¿Cómo (re) crear /usr/local o cualquiera de esas carpetas?

    
pregunta Lloeki 09.04.2016 - 07:28

2 respuestas

10

/usr/local se ha vuelto a crear y se puede escribir en El Capitan desde 2015-10-21 cuando Apple lanzó /System/Library/Sandbox/Compatibility.bundle versión 12 en la actualización de software 031-40358 parcheando 10.11 y 10.11.1, e instaló como parte del Actualización 10.11.2, actualización combinada 10.11.2 y 10.11.2 instalaciones limpias. No necesita hacer nada especial a menos que no haya actualizado a la última versión de puntos de El Capitán.

Un sistema parchado tendrá un paquete de compatibilidad mayor o igual a 12 y se mostrará

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 no parcheado tendrá un paquete de compatibilidad inferior a 12.0 y no tendrá la entrada /usr/local en /System/Library/Sandbox/Compatibility.bundle/Contents/Resources/paths .

    
respondido por el ilovezfs 09.04.2016 - 14:03
5

La forma más sencilla y segura es:

  • reiniciar en la recuperación ( CMD + R )
  • iniciar Utilidad de disco
  • en el menú, seleccione Macintosh HD y Desbloquear si está encriptado de otra manera Mount
  • una vez que se haya montado Macintosh HD , cierre la Utilidad de Discos
  • iniciar un Terminal desde el menú Utilidad de disco

Ahora ejecuta los siguientes comandos:

  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

O, como un comando simple:

  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

Finalmente, salga de Terminal y reinicie en OS X.

Referencias:

respondido por el Lloeki 09.04.2016 - 07:28

Lea otras preguntas en las etiquetas