Open app as root on user login?

Discussion in 'Mac Programming' started by pickaxe, Jul 30, 2013.

  1. macrumors 6502a

    Joined:
    Nov 29, 2012
    #1
    Some of the apps I regularly use require root access, otherwise I'd be typing my password repeatedly. (for example, 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.
     
  2. macrumors 603

    ArtOfWarfare

    Joined:
    Nov 26, 2007
    #2
    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.
     
  3. macrumors newbie

    Joined:
    Jul 17, 2013
    #3
    tried looking at it's permissions?
     
  4. macrumors 6502

    ElectricSheep

    Joined:
    Feb 18, 2004
    Location:
    Wilmington, DE
    #4
    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:

    Code:
    <?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.
     

Share This Page