Could someone help me with writing polkit rule?

Ahmad Samir ahmadsamir3891 at gmail.com
Fri Oct 25 12:26:09 UTC 2013


On 25 October 2013 11:22, Peter Lemenkov <lemenkov at 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 at lists.fedoraproject.org
> https://admin.fedoraproject.org/mailman/listinfo/devel
> Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct



-- 
Ahmad Samir


More information about the devel mailing list