PDA

View Full Version : Open app as root on user login?




pickaxe
Jul 30, 2013, 04:48 PM
Some of the apps I regularly use require root access, otherwise I'd be typing my password repeatedly. (for example, TunlrSwitcher (https://github.com/lewispollard/TunlrSwitcher) would otherwise pop up a password prompt every time I try to change the DNS)

So I run these apps as root via terminal, but the sudo command obviously requires a password. This is a problem because I want these apps to run on boot without having to manually type in my password to launch them. Is there some way to do this? Windows has a few workarounds IIRC.



ArtOfWarfare
Jul 30, 2013, 04:51 PM
sudo crontab? It's what I would use on Linux, and I think it'll work on OS X, but I don't know if that's a solution that Apple would recommend.

$yregnar86
Jul 30, 2013, 09:22 PM
tried looking at it's permissions?

ElectricSheep
Jul 31, 2013, 02:58 PM
The recommended way of doing this is via launchd. You create a reverse-domain named .plist file following the specifications laid out in the launchd.plist man page. For example, I like to have my IRC bouncer to be running after booting my laptop without having to remember to login and start it. I created a file called com.electricsheep.znc.plist with the following contents:


<?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>com.electricsheep.znc</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/znc</string>
<string>-f</string>
<string>-r</string>
<string>--datadir=/Users/esheep/.znc/</string>
</array>
<key>KeepAlive</key>
<true/>
<key>UserName</key>
<string>esheep</string>
</dict>
</plist>


The plist file was dropped into /Library/LaunchDaemons. From there, the system's launchd instance manages starting znc automatically, and making sure that its still running even if it exits abnormally.

The man page for launchd.plist outlines the options available for configuring launch agents and daemons.