Apple ha introducido la Protección de integridad del sistema , también conocida como "sin raíz", con OS X 10.11, El Capitan. Entiendo que este es un paso para la protección general contra el malware, pero como desarrollador necesito acceso de escritura a algunos de los archivos que bloquea.
¿Cómo desactivo esta protección?
Respuestas:
La documentación de Apple cubre deshabilitar SIP, Acerca de la Protección de integridad del sistema en su Mac y Configurar la Protección de integridad del sistema .
Un artículo en lifehacker.com enumera estos pasos:
Puede verificar si un archivo o carpeta está restringido emitiendo este
ls
comando usando la O mayúscula (y no cero 0) para modificar el indicador de listado largo:Busque el texto restringido para indicar dónde se aplica SIP.
De manera predeterminada (= SIP habilitado), las siguientes carpetas están restringidas (consulte la página de soporte de Apple ):
... y las siguientes carpetas son gratuitas:
fuente
ls -lO /usr/local
no está marcado como restringido. También he comido/usr/local/
recursivamente. Pero sigo viendo cómo root toma posesión/usr/local/bin
y lo/usr/local/share
que afecta a homebrew. ¿Es este también el trabajo de SIP?/usr/local
no esté restringido, puede corregir cualquier permiso "debajo" de este directorio fácilmente. Homebrew realmente recomienda ejecutarsudo chown -R $(whoami) /usr/local
(mientras está conectado como usuario administrador) para solucionar problemas de permisos./usr/local
ahora tiene los permisos configurados correctamente.Es posible desactivar SIP arrancando en Recovery HD y ejecutando el siguiente comando:
También es posible habilitar las protecciones SIP y deshabilitar selectivamente aspectos del mismo, agregando uno o más indicadores al
csrutil enable
comando. Todos requieren ser arrancados desde Recovery para configurarlos:Habilite SIP y permita la instalación de extensiones de kernel sin firmar
Habilite SIP y deshabilite las protecciones del sistema de archivos
Habilite SIP y deshabilite las restricciones de depuración
Habilite SIP y deshabilite las restricciones de DTrace
Habilite SIP y deshabilite las restricciones para escribir en NVRAM
También tengo una publicación disponible con más información sobre SIP:
Protección de integridad del sistema: agregar otra capa al modelo de seguridad de Apple
fuente
csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.
Si el objetivo es realmente deshabilitar la Protección de integridad del sistema, el arranque en la partición Recovery HD como se recomienda anteriormente en las otras respuestas aquí a través de Command+ ren el arranque no es la forma más rápida de hacerlo.
Puede combinar el arranque en modo de usuario único con el arranque HD de recuperación en una combinación de teclas de inicio no documentada:
Esto lo lleva directamente al entorno mínimo necesario que se necesita para esto directamente .
fuente
Sería más seguro modificarlo de
/etc/paths
modo que/usr/local/bin
sea solo antesusr/bin
. De esa manera, puede hacer su trabajo de desarrollo/usr/local/bin
sin tener que deshabilitar SIP.Las instalaciones limpias del sistema operativo se han ordenado de
/etc/paths
esta manera desde El Capitán, pero si estuviera actualizando el sistema operativo desde Yosemite o antes, tendría que modificar el orden de la ruta manualmente.fuente
usr/bin
. Dado que SIP evita esto ahora, los programas deben instalarse enusr/local/bin
, que no está restringido por SIP. Al ponerusr/local/bin
primero, los usuarios pueden ejecutar programas sin tener que escribir la ruta absoluta al programa. ¿Esto tiene sentido? ¿Estás confundido acerca de otra cosa?/usr/bin
... pero supongo que lo que debería haber preguntado es "¿cómo responde esto a la pregunta de OP?" Originalmente estaba asumiendo que lo hizo de alguna manera, y que simplemente no estaba haciendo la conexión. Pero ahora dudo mucho que tenga alguna conexión.Si todo lo que necesita es acceder / usr / local, eche un vistazo a esta página: https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md
La idea es deshabilitar temporalmente SIP usando
csrutil disable
, agregar/usr/local
, usar chflags para establecer ese directorio en no restringidoy luego vuelva a habilitar SIP usando
csrutil enable
.Si
/usr/local
ya existe en el momento de su actualización, incluso lo anterior no es necesario. Simplemente puedes correrfuente
Read-only file system
Si no puede acceder a la Partición de recuperación para ejecutar
csrutil disable
(para deshabilitar SIP ), intente configurar los argumentos de arranque con elnvram
comando, por ejemploSin embargo, si tiene el siguiente error:
entonces no funcionará. Aún necesita iniciarlo en modo de recuperación / seguridad.
Ver:
fuente
nvram: Error setting variable - 'boot-args': (iokit/common) not permitted
No tengo suficiente reputación para agregar esto como un comentario al enlace github Homebrew 404 anterior. La máquina Wayback todavía lo tiene:
http://web.archive.org/web/20160117204214/https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md
fuente