Arrêter LaunchAgents et Daemons

23

Je travaille en tant qu'administrateur dans un environnement universitaire. L'un des défis est de stopper les services installés par les étudiants avec CS majeur. Il y a quelque temps, ils ont obtenu l'accès administrateur et installé des agents de lancement et des démons sur certains systèmes.Les étudiants ont également ajouté quelques plists sous com.apple.myprog.run. Le problème est qu'ils ne sont pas présents dans le répertoire des lanceurs ou dans le répertoire launchdaemons.

Ma question est donc de savoir comment trouver le chemin d'accès à ces services de démon. La prochaine étape consiste alors à les arrêter. Étant donné que certains d'entre eux pourraient recommencer encore et encore (en fonction de certains indicateurs).

Prashant
la source
Problème similaire. Impossible d'arrêter un démon qui a été démarré avec launchctl load -wF /Library/LaunchDaemons/name.of.this.plist.
Meltemi

Réponses:

21

Si vous voulez arrêter l'élément pour ce démarrage, lancez simplement une commande de déchargement à launchd via launchctl. Pour un correctif permanent, ajoutez une clé désactivée dans le plist avec la valeur true ou supprimez / déplacez le fichier dans un dossier où launchd ne le scannera pas automatiquement.

  • launchctl unload /System/Library/LaunchAgents/com.apple.AppStoreUpdateAgent.plist

La page de manuel de launchctl contient une documentation intéressante pour contrôler les travaux. En ce qui concerne la défaite générale des majors CS, vous pouvez également considérer qu'ils ont modifié les listes de pommes existantes pour leur faire faire quelque chose que vous n'attendez pas, il sera donc beaucoup plus facile de simplement réinstaller le système d'exploitation et de migrer les données utilisateur. à partir d'une sauvegarde (en faisant particulièrement attention à réinstaller tous les fichiers plist dans l'espace / System / Library, / Library (et peut-être aussi auditer la ~ / Library des utilisateurs admin). Perdre admin / root contre quelqu'un qui sait comment changer le système est essentiellement game over et la défense (recherche et désactivation) des changements prend beaucoup de temps par opposition à une infraction (réinstallation du système à partir d'une bonne source connue et utilisation d'outils de gestion de configuration pour garantir la détection des fichiers modifiés).

bmike
la source
le fait est que je ne sais pas où le plist a été stocké. J'ai recherché dans le répertoire LaunchAgents et je ne vois pas les applications y apparaître.
Prashant
Ils peuvent être n'importe où. Vous pouvez démarrer en mode sans échec et comparer une sortie de liste launchctl à la liste de démarrage normale. mdfind vous montrera les fichiers contenant les travaux escrocs (s'ils ne les ont pas exclus du feu des projecteurs). Vous pouvez également théoriquement exécuter fs_usage contre launchd lui-même pour suivre les fichiers qu'il lit pendant le démarrage, mais encore une fois, la logistique pour que fs_usage s'exécute dès le démarrage combinée avec le fait que vous devez toujours inspecter chaque fichier plist signifie que vous en avez beaucoup de travail découpé pour "détecter les changements et les retirer chirurgicalement" au lieu de commencer propre.
bmike
1
Si vous voulez vraiment trouver chaque .plist sur le système, cela le fera. C'est une longue liste. find / -type f -name "*.plist"
afragen
man launchctl décharger Dans les versions précédentes, cette option modifierait le fichier de configuration. Maintenant, l'état de la clé désactivée est stocké ailleurs sur le disque. .. (
Nakilon
@Nakilon Pourriez-vous être précis sur les versions? Vous parlez de la refonte 10.11 de launchd ou d'une autre "version précédente"?
bmike
17

La façon la plus simple que j'ai trouvée de le faire est

sudo launchctl list | grep "rough name of what you want to find"
sudo launchctl remove "label.of.the.file"
Oantby
la source
Merci, c'est exactement ce que je voulais. Comment supprimer le service après avoir supprimé le fichier!
chmac
2

Essayez de vérifier ces emplacements:

/ Utilisateurs / votre nom d'utilisateur / Bibliothèque / LaunchAgents /

/ Bibliothèque / LaunchAgents /

/ Bibliothèque / LaunchDaemons /

/ Système / Bibliothèque / LaunchAgents /

/ Système / Bibliothèque / LaunchDaemons /

Cory T
la source
1

Vous pouvez faire un "launchctl dumpstate" et il montrera tous les services chargés et le chemin vers le démarrage .plist et son contenu.

Vous voudrez probablement l'exécuter à travers quelque chose comme moins car il vide beaucoup d'informations.

Mark Heath
la source