From aa548ebc044767ced3c1a22f8b8086c910a27831 Mon Sep 17 00:00:00 2001 From: Robby Workman Date: Mon, 8 Dec 2014 00:55:13 -0600 Subject: [PATCH 10/12] Add --with-rundir configure flag This allows use of /run on tmpfs instead of /var/run without downstream symlink magic or patches. --- configure.ac | 20 +- doc/console-kit-daemon.1m | 472 ------------------------------------------- doc/console-kit-daemon.1m.in | 472 +++++++++++++++++++++++++++++++++++++++++++ src/Makefile.am | 7 +- src/ck-inhibit.c | 12 +- src/ck-manager.c | 10 +- src/main.c | 2 +- tools/70-udev-acl.rules | 76 ------- tools/70-udev-acl.rules.in | 76 +++++++ tools/Makefile.am | 1 + tools/udev-acl.c | 2 +- 11 files changed, 585 insertions(+), 565 deletions(-) delete mode 100644 doc/console-kit-daemon.1m create mode 100644 doc/console-kit-daemon.1m.in delete mode 100644 tools/70-udev-acl.rules create mode 100644 tools/70-udev-acl.rules.in diff --git a/configure.ac b/configure.ac index d45a937..dd1f5bb 100644 --- a/configure.ac +++ b/configure.ac @@ -163,6 +163,21 @@ fi Z_LIBS="${Z_LIBS} -lz" AC_SUBST(Z_LIBS) + +dnl --------------------------------------------------------------------------- +dnl - Path to rundir e.g. /var/run +dnl --------------------------------------------------------------------------- + +AC_ARG_WITH(rundir, + [AS_HELP_STRING([--with-rundir=],[run directory location, e.g. /var/run])]) +if ! test -z "$with_rundir" ; then + RUNDIR="$with_rundir" +else + RUNDIR="$localstatedir/run" +fi +AC_SUBST(RUNDIR) + + dnl --------------------------------------------------------------------------- dnl - PID file dnl --------------------------------------------------------------------------- @@ -173,7 +188,7 @@ AC_ARG_WITH(pid-file, if ! test -z "$with_pid_file"; then CONSOLE_KIT_PID_FILE=$with_pid_file else - CONSOLE_KIT_PID_FILE=${localstatedir}/run/ConsoleKit/pid + CONSOLE_KIT_PID_FILE=${RUNDIR}/ConsoleKit/pid fi AC_SUBST(CONSOLE_KIT_PID_FILE) @@ -472,6 +487,7 @@ AC_SUBST(PACKAGE) AC_CONFIG_FILES([ Makefile src/Makefile +tools/70-udev-acl.rules tools/Makefile tools/linux/Makefile tools/freebsd/Makefile @@ -479,6 +495,7 @@ tools/openbsd/Makefile tools/solaris/Makefile data/Makefile doc/Makefile +doc/console-kit-daemon.1m doc/dbus/ConsoleKit.xml doc/dbus/Makefile libck-connector/Makefile @@ -500,6 +517,7 @@ echo " sbindir: ${sbindir} sysconfdir: ${sysconfdir} localstatedir: ${localstatedir} + rundir: ${RUNDIR} datadir: ${datadir} source code location: ${srcdir} compiler: ${CC} diff --git a/doc/console-kit-daemon.1m b/doc/console-kit-daemon.1m deleted file mode 100644 index 1e1a618..0000000 --- a/doc/console-kit-daemon.1m +++ /dev/null @@ -1,472 +0,0 @@ -'\" te -.TH console-kit-daemon 1m "24 Oct 2009" "SunOS 5.11" "Maintenance Commands" -.SH "NAME" -console-kit-daemon \- ConsoleKit daemon -.SH "SYNOPSIS" -.PP -\fBconsole-kit-daemon\fR [-\fB-debug\fR] [-\fB-help\fR] [-\fB-no-daemon\fR] [-\fB-timed-exit\fR] -.SH "DESCRIPTION" -.PP -\fBconsole-kit-daemon\fR is a service for defining and tracking users, login -sessions and seats\&. It provides interfaces for managing switching sessions -and session migration when using mechanisms such as Virtual Terminals (VT)\&. -ConsoleKit provides a number of interfaces to specify what displays are managed -by the display manager, and how\&. -.PP -ConsoleKit maintains a database of which users are logged into the system\&. -ConsoleKit groups sessions by seats which represent a set of hardware (usually -a keyboard and mouse)\&. Other process communicate with ConsoleKit via D-Bus\&. -.PP -One session leader process is responsible for asking \fBconsole-kit-daemon\fR -to open a new session\&. In the typical case, the session leader would be a -ConsoleKit enabled display manager, such as GDM\&. This leader makes a -connection to the D-Bus system bus and asks \fBconsole-kit-daemon\fR to open a -session when needed\&. -.PP -If the operation succeeds, \fBconsole-kit-daemon\fR will return a cookie to the -session leader\&. The session leader should store this variable in the -environment as XDG_SESSION_COOKIE so that it may be shared with its child -processes\&. The environment variable contains the UUID used to tie processes to -a session\&. -.PP -At this point the session will be registered with ConsoleKit and a particular -set of information about the session will be stored along with it\&. -.PP -The Session will remain open until the Session Leader disconnects from the -D-Bus system bus\&. The session will be removed from its seat, and deregistered\&. -.PP -Various other programs need to know information about running user sessions, -such as the Fast User Switch Applet and other mechanisms for switching the -console to use a different VT display\&. Such programs make use of ConsoleKit -interfaces to determine if user switching is supported and to manage the -switching of different sessions on the same seat\&. -.PP -ConsoleKit provides a pam_ck_connector so that non-graphical logins (e\&.g\&. -telnet, ssh, etc\&.) are registered with ConsoleKit\&. This functionality works -if this PAM module is enabled in the -\fBpam\&.conf\fR(4) configuration\&. Thus ConsoleKit can be -used as a utmp/wtmp replacement since it stores a superset of the information -as in the utmp/wtmp database\&. -.PP -The ConsoleKit database is stored in the file -\fB/var/run/ConsoleKit/database\fR\&. It stores information about -active Seats, Sessions, and the current SessionLeader\&. -.SH "OPTIONS" -.PP -The following options are supported: -.sp -.ne 2 -.mk -\fB-\fB-debug\fR\fR -.in +24n -.rt -Enable debug output\&. -.sp -.sp 1 -.in -24n -.sp -.ne 2 -.mk -\fB-\fBh\fR, -\fB-help\fR\fR -.in +24n -.rt -Display detailed usage message\&. -.sp -.sp 1 -.in -24n -.sp -.ne 2 -.mk -\fB-\fB-no-daemon\fR\fR -.in +24n -.rt -Avoid starting \fBconsole-kit-daemon\fR as a daemon\&. Useful for debugging\&. -.sp -.sp 1 -.in -24n -.sp -.ne 2 -.mk -\fB-\fB-timed-exit\fR\fR -.in +24n -.rt -Exit after 30 seconds\&. Useful for debugging\&. -.sp -.sp 1 -.in -24n -.SH "ENVIRONMENT VARIABLES" -.PP -See -\fBenviron\fR(5) -for descriptions of environment variables\&. -.sp -.ne 2 -.mk -\fB\fBDISPLAY\fR\fR -.sp .6 -.in +4 -This environment variable corresponds to the Xserver display value associated -with the ConsoleKit session\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fB\fBXDG_SESSION_COOKIE\fR\fR -.sp .6 -.in +4 -ConsoleKit provides this environment variable to the session leader\&. The -session leader is expected to ensure this is set for the session process -started\&. It contains a UUID used to tie the processes to the session\&. This is -used to support user switching on displays that support it (currently only -graphical VT displays on the console)\&. -.sp -.sp 1 -.in -4 -.PP -The following environment variables are set when \fBconsole-kit-daemon\fR -runs the \fBrun-seat\&.d\fR scripts\&. These values correspond to those -values returned by the \fBck-list-session\fR(1) utility\&. -.sp -.ne 2 -.mk -\fB\fBCK_SESSION_SEAT_ID\fR\fR -.sp .6 -.in +4 -The seat ID associated with the session\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fB\fBCK_SESSION_SEAT_UID\fR\fR -.sp .6 -.in +4 -The user id associated with the session -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fB\fBCK_SESSION_DISPLAY_DEVICE\fR\fR -.sp .6 -.in +4 -The display device associated with the session\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fB\fBCK_SESSION_X11_DISPLAY_DEVICE\fR\fR -.sp .6 -.in +4 -The value of the display device that the X11 display for the session is -connected to\&. If there is no x11-display set, then this value is undefined\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fB\fBCK_SESSION_X11_DISPLAY\fR\fR -.sp .6 -.in +4 -The value of the X11 DISPLAY environment variable for this session if one is -present\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fB\fBCK_SESSION_REMOTE_HOST_NAME\fR\fR -.sp .6 -.in +4 -If the session is not local, the value is the host name associated with the -session\&. If the session is local, the value is empty\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fB\fBCK_SESSION_IS_ACTIVE\fR\fR -.sp .6 -.in +4 -The value is "TRUE" if the session is active on the seat to which it -is attached, and "FALSE" otherwise\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fB\fBCK_SESSION_IS_LOCAL\fR\fR -.sp .6 -.in +4 -The value is "TRUE" if the session is local, and "FALSE" -if remote\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fB\fBCK_SESSION_IS_DYNAMIC\fR\fR -.sp .6 -.in +4 -The value is "TRUE" if the session was started with -\fBck-seat-tool\fR, and "FALSE" otherwise\&. -.sp -.sp 1 -.in -4 -.SH "EXTENDED DESCRIPTION" -.SS "ConsoleKit Seat Configuration" -.PP -ConsoleKit seat configuration files are located in the -/etc/ConsoleKit/seats\&.d directory\&. Each seat -configuration file ends with the \fB\&.seat\fR suffix\&. ConsoleKit -provides a default seat file named \fB00-primary\&.seat\fR\&. -Additional seat configuration files may be added\&. These files are in standard -INI format\&. -.PP -The settings below are in -"group/key=\fIdefault_value\fR" format, and show -the default values of the \fB00-primary\&.seat\fR file\&. For -example, to specify a different "Seat Entry/Name" value, you would -modify the this file so it contains these lines: -.PP -.nf -[Seat Entry] -[\&.\&.\&.] -Name=Customized seat name -.fi -.PP -The following keys are supported for configuring ConsoleKit seats: -.sp -.ne 2 -.mk -\fBSeat Entry/Version=1\&.0\fR -.sp .6 -.in +4 -Version number of the seat file\&. This specifies the version number of the -configuration file format used\&. Currently only the value "1\&.0" is -supported\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fBSeat Entry/Name=Primary seat\fR -.sp .6 -.in +4 -Name of the seat\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fBSeat Entry/ID=StaticSeat\fR -.sp .6 -.in +4 -Specifies the unique ID of the seat\&. If the value is NULL, then -\fBconsole-kit-daemon\fR will provide a value\&. The ID may only contain the -ASCII characters [A-Z][a=z][0-9]_"\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fBSeat Entry/Hidden=false\fR -.sp .6 -.in +4 -If this value is set to "false", then ConsoleKit will create this -seat\&. Otherwise, the seat will not be created\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fBSeat Entry/Devices\fR -.sp .6 -.in +4 -This value is not currently supported\&. In the future, it is planned that -ConsoleKit will provide the ability to manage how device permissions are -managed, and this key is a placeholder\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fBSeat Entry/Sessions=Local\fR -.sp .6 -.in +4 -List of sessions to start on the seat, separated by the ";" -character\&. Each session must be defined in a ConsoleKit session configuration -file named -\fB/etc/ConsoleKit/sessions\&.d/\fIsessions\fR\&.session\fR where \fIsessions\fR is the value of this key\&. -.sp -.sp 1 -.in -4 -.SS "ConsoleKit Session Configuration" -.PP -ConsoleKit session configuration files are located in the -/etc/ConsoleKit/sessions\&.d directory\&. Each session -configuration file ends with the \fB\&.session\fR suffix\&. -Additional seat configuration files may be added\&. These files are in standard -INI format\&. -.PP -The settings below are in -"group/key" format, so to specify the "Session Entry/Name" -value, the file shoulld contain these lines: -.PP -.nf -[Session Entry] -[\&.\&.\&.] -Name=Customized Session -.fi -.PP -The following keys are supported for configuring ConsoleKit sessions: -.sp -.ne 2 -.mk -\fBSession Entry/Name\fR -.sp .6 -.in +4 -Unique name of the session\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fBSession Entry/Type\fR -.sp .6 -.in +4 -Type of the session -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fBSession Entry/Description\fR -.sp .6 -.in +4 -Description of the session\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fBSession Entry/DisplayTemplate\fR -.sp .6 -.in +4 -This specifies the display type to be used with the session\&. This corresponds -to the file -\fB/etc/ConsoleKit/displays\&.d/\fIdisplay_template\fR\&.display\fR -where \fIdisplay_template\fR is the value of this key\&. -.sp -.sp 1 -.in -4 -.sp -.ne 2 -.mk -\fBLocal/\fIvariable\fR\fR -.sp .6 -.in +4 -The ConsoleKit display configuration file associated with the -"Entry/DisplayTemplate" key specifies the command to run to launch -the display\&. This command is defined in the ConsoleKit display configuration -file in the key "X11/Exec"\&. This command can include variables that -begin with the "$" character, such as "$display"\&. The -values to be used for these variables can be defined in this section\&. So if -the session configuration file contains the value -"Local/display=:0", this will cause the variable used when launching -the command to be replaced with the value "0"\&. -.sp -.sp 1 -.in -4 -.SS "ConsoleKit System Restart and Stop" -.PP -\fBconsole-kit-daemon\fR provides D-Bus interfaces that will restart or stop -the system\&. When \fBconsole-kit-daemon\fR receives a D-Bus request to restart -the system, it will run the -\fB/usr/lib/ConsoleKit/scripts/ck-system-restart\fR script if -the user has privilege to do this operation\&. When \fBconsole-kit-daemon\fR -receives a D-Bus request to stop the system, it will run the -\fB/usr/lib/ConsoleKit/scripts/ck-system-stop\fR script if the -user has privilege to do this operation\&. -.SH "EXAMPLES" -.PP -\fBExample 1: To start the ConsoleKit daemon\fR -.PP -.PP -.nf -example% \fBconsole-kit-daemon\fR -.fi -.PP -\fBExample 2: To configure ConsoleKit to start multiple sessions on a single seat\fR -.PP -To start two local displays: DISPLAY ":0" on vt7 and DISPLAY -":1" on "vt8", -edit the \fB00-primary\&.seat\fR file as follows: -.PP -.nf -[Seat Entry] -Version=1\&.0 -Name=Primary seat -Description=start static displays :0 on vt7 and :1 on vt8 -Hidden=false -Devices= -Sessions=Local;Local2; -.fi -.PP -Then, in addition to the original -\fB/etc/ConsoleKit/sessions\&.d/Local\&.session\fR file, add the -following \fB/etc/ConsoleKit/sessions\&.d/Local2\&.session\fR file: -.PP -.nf -[Session Entry] -Name=Local -Type=LoginWindow -Description=Local Login Screen -DisplayTemplate=Local - -[Local] -display=:1 -vt=/dev/vt/8 -.fi -.PP -.SH "SEE ALSO" -.PP -More information can be found at: -.PP -\fBhttps://github\&.com/ConsoleKit2/ConsoleKit2\fR -.PP -\fBck-history\fR(1), -\fBck-launch-session\fR(1), -\fBck-list-sessions\fR(1), -\fBsvcadm\fR(1m), -\fBenviron\fR(5), -\fBsmf\fR(5), -\fBconsole\fR(4) -.SH "NOTES" -.PP -Brian Cameron, Sun Microsystems Inc\&., 2009\&. -Copyright (c) 2009 by Sun Microsystems, Inc\&. -.PP -Some of the documentation in this manpage is from the ConsoleKit documentation -written by William Jon McCann\&. -...\" created by instant / solbook-to-man, Sat 24 Oct 2009, 14:10 -...\" LSARC 2009/432 ConsoleKit diff --git a/doc/console-kit-daemon.1m.in b/doc/console-kit-daemon.1m.in new file mode 100644 index 0000000..edecf0e --- /dev/null +++ b/doc/console-kit-daemon.1m.in @@ -0,0 +1,472 @@ +'\" te +.TH console-kit-daemon 1m "24 Oct 2009" "SunOS 5.11" "Maintenance Commands" +.SH "NAME" +console-kit-daemon \- ConsoleKit daemon +.SH "SYNOPSIS" +.PP +\fBconsole-kit-daemon\fR [-\fB-debug\fR] [-\fB-help\fR] [-\fB-no-daemon\fR] [-\fB-timed-exit\fR] +.SH "DESCRIPTION" +.PP +\fBconsole-kit-daemon\fR is a service for defining and tracking users, login +sessions and seats\&. It provides interfaces for managing switching sessions +and session migration when using mechanisms such as Virtual Terminals (VT)\&. +ConsoleKit provides a number of interfaces to specify what displays are managed +by the display manager, and how\&. +.PP +ConsoleKit maintains a database of which users are logged into the system\&. +ConsoleKit groups sessions by seats which represent a set of hardware (usually +a keyboard and mouse)\&. Other process communicate with ConsoleKit via D-Bus\&. +.PP +One session leader process is responsible for asking \fBconsole-kit-daemon\fR +to open a new session\&. In the typical case, the session leader would be a +ConsoleKit enabled display manager, such as GDM\&. This leader makes a +connection to the D-Bus system bus and asks \fBconsole-kit-daemon\fR to open a +session when needed\&. +.PP +If the operation succeeds, \fBconsole-kit-daemon\fR will return a cookie to the +session leader\&. The session leader should store this variable in the +environment as XDG_SESSION_COOKIE so that it may be shared with its child +processes\&. The environment variable contains the UUID used to tie processes to +a session\&. +.PP +At this point the session will be registered with ConsoleKit and a particular +set of information about the session will be stored along with it\&. +.PP +The Session will remain open until the Session Leader disconnects from the +D-Bus system bus\&. The session will be removed from its seat, and deregistered\&. +.PP +Various other programs need to know information about running user sessions, +such as the Fast User Switch Applet and other mechanisms for switching the +console to use a different VT display\&. Such programs make use of ConsoleKit +interfaces to determine if user switching is supported and to manage the +switching of different sessions on the same seat\&. +.PP +ConsoleKit provides a pam_ck_connector so that non-graphical logins (e\&.g\&. +telnet, ssh, etc\&.) are registered with ConsoleKit\&. This functionality works +if this PAM module is enabled in the +\fBpam\&.conf\fR(4) configuration\&. Thus ConsoleKit can be +used as a utmp/wtmp replacement since it stores a superset of the information +as in the utmp/wtmp database\&. +.PP +The ConsoleKit database is stored in the file +\fB@RUNDIR@/ConsoleKit/database\fR\&. It stores information about +active Seats, Sessions, and the current SessionLeader\&. +.SH "OPTIONS" +.PP +The following options are supported: +.sp +.ne 2 +.mk +\fB-\fB-debug\fR\fR +.in +24n +.rt +Enable debug output\&. +.sp +.sp 1 +.in -24n +.sp +.ne 2 +.mk +\fB-\fBh\fR, -\fB-help\fR\fR +.in +24n +.rt +Display detailed usage message\&. +.sp +.sp 1 +.in -24n +.sp +.ne 2 +.mk +\fB-\fB-no-daemon\fR\fR +.in +24n +.rt +Avoid starting \fBconsole-kit-daemon\fR as a daemon\&. Useful for debugging\&. +.sp +.sp 1 +.in -24n +.sp +.ne 2 +.mk +\fB-\fB-timed-exit\fR\fR +.in +24n +.rt +Exit after 30 seconds\&. Useful for debugging\&. +.sp +.sp 1 +.in -24n +.SH "ENVIRONMENT VARIABLES" +.PP +See +\fBenviron\fR(5) +for descriptions of environment variables\&. +.sp +.ne 2 +.mk +\fB\fBDISPLAY\fR\fR +.sp .6 +.in +4 +This environment variable corresponds to the Xserver display value associated +with the ConsoleKit session\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fB\fBXDG_SESSION_COOKIE\fR\fR +.sp .6 +.in +4 +ConsoleKit provides this environment variable to the session leader\&. The +session leader is expected to ensure this is set for the session process +started\&. It contains a UUID used to tie the processes to the session\&. This is +used to support user switching on displays that support it (currently only +graphical VT displays on the console)\&. +.sp +.sp 1 +.in -4 +.PP +The following environment variables are set when \fBconsole-kit-daemon\fR +runs the \fBrun-seat\&.d\fR scripts\&. These values correspond to those +values returned by the \fBck-list-session\fR(1) utility\&. +.sp +.ne 2 +.mk +\fB\fBCK_SESSION_SEAT_ID\fR\fR +.sp .6 +.in +4 +The seat ID associated with the session\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fB\fBCK_SESSION_SEAT_UID\fR\fR +.sp .6 +.in +4 +The user id associated with the session +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fB\fBCK_SESSION_DISPLAY_DEVICE\fR\fR +.sp .6 +.in +4 +The display device associated with the session\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fB\fBCK_SESSION_X11_DISPLAY_DEVICE\fR\fR +.sp .6 +.in +4 +The value of the display device that the X11 display for the session is +connected to\&. If there is no x11-display set, then this value is undefined\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fB\fBCK_SESSION_X11_DISPLAY\fR\fR +.sp .6 +.in +4 +The value of the X11 DISPLAY environment variable for this session if one is +present\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fB\fBCK_SESSION_REMOTE_HOST_NAME\fR\fR +.sp .6 +.in +4 +If the session is not local, the value is the host name associated with the +session\&. If the session is local, the value is empty\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fB\fBCK_SESSION_IS_ACTIVE\fR\fR +.sp .6 +.in +4 +The value is "TRUE" if the session is active on the seat to which it +is attached, and "FALSE" otherwise\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fB\fBCK_SESSION_IS_LOCAL\fR\fR +.sp .6 +.in +4 +The value is "TRUE" if the session is local, and "FALSE" +if remote\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fB\fBCK_SESSION_IS_DYNAMIC\fR\fR +.sp .6 +.in +4 +The value is "TRUE" if the session was started with +\fBck-seat-tool\fR, and "FALSE" otherwise\&. +.sp +.sp 1 +.in -4 +.SH "EXTENDED DESCRIPTION" +.SS "ConsoleKit Seat Configuration" +.PP +ConsoleKit seat configuration files are located in the +/etc/ConsoleKit/seats\&.d directory\&. Each seat +configuration file ends with the \fB\&.seat\fR suffix\&. ConsoleKit +provides a default seat file named \fB00-primary\&.seat\fR\&. +Additional seat configuration files may be added\&. These files are in standard +INI format\&. +.PP +The settings below are in +"group/key=\fIdefault_value\fR" format, and show +the default values of the \fB00-primary\&.seat\fR file\&. For +example, to specify a different "Seat Entry/Name" value, you would +modify the this file so it contains these lines: +.PP +.nf +[Seat Entry] +[\&.\&.\&.] +Name=Customized seat name +.fi +.PP +The following keys are supported for configuring ConsoleKit seats: +.sp +.ne 2 +.mk +\fBSeat Entry/Version=1\&.0\fR +.sp .6 +.in +4 +Version number of the seat file\&. This specifies the version number of the +configuration file format used\&. Currently only the value "1\&.0" is +supported\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fBSeat Entry/Name=Primary seat\fR +.sp .6 +.in +4 +Name of the seat\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fBSeat Entry/ID=StaticSeat\fR +.sp .6 +.in +4 +Specifies the unique ID of the seat\&. If the value is NULL, then +\fBconsole-kit-daemon\fR will provide a value\&. The ID may only contain the +ASCII characters [A-Z][a=z][0-9]_"\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fBSeat Entry/Hidden=false\fR +.sp .6 +.in +4 +If this value is set to "false", then ConsoleKit will create this +seat\&. Otherwise, the seat will not be created\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fBSeat Entry/Devices\fR +.sp .6 +.in +4 +This value is not currently supported\&. In the future, it is planned that +ConsoleKit will provide the ability to manage how device permissions are +managed, and this key is a placeholder\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fBSeat Entry/Sessions=Local\fR +.sp .6 +.in +4 +List of sessions to start on the seat, separated by the ";" +character\&. Each session must be defined in a ConsoleKit session configuration +file named +\fB/etc/ConsoleKit/sessions\&.d/\fIsessions\fR\&.session\fR where \fIsessions\fR is the value of this key\&. +.sp +.sp 1 +.in -4 +.SS "ConsoleKit Session Configuration" +.PP +ConsoleKit session configuration files are located in the +/etc/ConsoleKit/sessions\&.d directory\&. Each session +configuration file ends with the \fB\&.session\fR suffix\&. +Additional seat configuration files may be added\&. These files are in standard +INI format\&. +.PP +The settings below are in +"group/key" format, so to specify the "Session Entry/Name" +value, the file shoulld contain these lines: +.PP +.nf +[Session Entry] +[\&.\&.\&.] +Name=Customized Session +.fi +.PP +The following keys are supported for configuring ConsoleKit sessions: +.sp +.ne 2 +.mk +\fBSession Entry/Name\fR +.sp .6 +.in +4 +Unique name of the session\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fBSession Entry/Type\fR +.sp .6 +.in +4 +Type of the session +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fBSession Entry/Description\fR +.sp .6 +.in +4 +Description of the session\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fBSession Entry/DisplayTemplate\fR +.sp .6 +.in +4 +This specifies the display type to be used with the session\&. This corresponds +to the file +\fB/etc/ConsoleKit/displays\&.d/\fIdisplay_template\fR\&.display\fR +where \fIdisplay_template\fR is the value of this key\&. +.sp +.sp 1 +.in -4 +.sp +.ne 2 +.mk +\fBLocal/\fIvariable\fR\fR +.sp .6 +.in +4 +The ConsoleKit display configuration file associated with the +"Entry/DisplayTemplate" key specifies the command to run to launch +the display\&. This command is defined in the ConsoleKit display configuration +file in the key "X11/Exec"\&. This command can include variables that +begin with the "$" character, such as "$display"\&. The +values to be used for these variables can be defined in this section\&. So if +the session configuration file contains the value +"Local/display=:0", this will cause the variable used when launching +the command to be replaced with the value "0"\&. +.sp +.sp 1 +.in -4 +.SS "ConsoleKit System Restart and Stop" +.PP +\fBconsole-kit-daemon\fR provides D-Bus interfaces that will restart or stop +the system\&. When \fBconsole-kit-daemon\fR receives a D-Bus request to restart +the system, it will run the +\fB/usr/lib/ConsoleKit/scripts/ck-system-restart\fR script if +the user has privilege to do this operation\&. When \fBconsole-kit-daemon\fR +receives a D-Bus request to stop the system, it will run the +\fB/usr/lib/ConsoleKit/scripts/ck-system-stop\fR script if the +user has privilege to do this operation\&. +.SH "EXAMPLES" +.PP +\fBExample 1: To start the ConsoleKit daemon\fR +.PP +.PP +.nf +example% \fBconsole-kit-daemon\fR +.fi +.PP +\fBExample 2: To configure ConsoleKit to start multiple sessions on a single seat\fR +.PP +To start two local displays: DISPLAY ":0" on vt7 and DISPLAY +":1" on "vt8", +edit the \fB00-primary\&.seat\fR file as follows: +.PP +.nf +[Seat Entry] +Version=1\&.0 +Name=Primary seat +Description=start static displays :0 on vt7 and :1 on vt8 +Hidden=false +Devices= +Sessions=Local;Local2; +.fi +.PP +Then, in addition to the original +\fB/etc/ConsoleKit/sessions\&.d/Local\&.session\fR file, add the +following \fB/etc/ConsoleKit/sessions\&.d/Local2\&.session\fR file: +.PP +.nf +[Session Entry] +Name=Local +Type=LoginWindow +Description=Local Login Screen +DisplayTemplate=Local + +[Local] +display=:1 +vt=/dev/vt/8 +.fi +.PP +.SH "SEE ALSO" +.PP +More information can be found at: +.PP +\fBhttps://github\&.com/ConsoleKit2/ConsoleKit2\fR +.PP +\fBck-history\fR(1), +\fBck-launch-session\fR(1), +\fBck-list-sessions\fR(1), +\fBsvcadm\fR(1m), +\fBenviron\fR(5), +\fBsmf\fR(5), +\fBconsole\fR(4) +.SH "NOTES" +.PP +Brian Cameron, Sun Microsystems Inc\&., 2009\&. +Copyright (c) 2009 by Sun Microsystems, Inc\&. +.PP +Some of the documentation in this manpage is from the ConsoleKit documentation +written by William Jon McCann\&. +...\" created by instant / solbook-to-man, Sat 24 Oct 2009, 14:10 +...\" LSARC 2009/432 ConsoleKit diff --git a/src/Makefile.am b/src/Makefile.am index 80e1304..e4c5eb1 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -20,6 +20,7 @@ AM_CFLAGS = \ -DDATADIR=\""$(datadir)"\" \ -DSYSCONFDIR=\""$(sysconfdir)"\" \ -DLOCALSTATEDIR=\""$(localstatedir)"\" \ + -DRUNDIR=\""$(RUNDIR)"\" \ -DCONSOLE_KIT_PID_FILE=\""$(CONSOLE_KIT_PID_FILE)"\" \ -DLOCALEDIR=\"$(localedir)\" \ $(WARN_CFLAGS) \ @@ -211,8 +212,8 @@ test_tty_idle_monitor_LDADD = \ test_inhibit_CFLAGS = \ $(AM_CFLAGS) \ - -ULOCALSTATEDIR \ - -DLOCALSTATEDIR=\"/tmp\" \ + -URUNDIR \ + -DRUNDIR=\"/tmp\" \ $(NULL) test_inhibit_SOURCES = \ @@ -251,5 +252,5 @@ install-data-local: -mkdir -p $(DESTDIR)$(prefix)/lib/ConsoleKit/run-session.d -mkdir -p $(DESTDIR)$(sysconfdir)/ConsoleKit/run-seat.d -mkdir -p $(DESTDIR)$(prefix)/lib/ConsoleKit/run-seat.d - -mkdir -p $(DESTDIR)$(localstatedir)/run/ConsoleKit + -mkdir -p $(DESTDIR)$(RUNDIR)/ConsoleKit -mkdir -p $(DESTDIR)$(localstatedir)/log/ConsoleKit diff --git a/src/ck-inhibit.c b/src/ck-inhibit.c index 6a87aa6..3395f95 100644 --- a/src/ck-inhibit.c +++ b/src/ck-inhibit.c @@ -216,19 +216,19 @@ create_inhibit_base_directory (void) gint res; errno = 0; - res = g_mkdir_with_parents (LOCALSTATEDIR "/run/ConsoleKit/inhibit", + res = g_mkdir_with_parents (RUNDIR "/ConsoleKit/inhibit", S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); if (res < 0) { g_warning ("Unable to create directory %s (%s)", - LOCALSTATEDIR "/run/ConsoleKit/inhibit", + RUNDIR "/ConsoleKit/inhibit", g_strerror (errno)); return FALSE; } - if (g_chmod (LOCALSTATEDIR "/run/ConsoleKit/inhibit", 0755) == -1) { + if (g_chmod (RUNDIR "/ConsoleKit/inhibit", 0755) == -1) { g_warning ("Failed to change permissions for %s", - LOCALSTATEDIR "/run/ConsoleKit/inhibit"); + RUNDIR "/ConsoleKit/inhibit"); } return TRUE; @@ -391,8 +391,8 @@ get_named_pipe_path (const char* who) errno = 0; - path = g_strdup_printf ("%s/run/ConsoleKit/inhibit/inhibit.XXXXXX.pipe", - LOCALSTATEDIR); + path = g_strdup_printf ("%s/ConsoleKit/inhibit/inhibit.XXXXXX.pipe", + RUNDIR); /* check that we got a string */ if (path == NULL) { diff --git a/src/ck-manager.c b/src/ck-manager.c index e1bf022..da1cce6 100644 --- a/src/ck-manager.c +++ b/src/ck-manager.c @@ -202,8 +202,8 @@ ck_manager_dump (CkManager *manager) { int fd; int res; - const char *filename = LOCALSTATEDIR "/run/ConsoleKit/database"; - const char *filename_tmp = LOCALSTATEDIR "/run/ConsoleKit/database~"; + const char *filename = RUNDIR "/ConsoleKit/database"; + const char *filename_tmp = RUNDIR "/ConsoleKit/database~"; if (manager == NULL) { g_warning ("ck_manager_dump: manager == NULL"); @@ -212,16 +212,16 @@ ck_manager_dump (CkManager *manager) /* always make sure we have a directory */ errno = 0; - res = g_mkdir_with_parents (LOCALSTATEDIR "/run/ConsoleKit", + res = g_mkdir_with_parents (RUNDIR "/ConsoleKit", S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); if (res < 0) { g_warning ("Unable to create directory %s (%s)", - LOCALSTATEDIR "/run/ConsoleKit", + RUNDIR "/ConsoleKit", g_strerror (errno)); return; } - g_debug ("ck_manager_dump: %s/run/ConsoleKit folder created", LOCALSTATEDIR); + g_debug ("ck_manager_dump: %s/ConsoleKit folder created", RUNDIR); fd = g_open (filename_tmp, O_CREAT | O_WRONLY, 0644); if (fd == -1) { diff --git a/src/main.c b/src/main.c index 40d4e02..3137bf9 100644 --- a/src/main.c +++ b/src/main.c @@ -186,7 +186,7 @@ delete_inhibit_files (void) { GDir *dir; GError *error = NULL; - const gchar *INHIBIT_DIRECTORY = LOCALSTATEDIR "/run/ConsoleKit/inhibit"; + const gchar *INHIBIT_DIRECTORY = RUNDIR "/ConsoleKit/inhibit"; const gchar *name; g_debug ("Cleaning up %s", INHIBIT_DIRECTORY); diff --git a/tools/70-udev-acl.rules b/tools/70-udev-acl.rules deleted file mode 100644 index 2dac283..0000000 --- a/tools/70-udev-acl.rules +++ /dev/null @@ -1,76 +0,0 @@ -# do not edit this file, it will be overwritten on update - -# Do not use TAG+="udev-acl" outside of this file. This variable is private to -# udev-acl of this udev release and may be replaced at any time. - -ENV{MAJOR}=="", GOTO="acl_end" -ACTION=="remove", GOTO="acl_apply" - -# systemd replaces udev-acl entirely, skip if active -TEST=="/sys/fs/cgroup/systemd", TAG=="uaccess", GOTO="acl_end" - -# PTP/MTP protocol devices, cameras, portable media players -SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:060101:*", TAG+="udev-acl" - -# digicams with proprietary protocol -ENV{ID_GPHOTO2}=="*?", TAG+="udev-acl" - -# SCSI and USB scanners -ENV{libsane_matched}=="yes", TAG+="udev-acl" - -# HPLIP devices (necessary for ink level check and HP tool maintenance) -ENV{ID_HPLIP}=="1", TAG+="udev-acl" - -# optical drives -SUBSYSTEM=="block", ENV{ID_CDROM}=="1", TAG+="udev-acl" -SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", TAG+="udev-acl" - -# sound devices -SUBSYSTEM=="sound", TAG+="udev-acl" - -# ffado is an userspace driver for firewire sound cards -SUBSYSTEM=="firewire", ENV{ID_FFADO}=="1", TAG+="udev-acl" - -# webcams, frame grabber, TV cards -SUBSYSTEM=="video4linux", TAG+="udev-acl" -SUBSYSTEM=="dvb", TAG+="udev-acl" - -# IIDC devices: industrial cameras and some webcams -SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x00010*", TAG+="udev-acl" -SUBSYSTEM=="firewire", ATTR{units}=="*0x00b09d:0x00010*", TAG+="udev-acl" -# AV/C devices: camcorders, set-top boxes, TV sets, audio devices, and more -SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x010001*", TAG+="udev-acl" -SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x014001*", TAG+="udev-acl" - -# DRI video devices -SUBSYSTEM=="drm", KERNEL=="card*", TAG+="udev-acl" - -# KVM -SUBSYSTEM=="misc", KERNEL=="kvm", TAG+="udev-acl" - -# smart-card readers -ENV{ID_SMARTCARD_READER}=="*?", TAG+="udev-acl" - -# PDA devices -ENV{ID_PDA}=="*?", TAG+="udev-acl" - -# Programmable remote control -ENV{ID_REMOTE_CONTROL}=="1", TAG+="udev-acl" - -# joysticks -SUBSYSTEM=="input", ENV{ID_INPUT_JOYSTICK}=="?*", TAG+="udev-acl" - -# color measurement devices -ENV{COLOR_MEASUREMENT_DEVICE}=="*?", TAG+="udev-acl" - -# DDC/CI device, usually high-end monitors such as the DreamColor -ENV{DDC_DEVICE}=="*?", TAG+="udev-acl" - -# media player raw devices (for user-mode drivers, Android SDK, etc.) -SUBSYSTEM=="usb", ENV{ID_MEDIA_PLAYER}=="?*", TAG+="udev-acl" - -# apply ACL for all locally logged in users -LABEL="acl_apply", TAG=="udev-acl", TEST=="/var/run/ConsoleKit/database", \ - RUN+="udev-acl --action=$env{ACTION} --device=$env{DEVNAME}" - -LABEL="acl_end" diff --git a/tools/70-udev-acl.rules.in b/tools/70-udev-acl.rules.in new file mode 100644 index 0000000..de6720e --- /dev/null +++ b/tools/70-udev-acl.rules.in @@ -0,0 +1,76 @@ +# do not edit this file, it will be overwritten on update + +# Do not use TAG+="udev-acl" outside of this file. This variable is private to +# udev-acl of this udev release and may be replaced at any time. + +ENV{MAJOR}=="", GOTO="acl_end" +ACTION=="remove", GOTO="acl_apply" + +# systemd replaces udev-acl entirely, skip if active +TEST=="/sys/fs/cgroup/systemd", TAG=="uaccess", GOTO="acl_end" + +# PTP/MTP protocol devices, cameras, portable media players +SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:060101:*", TAG+="udev-acl" + +# digicams with proprietary protocol +ENV{ID_GPHOTO2}=="*?", TAG+="udev-acl" + +# SCSI and USB scanners +ENV{libsane_matched}=="yes", TAG+="udev-acl" + +# HPLIP devices (necessary for ink level check and HP tool maintenance) +ENV{ID_HPLIP}=="1", TAG+="udev-acl" + +# optical drives +SUBSYSTEM=="block", ENV{ID_CDROM}=="1", TAG+="udev-acl" +SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", TAG+="udev-acl" + +# sound devices +SUBSYSTEM=="sound", TAG+="udev-acl" + +# ffado is an userspace driver for firewire sound cards +SUBSYSTEM=="firewire", ENV{ID_FFADO}=="1", TAG+="udev-acl" + +# webcams, frame grabber, TV cards +SUBSYSTEM=="video4linux", TAG+="udev-acl" +SUBSYSTEM=="dvb", TAG+="udev-acl" + +# IIDC devices: industrial cameras and some webcams +SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x00010*", TAG+="udev-acl" +SUBSYSTEM=="firewire", ATTR{units}=="*0x00b09d:0x00010*", TAG+="udev-acl" +# AV/C devices: camcorders, set-top boxes, TV sets, audio devices, and more +SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x010001*", TAG+="udev-acl" +SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x014001*", TAG+="udev-acl" + +# DRI video devices +SUBSYSTEM=="drm", KERNEL=="card*", TAG+="udev-acl" + +# KVM +SUBSYSTEM=="misc", KERNEL=="kvm", TAG+="udev-acl" + +# smart-card readers +ENV{ID_SMARTCARD_READER}=="*?", TAG+="udev-acl" + +# PDA devices +ENV{ID_PDA}=="*?", TAG+="udev-acl" + +# Programmable remote control +ENV{ID_REMOTE_CONTROL}=="1", TAG+="udev-acl" + +# joysticks +SUBSYSTEM=="input", ENV{ID_INPUT_JOYSTICK}=="?*", TAG+="udev-acl" + +# color measurement devices +ENV{COLOR_MEASUREMENT_DEVICE}=="*?", TAG+="udev-acl" + +# DDC/CI device, usually high-end monitors such as the DreamColor +ENV{DDC_DEVICE}=="*?", TAG+="udev-acl" + +# media player raw devices (for user-mode drivers, Android SDK, etc.) +SUBSYSTEM=="usb", ENV{ID_MEDIA_PLAYER}=="?*", TAG+="udev-acl" + +# apply ACL for all locally logged in users +LABEL="acl_apply", TAG=="udev-acl", TEST=="@RUNDIR@/ConsoleKit/database", \ + RUN+="udev-acl --action=$env{ACTION} --device=$env{DEVNAME}" + +LABEL="acl_end" diff --git a/tools/Makefile.am b/tools/Makefile.am index 774b4ed..5138e03 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -45,6 +45,7 @@ AM_CFLAGS = \ -DDATADIR=\""$(datadir)"\" \ -DSYSCONFDIR=\""$(sysconfdir)"\" \ -DLOCALSTATEDIR=\""$(localstatedir)"\" \ + -DRUNDIR=\""$(RUNDIR)"\" \ -DLOCALEDIR=\"$(localedir)\" \ $(HISTORY_CFLAGS) \ $(WARN_CFLAGS) \ diff --git a/tools/udev-acl.c b/tools/udev-acl.c index 4f49f04..5e394fb 100644 --- a/tools/udev-acl.c +++ b/tools/udev-acl.c @@ -132,7 +132,7 @@ static GSList *uids_with_local_active_session(const char *own_id) GKeyFile *keyfile; keyfile = g_key_file_new(); - if (g_key_file_load_from_file(keyfile, "/var/run/ConsoleKit/database", 0, NULL)) { + if (g_key_file_load_from_file(keyfile, RUNDIR "/ConsoleKit/database", 0, NULL)) { gchar **groups; groups = g_key_file_get_groups(keyfile, NULL); -- 2.2.1