Sudo no puede crear archivos en / usr / bin en El Capitan

14

Actualicé a El Capitan ayer y todo estuvo bien hasta hace poco cuando noté que no puedo escribir nada (con sudo ofc) en / usr / bin cuando intenté instalar phpbrew.

¿Qué podría estar causando esto y cómo solucionarlo?

ingrese la descripción de la imagen aquí

sushil
fuente
OS X El Capitan no tiene raíz. La característica se puede deshabilitar desde la partición de recuperación.
fd0

Respuestas:

17

Desde OSX 10.11, Apple reforzó el sistema de seguridad. Llamada Protección de integridad del sistema , Apple bloquea:

/System
/sbin
/usr (with the exception of /usr/local subdirectory)

Para deshabilitar esta característica de seguridad, debe reiniciar su computadora y mantenerla presionada CMD+Ral inicio para iniciar el modo de recuperación de OS X.

Luego OS X Utilities > Terminal

Escribe el comando csrutil disable; reboot

Su computadora se reiniciará. Verá un mensaje de confirmación sobre la desactivación.

Para verificar el estado del tipo CRS csrutil status

Ragnar
fuente
1
Lo desactivé y todavía no me permite hacer nada:/Users/Rob$ csrutil status System Integrity Protection status: disabled. /Users/Rob$ touch /usr/bin/yes touch: /usr/bin/yes: Permission denied
Roberto
Tratar con sudo.
Ragnar
En la mayoría de los casos, es mejor instalar personalizaciones locales en / usr / local (por ejemplo, / usr / local / bin en lugar de / bin o / usr / bin). Para eso es, y este ha sido el caso durante mucho tiempo. Si es posible, recomendaría seguir esta mejor práctica en lugar de deshabilitar SIP. Si realmente necesita hacer cambios en una ubicación restringida, es mejor deshabilitar SIP, hacer el cambio y luego volver a habilitar SIP de inmediato con csrutil enable(en modo Recuperación).
Gordon Davisson
3

Como mencionó Ragnar , /usrel sistema bloquea el directorio, con la excepción de /usr/local. Luego, si su escenario lo permite, recomendaría agregar el enlace simbólico a /usr/local/bin. Si no tiene un requisito estricto sobre el uso /usr/bin, esa es una forma de evitar el error "Operación no permitida".

Gustavo Straube
fuente
2

Se puede verificar si un archivo o directorio en particular está restringido por la Protección de integridad del sistema (SIP) / Rootless de OSX al enumerar las banderas de archivos usando la -Oopción ls (por ejemplo, para ver qué directorios en / están restringidos):

ls -Ol /

Los directorios o archivos controlados por SIP se muestran como 'restringidos'.

Hay detalles completos en las respuestas a esta pregunta sobre SIP / rootless.

Pierz
fuente