On Fri Sep  2 10:48:04 2005, Waldo Bastian wrote:
What I would like to see clearified is whether, in case of "RootRequired=Yes", the menu system should do whatever is needed to run the program as root, or whether that is the responsibility of the application itself.

I think the answer is probably that its the Menu system's problem. Most applications which do require root access have no internal method of acquiring it, and it's a difficult piece of code to do right. Moreover, although it could be wrapped into the .desktop file itself, how to obtain root access is a property of the distribution, not the application, and it makes sense to abstract that.

In KDE the menu system typically calls kdesu to run the application as root when it indicates that it requires root, but there are also cases where an application is started with normal user privileges but which will require the root password later on.

Interesting, and it depends on what you want the RootRequired for. It's either display, or launching.

Personally, I quite like both:

1) Application will not run without root access:
RootRequired=Yes

2) Application will run in a limited manner without root access, and has no method for acquiring root access internally:
RootRequired=Optional

3) Application will run in a limited manner without root access, and has internal method for acquiring root access:
RootRequired=Internal,Optional

4) Application will not run without root access, but has internal method for acquiring root access:
RootRequired=Internal,Yes

5) Application will run normally without root access:
RootRequired=No

A) Display.

If RootRequired is Yes, the Menu system SHOULD present some indicator with the entry.

If the user is somehow known NOT to have root access (and there are multiple methods for doing this), then if RootRequired contains Yes, the Menu system MAY suppress the entry.

If RootRequired contains Optional, then if the user is known to have root access, the Menu system MAY treat the entry as RootRequired contains Yes in every respect. If the user is known not to have root access, the Menu system MAY treat the entry as RootRequired contains No in every respect.

B) Launching:

If RootRequired contains Internal, then for launching purposes, the Menu system MUST treat the entry as if RootRequired=No. Otherwise:

- If RootRequired=Yes, the Menu system MUST run the program as root (via kdesu, or whatever method is most suited. [We should probably define some single method for this, for the ease fo the distributions]). - If RootRequired=Optional, the Menu system MUST attempt to acquire root access (via kdesu, etc), but if this fails, the application MUST be run as the normal user.

C) Syntax:

Informally: RootRequired MUST, if specified, include Yes, No, or Optional. It MAY contain Internal. We should probably work in some form of capability-style expansion space, and decide how to treat them in current applications, so we can describe the capabilities actually required.

For Linux, we might only need CAP_NET_ADMIN for a network control panel, for instance. I'm very unclear on how we might specify that kind of notion on, say, Solaris, though - I have no clue about the portability of this. I'd would assume that if we added specific capabilities, this would be treated as RootRequired=Yes if an implementation didn't understand them.

Dave.
_______________________________________________
xdg mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/xdg

Reply via email to