187 votes

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

Lorsque j'essaie de faire un lien symbolique avec un binaire dans mon dossier /usr/bin, je reçois une erreur "Operation not permitted" :

 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.

0 votes

Quel est votre 1.OS 2.Distribution 3. Système de fichiers ?

0 votes

Mac OSX El Capitan 10.11.4

1 votes

Avez-vous essayé ce qui suit : stackoverflow.com/questions/32659348/ ?

275voto

Gordon Davisson Points 22534

Pourquoi je ne peux pas faire un lien symbolique dans /usr/bin ?

La nouvelle version d'El Capitan Protection de l'intégrité du système empêche les changements de plusieurs parties essentielles d'OS X, y compris la plupart de /usr/ même par Root.

Comment puis-je encore ajouter des fichiers exécutables à mon chemin d'accès ?

Les personnalisations locales, comme ce que vous faites, appartiennent à la section /usr/local à la place. Le chemin /usr/local/bin n'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 si /usr/local/bin n'existe pas par défaut, il es dans le PATH par défaut, donc dès que vous le créez, il sera recherché pour les 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 procéder à la personnalisation à des endroits plus appropriés. Une question du Stack Exchange d'Apple donne plus de détails à ce sujet : Qu'est-ce que la fonctionnalité sans racine dans El-Captain, vraiment ? .

0 votes

Si je fais ça et que je lance python il appelle le fichier sous /usr/bin/python au lieu du fichier /usr/local/bin/python .

7 votes

@DanielW. Quel est votre PATH réglé sur ? Normalement, /usr/local/bin sera listé avant /usr/bin donc il sera prioritaire.

0 votes

J'ai dû redémarrer et bidouiller avec brew link alors ça a marché, mais vous avez tout à fait raison avec la PATH réglage.

28voto

Vineet Sharma Points 41

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

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

J'ai également essayé de créer le lien symbolique dans "/usr/bin" et j'ai obtenu Operation Not Permitted.

Puis j'ai créé le lien symbolique dans "/usr/local/bin" et il n'y a pas eu 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.

12voto

James Points 65

Redémarrer le système -> appui long cmd + R .  sélectionner un terminal dans le menu des utilitaires tapez la commande suivante csrutil disable fermer le terminal et redémarrer le système.

17 votes

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.

17 votes

Personnellement, je pense que c'est la bonne solution. Je ne vois aucune raison pour que le système d'exploitation m'empêche d'établir des liens symboliques dans ce répertoire ou dans n'importe quel répertoire en tant que sudo .

4 votes

Peut-être que la solution complète est de le désactiver, de placer le lien symbolique et de réactiver csrutil ?

2voto

Srima Points 1
  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 n'êtes pas en mesure de créer un lien symbolique en raison d'un problème de permission, cela sera dû à "csrutil".après avoir désactivé csrutil vous pouvez créer un lien symbolique. Suivez ces étapes pour désactiver CSRUtill :

Redémarrez votre Mac. Avant qu'OS X ne démarre, maintenez la touche Command-R enfoncée et gardez-la enfoncée jusqu'à ce que vous voyiez une icône Apple et une barre de progression. Relâchez. Vous passez alors en mode de récupération. Dans le menu Utilitaires (dans la barre supérieure), sélectionnez Terminal. À l'invite, tapez exactement ce qui suit, puis appuyez sur Retour : csrutil disable. Le terminal doit afficher un message indiquant que le SIP a été désactivé. Dans le menu, sélectionnez Restart.

-7voto

Dre Points 38

Essayez d'exécuter sudo su d'abord puis en exécutant la commande avec le niveau racine.

4 votes

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X