On Nov 27, 2009, at 12:08 AM, Zephyroth Akash wrote:

> I'm actually creating a daemon which then runs in root context and I can't 
> get the path to an application.
> The command: [[NSWorkspace sharedWorkspace] 
> absolutePathForAppBundleIdentifier:@"com.myCompany.myApp"]; returns NULL but 
> returns the path to my application bundle correctly if used as a user.

I don't believe NSWorkspace works correctly when run as root. While root is a 
real userid at the Unix level, it's not intended that anyone ever log into the 
GUI with that userid, so a lot of the higher-level system frameworks don't 
support it.

Anyway, in keeping with the "Principle Of Least Privilege", it's best not to 
run as root if there is any way around it. There's too much danger if anything 
goes wrong, since you can delete or overwrite anything. Worse, it's all too 
easy for malware to exploit poorly-written software that runs as root, by 
tricking it into following the wrong instructions or calling the wrong helper 
tool. (Plenty of Apple's security-fix system patches have addressed issues like 
these.)

Can you write your program as a background agent that runs as the currently 
logged-in user? This is a lot easier and safer. (Frankly, I would avoid using 
Cocoa APIs for any code that runs as root.)

—Jens_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to