No se puede crear un enlace simbólico dentro de / usr / bin incluso como sudo

101

Cuando trato de vincular simbólicamente un binario en mi carpeta / usr / bin, aparece un error de Operación no permitida:

 sudo ln -s /usr/bin/python2.7 /usr/bin/python2
ln: /usr/bin/python2: Operation not permitted

Incluso como sudo, obtengo este error.

egidra
fuente
¿Cuál es su 1.OS 2. Distribución 3. Sistema de archivos, por favor?
Rany Albeg Wein
Mac OSX El Capitan 10.11.4
egidra
1
¿Ha probado lo siguiente: stackoverflow.com/questions/32659348/… ?
Rany Albeg Wein

Respuestas:

156

¿Por qué no puedo crear un enlace simbólico /usr/bin?

La nueva función de Protección de Integridad del Sistema de El Capitan evita cambios en varias partes centrales de OS X, incluida la mayoría /usr/, incluso por raíz.

¿Cómo puedo agregar archivos ejecutables a mi ruta?

Las personalizaciones locales, como lo que está haciendo, pertenecen en su /usr/locallugar. La ruta /usr/local/binno existe de forma predeterminada, pero puede crearla y poner binarios personalizados (y enlaces simbólicos) en ella:

sudo mkdir -p /usr/local/bin
sudo ln -s /usr/bin/python2.7 /usr/local/bin/python2

Tenga en cuenta que si bien /usr/local/binno existe de forma predeterminada, está en la RUTA predeterminada, por lo que tan pronto como lo cree, se buscarán comandos.

Deshabilitar SIP

También es posible deshabilitar la Protección de integridad del sistema, pero generalmente es mejor dejarla activada y personalizar en ubicaciones más apropiadas. Una pregunta de Apple Stack Exchange tiene más detalles sobre esto: ¿Qué es realmente la función Rootless en El-Captain? .

Gordon Davisson
fuente
16

Creé el enlace simbólico para Sublime Text 3 en Mac OS High Sierra como

sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/

También estaba tratando de crear el enlace simbólico en "/ usr / bin" y obtenía Operación no permitida.

Luego creé el enlace simbólico en "/ usr / local / bin" y no hubo error. El enlace simbólico funciona bien. Solo asegúrese de que "/ usr / local / bin" esté en la ruta.

Entonces, parece que el acceso a "/ usr / bin" está restringido.

Vineet Sharma
fuente
7

Reiniciar el sistema -> pulsación larga Cmd + R . seleccione un terminal en el menú de utilidades, escriba el siguiente comando csrutil: deshabilite, cierre el terminal y reinicie el sistema.

James
fuente
9
Esto desactiva la protección de integridad del sistema. Probablemente sea mejor encontrar otra solución más segura en su lugar.
MattSidor
9
Personalmente, creo que esta es la solución adecuada. No veo ninguna razón para que el sistema operativo me impida vincular cosas en este directorio o en cualquier directorio como sudo.
rjhilgefort
0
  1. Create a symbolic link to psql in usr/bin (for mac only)
         command: sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/psql /usr/bin/psql 

Si no puede crear un enlace simbólico debido a un problema de permiso, será debido a "csrutil". Después de deshabilitar csrutil, puede crear un enlace simbólico. Siga estos pasos para deshabilitar CSRUtill:

Reinicia tu Mac. Antes de que OS X se inicie, mantenga presionada la tecla Comando-R y manténgala presionada hasta que vea un ícono de Apple y una barra de progreso. Lanzamiento. Esto te inicia en la recuperación. En el menú Utilidades (en la barra superior), seleccione Terminal. Cuando se le solicite, escriba exactamente lo siguiente y luego presione Retorno: csrutil disable La terminal debería mostrar un mensaje de que SIP fue deshabilitado. En el menú , seleccione Reiniciar.

Srima
fuente
-3

Intente ejecutar sudo suprimero y luego ejecute el comando w / root level.

Dre
fuente
2
Esto no resolverá el problema de los OP. El problema tiene que ver con la protección de la integridad del sistema en los sistemas MacOS modernos.
cgseller