Impossible de créer un lien symbolique à l'intérieur de / usr / bin même en tant que sudo

101

Lorsque j'essaye de créer un lien symbolique sur un binaire dans mon dossier / usr / bin, j'obtiens une erreur Operation not allowed:

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

Même en tant que sudo, j'obtiens cette erreur.

Egidra
la source
Quel est votre 1.OS 2.Distribution 3. Système de fichiers s'il vous plaît?
Rany Albeg Wein
Mac OSX El Capitan 10.11.4
egidra
1
Avez-vous essayé ce qui suit: stackoverflow.com/questions/32659348/… ?
Rany Albeg Wein

Réponses:

156

Pourquoi ne puis-je pas créer de lien symbolique /usr/bin?

La nouvelle fonctionnalité de protection de l'intégrité du système d' El Capitan empêche les modifications de plusieurs parties centrales d'OS X, y compris la plupart /usr/, même par root.

Comment puis-je encore ajouter des fichiers exécutables à mon chemin?

Les personnalisations locales, telles que ce que vous faites, appartiennent à la /usr/localplace. Le chemin /usr/local/binn'existe pas par défaut, mais vous pouvez le créer et y placer des binaires personnalisés (et des liens symboliques):

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

Notez que bien qu'il /usr/local/binn'existe pas par défaut, il est dans le PATH par défaut, donc dès que vous le créez, il sera recherché des commandes.

Désactiver SIP

Il est également possible de désactiver la protection de l'intégrité du système, mais il est généralement préférable de la laisser activée et de la personnaliser dans des endroits plus appropriés. Une question Apple Stack Exchange a plus de détails à ce sujet: Qu'est- ce que la fonctionnalité Rootless dans El-Captain, vraiment? .

Gordon Davisson
la source
16

J'ai créé le lien symbolique pour Sublime Text 3 dans Mac OS High Sierra comme

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

J'essayais également de créer le lien symbolique dans "/ usr / bin" et j'obtenais l'opération non autorisée.

Ensuite, j'ai créé le lien symbolique dans "/ usr / local / bin" et il n'y avait pas d'erreur. Le lien symbolique fonctionne bien. Assurez-vous simplement que "/ usr / local / bin" est dans le chemin.

Donc, il semble que l'accès à "/ usr / bin" soit restreint.

Vineet Sharma
la source
7

Redémarrez le système -> appuyez longuement sur cmd + R . sélectionnez un terminal dans le menu des utilitaires, tapez la commande suivante csrutil disable close terminal et redémarrez le système.

James
la source
9
Cela désactive la protection de l'intégrité du système. Il est probablement préférable de trouver une autre solution plus sûre à la place.
MattSidor
9
Personnellement, je pense que c'est la bonne solution. Je ne vois aucune raison pour que le système d'exploitation m'empêche de créer des liens symboliques dans ce répertoire ou dans tout répertoire comme 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 vous ne parvenez pas à créer un lien symbolique en raison d'un problème d'autorisation, cela sera dû à "csrutil". Après avoir désactivé csrutil, vous pouvez créer un lien symbollique. Suivez ces étapes pour désactiver CSRUtill:

Redémarrez votre Mac. Avant de démarrer OS X, maintenez la touche Commande-R enfoncée et maintenez-la enfoncée jusqu'à ce que vous voyiez une icône Apple et une barre de progression. Libération. Cela vous lance dans la récupération. Dans le menu Utilitaires (sur la barre supérieure), sélectionnez Terminal. À l'invite, tapez exactement ce qui suit, puis appuyez sur Entrée: csrutil disable Le terminal doit afficher un message indiquant que SIP a été désactivé. Dans le menu , sélectionnez Redémarrer.

Srima
la source
-3

Essayez d' sudo suabord d' exécuter, puis d'exécuter la commande avec le niveau racine.

Dre
la source
2
Cela ne résoudra pas le problème des OP. Le problème est lié à la protection de l'intégrité du système sur les systèmes MacOS modernes.
cgseller