Il semble que je ne puisse pas modifier le fichier plist à partir de LaunchAgents - même si je fais un sudo, je suis empêché de toute suppression/altération. Dois-je nécessairement désactiver SIP pour faire cela ?
Réponses
Trop de publicités?Cela ne fait que peu ou pas de différence du point de vue de la sécurité, car cela ramène le système à ce qu'il était avant SIP, et à la façon dont presque tous les systèmes Unix fonctionnent encore. La valeur de SIP est au mieux discutable. Il répond à la question parce que la seule façon d'utiliser la commande Launchctl pour décharger le fichier plist joué est d'abord de désactiver SIP, de démarrer, de décharger le fichier plist, et ensuite, si désiré, de réactiver SIP.
Une autre option qui fonctionne sous 10.11.6 est une variation de la méthode suggérée par @Le-Sci. Créez un shell script qui désactive le processus de jeu :
#!/bin/bash
sleep 30 && kill -9 "$(pgrep gamed)"
La commande sleep indique ici au script d'attendre 30 secondes avant de lancer le processus de sortie de gamed, afin de donner au système suffisamment de temps pour avoir chargé gamed avant d'essayer de le terminer ; vous pouvez ajuster le temps d'attente si nécessaire. La commande "kill -9" quitte de force le processus que vous demandez, mais elle n'accepte qu'un numéro d'identification de processus, pas un nom de processus, donc "pgrep" est utilisé pour rechercher l'identification du processus. Notez où vous enregistrez le script (pour cet exemple, je l'enregistrerai sous le nom de "forceQuitGamed" dans /Users/myaccountname/ ).
Donnez au script la permission d'exécution :
sudo chmod +x ~/forceQuitGamed
Créez un fichier plist d'agent de lancement qui s'exécutera à chaque fois que vous vous connecterez à votre compte. Si vous n'avez jamais créé de fichier plist auparavant, vous pouvez notamment le faire avec TextEdit. Le fichier script doit être enregistré en texte brut, donc si vos préférences par défaut pour TextEdit appellent au formatage Rich Text, faites une commande Format>Make Plain Text pour convertir en texte brut avant d'essayer d'utiliser le nouveau fichier plist d'agent de lancement.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.myaccountname.loginscript</string>
<key>ProgramArguments</key>
<array>
<string>/Users/myaccountname/forceQuitGamed</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
La chaîne dans le tableau sous "ProgramArguments" est le chemin/vers/votre script de Shell. Enregistrez le fichier dans ~/Library/LaunchAgents/ . Dans cet exemple, j'ai nommé le fichier plist com.myaccountname.forceQuitGamed.plist, il se trouve donc à l'adresse suivante
/Users/myaccountname/Library/LaunchAgents/com.myaccountname.forceQuitGamed.plist
Maintenant, chaque fois que vous vous connectez à votre compte, gamed devrait être quitté de force quelques secondes après son chargement. (Si vous avez besoin qu'il soit arrêté le plus rapidement possible après son chargement, consultez la méthode de @Le-Sci). Cette approche fonctionne sans avoir besoin de désactiver la protection de l'intégrité du système.
Vous devez d'abord entrer csrutil disable
dans le terminal en mode de récupération, puis redémarrer pour effectuer les modifications, redémarrer à nouveau en mode de récupération et effectuer les modifications. csrutil enable
, redémarre.
Mais je ne sais pas quels processus, lorsqu'ils sont modifiés, compromettent le démarrage dans El Capitan.
- Réponses précédentes
- Plus de réponses