ConsoleKit

From Gentoo Wiki
Jump to: navigation, search

ConsoleKit is a framework for defining and tracking users, login sessions, and seats. ConsoleKit's primary function is to support multi-user setups. It also works for a single user, but offers no benefits compared to existing methods.

ConsoleKit is a D-Bus daemon and creates for each PAM session its own session. All applications in that session can make use of the permissions granted to this session. ConsoleKit determines if the session is local (created by a local user in contrast to users logged in over the network), and if the session is active (meaning it's the most recent session). Based on these distinctions, ConsoleKit assigns device file permissions (e.g. for audio, video and more) to the session. Other software like polkit also make use of these distinctions.

Fast user switching is a feature powered by ConsoleKit. When switching, device file permissions get changed to the new active user and applications in the old session get notified, so they can revoke grants based on ConsoleKit information.

ConsoleKit supports shutdown/reboot handling, so that only the local, active user can shutdown or reboot the system.

The planned multi-seat feature is not fully implemented. At the moment all local sessions are in Seat1, all other sessions are in Seat2.

Prerequisites

This article assumes that D-Bus has been previously configured.

Installation

Kernel

KERNEL Required options for ConsoleKit
    General setup --->
      [*] Auditing support
      [*] Enable system-call auditing support

USE flags

ConsoleKit support can be enabled system-wide by setting the USE flag to consolekit. The desktop profiles implicitly enable ConsoleKit.

FILE /etc/portage/make.conf
USE="consolekit"

USE flags for sys-auth/consolekit Framework for defining and tracking users, login sessions and seats

acl Add support for Access Control Lists global
cgroups Use the kernel to track processes instead of the session cookie. local
debug Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces global
doc Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally global
pam Add support for PAM (Pluggable Authentication Modules) - DANGEROUS to arbitrarily flip global
pm-utils Adds support for suspend/resume using sys-power/pm-utils local
policykit Use the PolicyKit framework (sys-auth/polkit) to get authorization for suspend/shutdown. local
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur global
test Workaround to pull in packages needed to run with FEATURES=test. Portage-2.1.2 handles this internally, so don't set it in make.conf/package.use anymore global

Emerge

The system needs to be updated if the USE variable was set to consolekit:

root #emerge --ask --changed-use --deep @world

Configuration

startx integration

To have a ConsoleKit session created when using startx to start the X server (instead of a display manager), add the following to each users ~/.xinitrc file:

FILE ~/.xinitrc
exec ck-launch-session dbus-launch --sh-syntax --exit-with-session <WINDOW_MANAGER>

WINDOW_MANAGER needs to be replaced by a window manager or a single application.

Starting

To start ConsoleKit:

root #/etc/init.d/consolekit start

To start ConsoleKit at boot:

root #rc-update add consolekit default

Usage

  • ck-list-sessions: Displays the details of all current sessions. For a local user, active and is-local should be TRUE.

Troubleshooting

  • Gentoo bugtracker: known bugs
  • ck-history: Use the --log parameter to display the logged messages.
  • The ConsoleKit init.d script /etc/init.d/consolekit uses the -q parameter to suppress debug messages. Remove this parameter and restart the service to get more messages. Use also the parameter --debug to get even more messages.
  • Since ConsoleKit communicates over D-Bus, D-Bus Troubleshooting may be of help.

See also

  • D-Bus - An inter-process communication (IPC) system for software applications.