J'ai un agent de lancement configuré pour exécuter un fichier .plist par exemple: /Library/LaunchAgent/foo.plist
. Dans cette liste, il est configuré pour s'exécuter pendant LoginWindow
et Aqua
.
Lorsque j'essaie de lancer mon ordinateur et d'accéder à l'écran de connexion, ce plist doit s'exécuter, mais génère plutôt l'erreur suivante (dans la console):
launchctl: propriété douteuse sur fichier (sautant): /Library/LaunchAgents/foo.plist
Lorsque je tente de me connecter à un compte non-administrateur, le même message d'erreur est affiché. Lorsque je tente de me connecter avec un compte administrateur, cela fonctionne correctement.
Soyons honnêtes, je ne connais pas grand chose aux privilèges et autorisations de Mac OS X.
Pour créer le fichier, je l'ai ouvert dans emacs
, avec sudo
le compte administrateur (par exemple, en utilisant la su
commande car l'autre compte ne dispose pas des privilèges sudo), puis je l'ai sauvegardé.
Quel compte dois-je utiliser pour créer le fichier afin qu'il fonctionne pour tous les utilisateurs?
Dois-je utiliser la commande sudo?
Dois-je modifier les autorisations de fichiers (par exemple, utiliser chmod
)?
Existe-t-il un moyen simple de récupérer un fichier existant et de changer son propriétaire au lieu de le recréer?
Quelqu'un pourrait-il s'il vous plaît expliquer pourquoi cette erreur se produit?
-rw-r--r--@ 1 admin staff 653 Oct 17 14:31 /Library/LaunchAgents/foo.plist
-F
).Réponses:
Si un plist appartient à root et est accessible en écriture à un utilisateur autre que root, c'est un problème de sécurité.
Vous pouvez modifier le propriétaire en root avec
sudo chown root <filename>
, et modifier les autorisations avecsudo chmod 644 <filename>
(4 pour l'accès en lecture, 2 pour l'accès en écriture, 1 pour l'accès d'exécution, additionnées. Le premier numéro est pour le propriétaire, le second pour le groupe, le troisième pour toutes les personnes.)la source
launchctl
. J'ai créé le fichier en tant qu'utilisateur normal et m'exécutais avecsudo
. D'où l'erreur. Parce que root n’est pas le propriétaire du fichier, Nosudo
n’a pas été nécessaire. J'ai couru sanssudo
et ça a bien fonctionné.Dans la description de la sous - commande de la page de manuel launchctl (1)
load
:launchctl a plusieurs messages «Dubious…». Le code launchd pour 10.6.7 (par exemple) contient trois messages de ce type
launchctl.c
(voir la fonctionpath_goodness_check
).Dubious permissions on file (skipping): <pathname>
Dubious ownership on file (skipping): <pathname>
Dubious path. Not a regular file or directory (skipping): <pathname>
Pour éviter ces messages, un nom de chemin doit être (# 3) un fichier ou un répertoire normal 1 (ou un lien symbolique vers un) qui est (# 1) détenu par root ou l'utilisateur invoquant et (# 2) ne pas être "groupe" ou "autre ”Inscriptible (ie
chmod go-w
).1 Aucun canal nommé, nœud de périphérique spécial bloc / caractère, sockets de domaine local, etc.
Votre fichier appartient probablement à l'utilisateur admin puisque vous dites que vous ne recevez pas le message lorsque vous vous connectez en tant qu'utilisateur (le nom du chemin appartient à l'utilisateur invoquant dans ce cas).
Pour que le chemin d'accès fonctionne pour d'autres utilisateurs, il doit appartenir à root.
Pour organiser cela, faites:
la source
Merci pour la réponse (changement de propriétaire en racine) - c'est tout ce dont j'avais besoin.
Pour en faire un peu plus qu'un message "moi aussi" ... Je suis arrivé ici via un chemin compliqué: je recevais les erreurs "Cette API ne peut être utilisée que par un processus exécuté dans une session Aqua" pour un launchdaemon. La recherche d'une réponse à cette question m'a conduit à la note technique d' Apple sur les démons et les agents, qui expliquait comment résoudre l'erreur "Aqua session", mais cela me laissait avec des problèmes de "propriété douteuse". C'est comme ça que je suis arrivé ici, où mon dernier problème a été résolu.
Peut-être que l'ajout de tout cela à cette discussion amènera un moteur de recherche à associer cette page à l'un des problèmes précurseurs, permettant ainsi à un futur aventurier de gagner du temps.
la source
pour un fichier dans ~ / Library / LaunchAgent appartenant à l'utilisateur et non à la racine ne sont pas sudo, si vous devez en changer le propriétaire car vous le chargez à partir de l'utilisateur root
la source
C'est ce qui arrive quand les gens ne savent pas comment ça
sudo
marche. Pour désactiver les services sur les fichiers appartenant à votre utilisateur, appelez simplementlaunchtl
sanssudo
.la source