我的问题是如何在重新启动后自动使用 launchd 以 root 权限启动 MacOSX 守护进程?
我正在编写一个阻止访问网站的内部使用应用程序。它是用 python 编写的,并修改 /ect/hosts 文件以禁用或启用列出的 url。主应用程序在 django 中,我创建了一个 python twisted 守护程序,它对 /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>