gpt4 book ai didi

macos - 使 Mac OSX launchctl 在启动时以 root 身份启动一个进程

转载 作者:行者123 更新时间:2023-12-04 03:01:20 26 4
gpt4 key购买 nike

我的问题是如何在重新启动后自动使用 launchd 以 root 权限启动 MacOSX 守护进程?

我正在编写一个内部使用的应用程序,用于阻止对网站的访问。它是用 python 编写的,并修改/ect/hosts 文件以禁用或启用列出的 url。主要应用程序在 django 中,我创建了一个 python 扭曲守护进程,它实际修改/etc/hosts 文件,因为需要 root 访问权限。

我创建了一个 plist 文件,它可以解决一个小问题。重新启动后守护进程拥有我的正常登录权限而不是 root 权限。

一种解决方法是使用我的正常权限停止该进程,然后使用 sudo 启动该进程。

launchctl unload /Library/LaunchAgents/com.balanceinfosystems.socialshields.twisted.plist 
sudo launchctl load /Library/LaunchAgents/com.balanceinfosystems.socialshields.twisted.plist

plist 文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.balanceinfosystems.socialshields.twisted</string>
<key>Program</key>
<string>/source/social_shields/social_shields_twisted.py</string>
<key>KeepAlive</key>
<true/>
</dict>
</plist>

最佳答案

你把它放在错误的目录中。 LaunchAgents 是按用户运行的进程。系统进程进入 /Library/LaunchDaemons .它们以 root 身份运行。如果您希望它在启动时运行,我建议使用以下命令进行明确:

<key>RunAtLoad</key>
<true/>

关于macos - 使 Mac OSX launchctl 在启动时以 root 身份启动一个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17076493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com