Non è possibile creare un collegamento simbolico all'interno di / usr / bin anche come sudo


101

Quando provo a collegare un file binario nella mia cartella / usr / bin, ottengo un errore Operazione non consentita:

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

Anche come sudo, ottengo questo errore.


Qual è il tuo 1.OS 2.Distribution 3. File system per favore?
Rany Albeg Wein

Mac OSX El Capitan 10.11.4
egidra

Risposte:


156

Perché non riesco a collegarmi simbolicamente /usr/bin?

La nuova funzione di protezione dell'integrità del sistema di El Capitan impedisce le modifiche a diverse parti principali di OS X, inclusa la maggior parte /usr/, anche da root.

Come posso ancora aggiungere file eseguibili al mio percorso?

Le personalizzazioni locali, come quello che stai facendo, appartengono /usr/localinvece. Il percorso /usr/local/binnon esiste per impostazione predefinita, ma puoi crearlo e inserirvi binari personalizzati (e collegamenti simbolici):

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

Nota che mentre /usr/local/binnon esiste per impostazione predefinita, è nel PERCORSO predefinito, quindi non appena lo crei, verranno cercati i comandi.

Disattivazione di SIP

È anche possibile disabilitare la protezione dell'integrità del sistema, ma in genere è meglio lasciarla attiva ed eseguire la personalizzazione in posizioni più appropriate. Una domanda su Apple Stack Exchange ha maggiori dettagli su questo: qual è la funzione senza root in El-Captain, davvero? .


16

Ho creato il collegamento simbolico per Sublime Text 3 in Mac OS High Sierra come

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

Stavo anche cercando di creare il collegamento simbolico in "/ usr / bin" e stavo ottenendo Operazione non consentita.

Quindi ho creato il collegamento simbolico in "/ usr / local / bin" e non ci sono stati errori. Il collegamento simbolico funziona bene. Assicurati solo che "/ usr / local / bin" sia nel percorso.

Quindi, sembra che l'accesso a "/ usr / bin" sia limitato.


7

Riavviare il sistema -> pressione prolungata Cmd + R . selezionare un terminale dal menu delle utilità digitare il seguente comando csrutil disabilitare la chiusura del terminale e riavviare il sistema.


9
Ciò disabilita la protezione dell'integrità del sistema. Probabilmente è meglio trovare invece un'altra soluzione più sicura.
MattSidor

9
Personalmente, penso che questa sia la soluzione giusta. Non vedo alcun motivo per cui il sistema operativo mi blocchi dal collegamento simbolico di cose in questa directory o in qualsiasi directory come 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 

se non sei in grado di creare un collegamento simbolico a causa di un problema di autorizzazione, sarà a causa di "csrutil". Dopo aver disabilitato csrutil, puoi creare un collegamento simbolico. Segui questi passaggi per disabilitare CSRUtill:

Riavvia il tuo Mac. Prima che OS X si avvii, tieni premuto Comando-R e tienilo premuto finché non vedi un'icona Apple e una barra di avanzamento. Pubblicazione. Questo ti avvia in Recovery. Dal menu Utilità (nella barra in alto), seleziona Terminale. Al prompt digitare esattamente quanto segue e quindi premere Invio: csrutil disable Terminal dovrebbe visualizzare un messaggio che indica che SIP è stato disabilitato. Dal menu , seleziona Riavvia.


-3

Prova a eseguire sudo suprima, quindi a eseguire il comando con livello di root.


2
Questo non risolverà il problema degli OP. Il problema ha a che fare con la protezione dell'integrità del sistema sui moderni sistemi MacOS.
cgseller
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.