Apple a introduit la protection de l'intégrité du système , également connue sous le nom de "rootless", avec OS X 10.11, El Capitan. Je comprends que c’est une étape de la protection générale contre les logiciels malveillants, mais en tant que développeur, j’ai besoin d’un accès en écriture à certains des fichiers qu’il bloque.
Comment désactiver cette protection?
Réponses:
La documentation d'Apple couvre la désactivation de SIP, À propos de la protection de l'intégrité du système sur votre Mac et la Configuration de la protection de l'intégrité du système .
Un article sur lifehacker.com énumère ces étapes:
Vous pouvez vérifier si un fichier ou un dossier est restreint en émettant cette
ls
commande en utilisant le majuscule O (et non pas 0) pour modifier l'indicateur de liste longue:Recherchez le texte restreint pour indiquer où SIP est appliqué.
Par défaut (= SIP activé), les dossiers suivants sont restreints (voir la page d'assistance Apple ):
... et les dossiers suivants sont gratuits:
la source
ls -lO /usr/local
n'est pas marqué restreint. J'ai aussi chownd/usr/local/
récursivement. Mais je continue à voir la propriété de prendre racine/usr/local/bin
et/usr/local/share
qui impacte homebrew. Est-ce aussi le travail de SIP?/usr/local
n'est pas restreint, vous pouvez corriger facilement les autorisations "situées sous" ce répertoire. Homebrew recommande en réalité de s'exécutersudo chown -R $(whoami) /usr/local
(tout en étant connecté en tant qu'utilisateur administrateur) pour résoudre les problèmes d'autorisation./usr/local
autorisations sont correctement définies.Il est possible de désactiver SIP en démarrant sur Recovery HD et en exécutant la commande suivante:
Il est également possible d'activer les protections SIP et de les désactiver de manière sélective en ajoutant un ou plusieurs indicateurs à la
csrutil enable
commande. Tous doivent être démarrés à partir de la récupération pour pouvoir les définir:Activer SIP et permettre l'installation d'extensions de noyau non signées
Activer SIP et désactiver les protections du système de fichiers
Activer SIP et désactiver les restrictions de débogage
Activer SIP et désactiver les restrictions DTrace
Activer SIP et désactiver les restrictions sur l'écriture dans la NVRAM
J'ai aussi un article disponible avec plus d'informations sur SIP:
Protection de l'intégrité du système - Ajout d'une autre couche au modèle de sécurité d'Apple
la source
csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.
Si l'objectif est simplement de désactiver System Integrity Protection, le démarrage de la partition Recovery HD comme recommandé précédemment dans les autres réponses, via Command+ rau démarrage, n'est pas le moyen le plus rapide de procéder.
Vous pouvez combiner un démarrage en mode utilisateur unique avec un démarrage HD de récupération dans une combinaison de touches de démarrage non documentée:
Cela vous amène juste dans le strict minimum nécessaire pour cela directement .
la source
Il serait plus sûr de modifier
/etc/paths
afin que ce/usr/local/bin
soit simplement avantusr/bin
. De cette façon, vous pouvez effectuer votre travail de développement/usr/local/bin
sans avoir à désactiver SIP.Les installations propres du système d'exploitation ont été commandées de
/etc/paths
cette manière depuis El Capitan, mais si vous mettiez à niveau le système d'exploitation depuis Yosemite ou une version antérieure, vous auriez à modifier manuellement l'ordre des chemins.la source
usr/bin
. Comme SIP empêche cela maintenant, les programmes doivent être installés surusr/local/bin
, ce qui n’est pas restreint par SIP. En mettant d'usr/local/bin
abord, les utilisateurs peuvent exécuter des programmes sans avoir à taper le chemin absolu vers le programme. Est-ce que ça a du sens? Êtes-vous confus à propos de quelque chose d'autre?/usr/bin
que ce soit ... mais je suppose que ce que j'aurais dû demander, c'est "comment cela répond-il à la question de OP?" Je supposais à l' origine qu'il a fait en quelque sorte, et que je viens de ne faisais pas la connexion. Mais maintenant, je doute fort que cela ait un lien.Si tout ce dont vous avez besoin est d'accéder à / usr / local, consultez cette page: https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md
L’idée est de désactiver temporairement SIP en utilisant
csrutil disable
, ajouter/usr/local
, utiliser chflags pour définir ce répertoire comme étant non restreint.puis réactivez SIP en utilisant
csrutil enable
.S'il
/usr/local
existe déjà au moment de votre mise à niveau, même ce qui précède n'est pas nécessaire. Vous pouvez simplement courirla source
Read-only file system
Si vous ne parvenez pas à exécuter la partition de récupération
csrutil disable
(pour désactiver SIP ), essayez de définir les arguments de démarrage avec lanvram
commande, par exemple:Cependant, si vous avez l'erreur suivante:
alors ça ne marchera pas. Vous devez toujours démarrer le mode récupération / sans échec.
Voir:
la source
nvram: Error setting variable - 'boot-args': (iokit/common) not permitted
Je n'ai pas assez de réputation pour ajouter cela en tant que commentaire au lien github Homebrew 404 ci-dessus. La Wayback Machine l'a toujours:
http://web.archive.org/web/20160117204214/https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md
la source