[launchd-dev] Getting user parameters as an agent

Quinn eskimo1 at apple.com
Mon Nov 19 12:41:48 PST 2007


At 21:37 +0200 19/11/07, Yaniv Aknin wrote:
>My apologies, I'm unable to reproduce the behavior I saw earlier 
>with 'user-specific' DAApprovalSessionRef. I haven't the faintest 
>how it happened, maybe a bug in some other part of my code and I 
>jumped to conclusions. Anyhow, if I hit an obstacle, I'd re-raise 
>the issue with the list.

No worries.  I'm glad that you have things working the right way.

>Still, I'd be interested in knowing how can I provide username based 
>variables in launchd's plists, if at all possible.

OK, I'll take a stab at your original questions...

At 23:14 +0200 17/11/07, Yaniv Aknin wrote:
>I've seen references on the list to the fact that an Agent in Tiger 
>absolutely must run as the user

That's basically true, and it applies to both 10.4.x (where launchd 
agents have severe restrictions) and to 10.5 (where launchd agents 
are truly useful).

>no workarounds.

Well, there are always workarounds (-:  For example, you could make 
your agent setuid root.  However, that's a /really/ bad idea.  In 
general, we recommend that you separate the functionality that 
requires elevated privileges out of your agent and into a privileged 
daemon.  This has all sorts of security benefits.

We plan to publish a sample that illustrates this technique soon.

>Also, there's the issue of having launchd tell my agent which user 
>it's running for, either on the command line, as an environment 
>variable, or otherwise.

Given that the agent always runs as the user associated with the 
session, you can do this by calling <x-man-page://2/getuid>.

>And if I'm not asking for too much (I know I am...) - also redirect 
>stdout to a user-specific locations (/var/log/my-app/log.$USERNAME).

I don't think launchd provides a way to do this.  You'd have to write 
code in your agent to set up the user-specific log file.  This might 
make a good feature request.

<http://developer.apple.com/bugreporter/>

Or, better yet, log via <x-man-page://3/asl>.

S+E
-- 
Quinn "The Eskimo!"                    <http://www.apple.com/developer/>
Apple Developer Relations, Developer Technical Support, Core OS/Hardware


More information about the launchd-dev mailing list