[Pkg-ltsp-devel] Bug#471793: ldm doesn't handle pam logouts properly

Vagrant Cascadian vagrant at freegeek.org
Wed Aug 20 23:20:57 UTC 2008


tags 471793 pending
thanks

attached is a patch which should make it possible for pam logouts to be
handled properly, although it preserves the default behavior of previous
versions. setting LDM_FORCE_LOGOUT=false in lts.conf should allow pam
logouts to work properly. also requires the server having openssh-server
5.1.

=== added file 'K98-force-logout'
--- K98-force-logout	1970-01-01 00:00:00 +0000
+++ K98-force-logout	2008-08-20 22:38:10 +0000
@@ -0,0 +1,8 @@
+# handle logout cleanly, so that pam logout sessions are properly registered.
+# may only work with version openssh-server 5.1+
+# http://bugs.debian.org/471793
+
+if ! boolean_is_true "$LDM_FORCE_LOGOUT"; then
+    # request the ssh master socket to close
+    ssh -O exit -S ${LDM_SOCKET} ${LDM_SERVER} 
+fi

=== added file 'patches/force-logout.dpatch'
--- patches/force-logout.dpatch	1970-01-01 00:00:00 +0000
+++ patches/force-logout.dpatch	2008-08-20 22:33:08 +0000
@@ -0,0 +1,64 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## force-logout.dpatch by Vagrant Cascadian <vagrant at freegeek.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+
+## DP: allow cleaner process for killing X session through setting
+## DP: LDM_FORCE_LOGOUT=false. preserve previous behavior by default,
+## DP: as this requires openssh-server version 5.1.
+## DP: see: http://bugs.debian.org/471793
+
+ at DPATCH@
+diff -urNad ldm-2.0.6~/screen.d/ldm ldm-2.0.6/screen.d/ldm
+--- ldm-2.0.6~/screen.d/ldm	2008-08-20 13:49:00.000000000 -0700
++++ ldm-2.0.6/screen.d/ldm	2008-08-20 13:49:51.000000000 -0700
+@@ -30,6 +30,10 @@
+     fi
+ fi
+ 
++if [ -z "$LDM_FORCE_LOGOUT" ]; then
++    export LDM_FORCE_LOGOUT=True
++fi
++
+ while :; do
+     #
+     # Server scalability.  If there exists a /usr/share/ltsp/get_hosts file, then
+diff -urNad ldm-2.0.6~/src/ldm.c ldm-2.0.6/src/ldm.c
+--- ldm-2.0.6~/src/ldm.c	2008-08-20 13:48:53.000000000 -0700
++++ ldm-2.0.6/src/ldm.c	2008-08-20 13:49:01.000000000 -0700
+@@ -312,10 +312,12 @@
+         cmd[i++] = "cleanup";
+     }
+ 
+-    cmd[i++] = ";";
+-    cmd[i++] = "kill";
+-    cmd[i++] = "-1";
+-    cmd[i++] = "$PPID";
++    if(ldminfo.force_logout) {
++        cmd[i++] = ";";
++        cmd[i++] = "kill";
++        cmd[i++] = "-1";
++        cmd[i++] = "$PPID";
++    }
+     cmd[i++] = NULL;
+ 
+     xsessionpid = ldm_spawn(cmd);
+@@ -448,6 +450,7 @@
+     scopy(ldminfo.override_port, getenv("SSH_OVERRIDE_PORT"));
+     ldminfo.directx = ldm_getenv_bool("LDM_DIRECTX");
+     ldminfo.autologin = ldm_getenv_bool("LDM_AUTOLOGIN");
++    ldminfo.force_logout = ldm_getenv_bool("LDM_FORCE_LOGOUT");
+     scopy(ldminfo.lang, getenv("LDM_LANGUAGE"));
+     scopy(ldminfo.session, getenv("LDM_SESSION"));
+     if (*ldminfo.session == '\0') {
+diff -urNad ldm-2.0.6~/src/ldm.h ldm-2.0.6/src/ldm.h
+--- ldm-2.0.6~/src/ldm.h	2008-08-20 13:48:53.000000000 -0700
++++ ldm-2.0.6/src/ldm.h	2008-08-20 13:49:01.000000000 -0700
+@@ -24,6 +24,7 @@
+     int     sshfd;
+     int     greeterrfd;
+     int     greeterwfd;
++    int     force_logout;
+     pid_t   sshpid;
+     GPid    xserverpid;
+     GPid    greeterpid;

live well,
  vagrant





More information about the Pkg-ltsp-devel mailing list