On 25 October 2013 11:22, Peter Lemenkov <lemenkov(a)gmail.com> wrote:
Hello All!
I 'm trying to write a polkit rule which allows every member of a
particular group ("ejabberd") to run a specific script
("/sbin/ejabberdctl" or "/usr/sbin/ejabberdctl"). Other users should
not be even able to run it. This sounds simple, so I quickly wrote
this:
http://peter.fedorapeople.org/stuff/ejabberdctl.polkit.rules
I am not an expert on javascript or polkit, but IINM the second if
rule has wrong syntax, it should be:
if( subject.isInGroup("ejabberd") ) {
return polkit.Result.YES;
}
also, it doesn't need an else bit.
I think you can merge the second if with the first one:
polkit.addRule(function(action, subject) {
var CommandLine = action.lookup("command_line").split(" ");
if ( action.id == "org.freedesktop.policykit.exec" && (CommandLine[0]
== "/sbin/ejabberdctl" || CommandLine[0] == "/usr/sbin/ejabberdctl")
&& subject.isInGroup("ejabberd") ) {
return polkit.Result.YES;
}
});
(I could be very wrong though).
I installed it to %{_datadir}/polkit-1/rules.d/51-ejabberdctl.rules,
and added /usr/bin/ejabberdctl which contains just the following:
=======
#!/bin/sh
/usr/bin/pkexec /usr/sbin/ejabberdctl "$@"
=======
So when user types ejabberdctl it actually runs /usr/sbin/ejabberdctl
under the polkit supervision. Unfortunately people started reporting
about the issues with the other apps:
*
https://bugzilla.redhat.com/show_bug.cgi?id=1009408
I can't find what's wrong with the rule above so I'm calling you for
help. Could please someone help me fixing this mess?
--
With best regards, Peter Lemenkov.
--
devel mailing list
devel(a)lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct:
http://fedoraproject.org/code-of-conduct
--
Ahmad Samir