FWIW, I have several issues here.  To start (and it isn't directed 
to the submitters, but to the imported API's) it limits the possible 
selections: especially stop() and restart(), as if there are no other 
options (at least one that I know of).  It also adds yet another 
service responsible for doing system-wide control (again, 
stop()/restart() - and intends to do it with a shell script).

On Wed, 26 Aug 2009, Brian Cameron wrote:

> 
> Jedy/Sherry:
> 
> > Sherry gave us the whole story. The logic you mentioned will be
> > implemented in ConsoleKit which will be integrated after b128. So
> > currently, we have 2 options. The first one is to wait ConsoleKit's
> > integration. The second one is to integrate the current fast reboot
> > support of GNOME restart dialog at b124 and then update it after
> > ConsoleKit's integration after b128.
> 
> Note that ConsoleKit currently does not support the ability to respond
> to different types of reboot options.  So, I assume part of the plan to
> use ConsoleKit in the future is to enhance it so it can support doing
> this.

  IMHO, it is sufficient for the restart dialog to only have 
'Restart", as other choices are effectively TMI.  The majority of 
users will gladly take the default policy as to what restart() means 
(fast, through BIOS, whatever).  Users that have a clue as to the 
difference between 'reboot -f' and 'reboot -p' will be happy to do 
that on a CLI.  And as long as there is a decent API to select what 
the default reboot properties should be, I don't really see that the 
added complexity is worth it.

> 
> > > 2. Options for GDM
> > > 
> > >      2.1 With unmodified HAL
> > > 
> > >   Currently GDM uses the interfaces provided by HAL.  hald runs
> > >   as a privileged process and checks for required
> > >   authorizations.  If the caller has sufficient authorization to,
> > >   say reboot, it will invoke hal-system-power-reboot-sunos.sh.
> 
> GDM and ConsoleKit do not use HAL at all today.  GDM/ConsoleKit support
> shutdown/reboot as follows today:

  This gets to my original issue: there is no common methodology for 
handling system services.  They should be using D-Bus (or something 
like D-Bus), and let the backend services be whatever.

> 
> - The new GDM rewrite has a login GUI which checks the
>   solaris.system.shutdown RBAC key directly.  If the "gdm" user has
>   this authorization, then GDM will present the "Shutdown" and "Reboot"
>   buttons in the dialog.  If they are pressed, a message is passed to
>   ConsoleKit via D-Bus.
> 
> - ConsoleKit checks to see if the user who passed the D-Bus message has
>   the solaris.system.shutdown RBAC key defined.  If so, it will call a
>   script.  One script for shutdown and another script for reboot.
>   The shutdown script calls "/sbin/init 5" and the reboot script calls
>   "/sbin/init 6".

  (Not sure I like this at all)

> 
>   Note that any user can call ConsoleKit with a message to request
>   shutdown or reboot.  If it was passed in from the GDM GUI by clicking
>   on the associated button, then the user would be the "gdm" user.  But
>   ConsoleKit will only call the shutdown/reboot script if the calling
>   user has the solaris.system.shutdown authority.
> 
> In GDM 2.20 and earlier (currently used in Nevada and OpenSolaris), it
> works much the same, with the following differences:
> 
> - ConsoleKit is not used at all, GDM does all the work.
> - The shutdown/reboot commands are defined to be "/sbin/init 5" and
>   "/sbin/init 6" in the GDM configuration.
> - The new GDM uses D-Bus messages for IPC while the old GDM uses a
>   private socket which can be accessed directly or via the
>   gdmflexiserver program.  See "man gdmflexiserver" to see the
>   commands used to trigger reboot or shutdown.

  Are these D-Bus messages directed towards the ConsoleKit daemon, to 
hald, or something that happens to be listening?

  As I understand the description, the ConsoleKit daemon is waiting 
for D-Bus messages and will respond to a 'restart' request.  What if 
hald also responds?  init(1m) does audit, but will we get the desired 
information (this is what I seem to be wrestling with suspend right 
now)?  I would much rather see a single service (possibly a merge of 
ConsoleKit, HAL, and powerd) that will (among other things) respond to 
D-Bus requests, audit the actual requesting user/application, and 
perform the proper action, hopefully based on some larger policy that 
might determine that ConsoleKit Manager sessions are not allowed to 
stop/restart the system.




> 
> As I say above, ConsoleKit calls a script to reboot or shutdown, so it
> would be easier to integrate a solution that invokes shutdown/reboot
> via this script.
> 
> The main problem with GDM and ConsoleKit is that ConsoleKit only
> provides a single D-Bus interface for "reboot" and does not currently
> provide any way to pass in any options regarding what kind of reboot
> is requested.

  Again, I don't believe this is bad.  For the vast majority of users, 
the default action is plenty sufficient.  For the others, they know 
how to use the alternate methods or to change the default.

> 
> I am sure the existing D-Bus messages could be augmented to allow more
> flexibility in specifying how the system should reboot.  Likewise, the
> GDM login GUI could be augmented to allow users to specify what kind of
> reboot they want to do if the "gdm" user has the
> solaris.system.shutdown key defined.

  Here, I believe that D-Bus needs some extension to support a larger 
variety of controls, including platform-private controls.  But 
certainly it is beyond this case.

> 
> That said, we should probably code this in a general way so that we
> can get the code upstream.  We probably do not want to code a solution
> that works specific to how reboot works on Solaris.  Instead, we should
> probably augment ConsoleKit so that reboot can be easily enhanced to
> support different kinds of reboot operations on any distribution.
> Otherwise, we will not be able to get this sort of change upstream, and
> be stuck maintaining a Solaris-specific patch ourselves.  Maintaining
> our own patch would not be the end of the world, but it is obviously
> easier to maintain the code if we can get our changes upstream.
> 
> So, to design this properly, there probably should be some discussion
> about it first on the public ConsoleKit mailing list.  That way we can
> make sure that any design considerations from other distributions are
> taken into account as well.
> 
>   ConsoleKit at lists.freedesktop.org
> 
> In other words, I did not have any serious problems with your proposal.
> More of a concern that we are trying to design new ConsoleKit features
> without including the upstream community in the design process.
> 

  A place where I do agree, we should be working with the upstream 
community to provide these controls.


  On the other hand, I don't have voting rights here, just comment 
rights (which I did choose to exercise).


  Cheers!


        ---- Randy

Reply via email to