2013-06-12 10 views
9

Moje pytanie brzmi: jak wykonać proces demona MacOSX używając startu startowego z uprawnieniami root automatycznie po restarcie?Wprowadzanie Mac OSX launchctl uruchamia proces jako root przy starcie

Piszę aplikację do użytku domowego, która blokuje dostęp do stron internetowych. Jest napisany w pythonie i modyfikuje plik/ect/hosts, aby wyłączyć lub włączyć listę adresów URL. Główna aplikacja znajduje się w django, a ja stworzyłem demona skrosowanego pythona, który wymaga rzeczywistej modyfikacji pliku/etc/hosts, ponieważ są wymagane uprawnienia dostępu do konta root.

Utworzono plik plist, który działa z jednym mniejszym problemem. Po ponownym uruchomieniu proces demona ma moje zwykłe uprawnienia do logowania zamiast uprawnień roota.

Obejście problemu polega na zatrzymaniu procesu z moimi normalnymi uprawnieniami, a następnie uruchomieniu procesu za pomocą sudo.

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

Plik 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> 

Odpowiedz

19

pan umieścić to w złym katalogu. LaunchAgents to procesy uruchamiane na użytkownika. Procesy systemowe idą w /Library/LaunchDaemons. Są uruchamiane jako root. Jeśli chcesz, to podczas uruchamiania komputera, polecam dokonywania że jednoznaczne z:

<key>RunAtLoad</key> 
<true/> 
+0

Thanks Rob. Pozdrawiam Keith. –