Sudo ne peut pas créer de fichier dans / usr / bin dans El Capitan

14

J'ai effectué une mise à niveau vers El Capitan hier et tout allait bien jusqu'à récemment lorsque j'ai remarqué que je ne pouvais rien écrire (avec sudo ofc) sur / usr / bin alors que j'essayais d'installer phpbrew.

Qu'est-ce qui pourrait être à l'origine de cela et comment le résoudre?

entrez la description de l'image ici

sushil
la source
OS X El Capitan est sans racine. La fonctionnalité peut être désactivée à partir de la partition de récupération.
fd0

Réponses:

17

Depuis OSX 10.11, Apple a renforcé le système de sécurité. Appelé Protection de l'intégrité du système , Apple verrouille:

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

Pour désactiver cette fonction de sécurité, vous devez redémarrer votre ordinateur et maintenir enfoncé CMD+Rau démarrage pour démarrer en mode de récupération OS X.

Puis OS X Utilities > Terminal

Tapez la commande csrutil disable; reboot

Votre ordinateur va redémarrer. Vous verrez un message de confirmation de la désactivation.

Pour vérifier le statut du type CRS csrutil status

Ragnar
la source
1
J'ai désactivé et cela ne me permet toujours pas de faire quoi que ce soit:/Users/Rob$ csrutil status System Integrity Protection status: disabled. /Users/Rob$ touch /usr/bin/yes touch: /usr/bin/yes: Permission denied
Roberto
Essayez avec sudo.
Ragnar
Dans la plupart des cas, il est préférable d'installer des personnalisations locales dans / usr / local (par exemple / usr / local / bin plutôt que / bin ou / usr / bin). C'est à cela qu'il sert, et c'est le cas depuis longtemps. Si possible, je recommanderais de suivre cette meilleure pratique plutôt que de désactiver SIP. Si vous devez vraiment apporter des modifications dans un emplacement restreint, il est préférable de désactiver SIP, d'effectuer la modification, puis de réactiver immédiatement SIP avec csrutil enable(en mode de récupération).
Gordon Davisson
3

Comme mentionné par Ragnar , le /usrrépertoire est verrouillé par le système, à l'exception de /usr/local. Ensuite, si votre scénario le permet, je vous recommande d'ajouter le lien symbolique à /usr/local/bin. Si vous n'avez pas d'exigence stricte d'utilisation /usr/bin, c'est une façon de contourner l'erreur "Opération non autorisée".

Gustavo Straube
la source
2

On peut vérifier si un fichier ou un répertoire particulier est restreint par la protection de l'intégrité du système (SIP) / Rootless d'OSX en listant les indicateurs de fichier en utilisant l' -Ooption à ls (par exemple pour voir quels répertoires dans / sont restreints):

ls -Ol /

Les répertoires ou fichiers contrôlés par SIP s'affichent comme «restreints».

Il y a tous les détails dans les réponses à cette question sur SIP / rootless.

Pierz
la source