0 votes

Exécution des services Launchd avec un utilisateur non racine sur MacOS

Je construis un service launchctl qui peut exécuter un service java. Je suis capable de créer le service launchctl avec l'utilisateur Root et de tester les cas d'utilisation démarrage/arrêt/état/démarrage automatique au redémarrage.

J'ai du mal à exécuter le même service launchctl avec un utilisateur non Root ( ec2-user dans mon cas)

Mon plist ressemble à ce qui suit

<?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>siem</string>
  <key>ProgramArguments</key>
  <array>
    <string>java</string>
    <string>-jar</string>
    <string>/Users/ec2-user/siem.jar</string>
  </array>
  <key>RunAtLoad</key>
  <true/> <!-- run the program at login -->
  <key>KeepAlive</key>
  <true/> <!-- run the program again if it terminates -->
  <key>WorkingDirectory</key>
  <string>/Users/ec2-user</string>
   <key>StandardErrorPath</key>
   <string>/tmp/mycommand.err</string>
   <key>StandardOutPath</key>
   <string>/tmp/mycommand.out</string>
</dict>
</plist>

J'ai essayé différentes étapes pour lancer le service ci-dessus avec ec2-user . UID pour ec2-user est de 501.

ec2-user@ip-172-31-30-212 ~ % launchctl bootstrap gui/501 ~/Library/LaunchDaemons/siem.plist
Bootstrap failed: 125: Unknown error: 125

Vérifié le contenu du fichier plist

ec2-user@ip-172-31-30-212 ~ % plutil ~/Library/LaunchDaemons/siem.plist
/Users/ec2-user/Library/LaunchDaemons/siem.plist: OK

J'ai essayé d'amorcer le service avec user

ec2-user@ip-172-31-30-212 ~ % launchctl bootstrap user/501 ~/Library/LaunchDaemons/siem.plist
Bootstrap failed: 5: Input/output error

Toutes les erreurs ci-dessus ne sont pas verbeuses et ne semblent pas trouver de solution.

Mon but : Je veux lancer le service launchctl avec un utilisateur non Root.

Détails sur l'environnement :

OS : MacOS sur une instance EC2 d'AWS

Version MacOS : BigSur et Monterey

Mise à jour 1 :

Vérification des journaux du système

Nov 26 17:51:23 ip-172-31-30-212 com.apple.xpc.launchd[1] (siem[2159]): Service could not initialize: 20G224: xpcproxy + 23787 [839][86D1F823-583D-36B7-A047-55971A034143]: 0xd
Nov 26 17:51:23 ip-172-31-30-212 com.apple.xpc.launchd[1] (siem.label[2160]): Service could not initialize: 20G224: xpcproxy + 23787 [839][86D1F823-583D-36B7-A047-55971A034143]: 0xd
Nov 26 17:51:23 ip-172-31-30-212 com.apple.xpc.launchd[1] (siem[2159]): Service exited with abnormal code: 78
Nov 26 17:51:23 ip-172-31-30-212 com.apple.xpc.launchd[1] (siem): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.
Nov 26 17:51:23 ip-172-31-30-212 com.apple.xpc.launchd[1] (siem.label[2160]): Service exited with abnormal code: 78
Nov 26 17:51:23 ip-172-31-30-212 com.apple.xpc.launchd[1] (siem.label): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.

4voto

mahbuhs_redoc Points 113

Outil utilisé LaunchControl pour déboguer le problème. Je recommande d'installer le brew cask install launchcontrol qui est un outil gui pour launchctl, il peut aider à détecter les erreurs et le dépannage.

Dans mon cas, il y avait les problèmes suivants

  • StandardOutPath et StandardErrorPath ont été donnés lorsque mon utilisateur n'avait pas de droits d'écriture avec elle.
  • J'ai d'abord démarré mon service avec l'utilisateur Root donc service a créé l'emplacement des logs. Puis j'ai démarré le même service avec un autre non-root et comme l'emplacement des journaux a déjà été créé, l'application non-root L'utilisateur n'avait pas la permission d'écrire sur ce sujet.

La raison pour laquelle il a fallu un certain temps pour résoudre les problèmes ci-dessus est la très mauvaise journalisation des erreurs fournie par MacOS.

0voto

yoliho Points 340

Vous devez modifier le plist.

Vous avez besoin de la clé UserName

par exemple

    <key>UserName</key>
    <string>ec2-user</string>

Pour en savoir plus, voir https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html#//apple_ref/doc/uid/10000172i-SW7-BCIEDDBJ

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X