libhal-policy -> PolicyKit

David Zeuthen david at fubar.dk
Thu Mar 9 16:44:53 PST 2006


On Thu, 2006-03-09 at 15:24 -0800, Artem Kachitchkine wrote:
> Close to the truth?

Pretty much I think, thanks for summarizing it! So to recap the policy
format, it should probably look like this

 [Policy]
 Allow=uid:__all__ uid:500 uid:501:somehaludi gid:power_users
 Deny=gid:suspicious_users

 # This per-policy setting overrides the settings and configuration
 # in /etc/PolicyKit/PolicyKit.policy - all keys are optional
 [Auth]
 AuthAllow=true               # whether the user without this privilege 
                              # can auth to gain this privilege

 AuthRequireSUPassword=true   # require super user password for auth

 AuthRequireOwnPassword=false # require users own password for auth

 AuthAllowGrant=false         # whether a user with this privilege can
                              # grant it to other users / groups

 AuthAllowRemove=false        # whether a user with this privilege can
                              # remove it from other users / groups

 AuthModifyAllPolicy=false    # allow user with this privilege to modify
                              # all aspects the policy for the privilege

where /etc/PolicyKit/PolicyKit.policy just contains an [Auth] section
with the keys above. All policies inherit that one but can modify it as
needed. Comments?

I wonder if we should factor in console users in the Allow, Deny
sections and completely remove the "at_console" directive in the HAL
D-BUS policy configuration file (hal.conf). Probably too early to tell..

Btw, I will probably add SELinux support to PolicyKit soon so e.g. 

 Allow=selinux_role:sysadm_r

is valid.. but I really need to read up on SELinux (it's very complex I
think). It will be a compile time option of course. 

One reason for adding SELinux support is to ensure that the whole system
is extensible... so for Solaris you might want include other qualifiers
based on e.g. Authorizations, Privileges etc. For Linux the Capabilities
might also be useful. Would that make sense?

Maybe it would be useful to use PolicyKit in D-BUS configuration files
too, e.g. 

  <policy polkit="some-PolicyKit-policy">
    <allow send_interface="org.freedesktop.Hal.Device.Volume"/>
  </policy>

instead of

  <policy at_console="true">
    <allow send_interface="org.freedesktop.Hal.Device.Volume"/>
  </policy>

though it wouldn't be fine grained enough; e.g. Mount() utilizes four
different policies

 storage-fixed-mount-change-uid
 storage-fixed-mount
 storage-removable-mount-change-uid
 storage-removable-mount

but for some things it might work just fine.

Yea, I'm thinking out loud :-)

> I'm glad Ludwig chimed in yesterday and today's design is much cleaner 
> without those terrible helpers. 

Yea, me too, thanks yourself btw - both your and Ludwig's input have
been very very useful. Patches to implement all this is of course very
welcome :-)

> Will the PolicyKit daemon be implemented 
> as a D-BUS service or something else? 

That's the plan so far, yea.

> Sending the root password over the 
> socket is fine, but could we use PAM over D-BUS?

I think we could yes, but I've never used PAM yet :-). Soon though...

Cheers,
David




More information about the hal mailing list