Merge lp:~robert-ancell/lightdm/configurable-pam-service into lp:lightdm

Proposed by Robert Ancell
Status: Merged
Merged at revision: 2010
Proposed branch: lp:~robert-ancell/lightdm/configurable-pam-service
Merge into: lp:lightdm
Diff against target: 286 lines (+142/-11)
8 files modified
data/lightdm.conf (+6/-0)
src/lightdm.c (+6/-0)
src/seat.c (+8/-11)
tests/Makefile.am (+4/-0)
tests/scripts/autologin-pam-config.conf (+44/-0)
tests/scripts/login-pam-config.conf (+70/-0)
tests/test-autologin-pam-config (+2/-0)
tests/test-login-pam-config (+2/-0)
To merge this branch: bzr merge lp:~robert-ancell/lightdm/configurable-pam-service
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Approve
Robert Ancell Approve
Review via email: mp+228240@code.launchpad.net

Commit message

Make PAM services configurable

To post a comment you must log in.
Revision history for this message
Robert Ancell (robert-ancell) wrote :

Needs regression tests before landing

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
2010. By Robert Ancell

Add regression tests for PAM configuration

Revision history for this message
Robert Ancell (robert-ancell) :
review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'data/lightdm.conf'
--- data/lightdm.conf 2014-03-12 04:53:33 +0000
+++ data/lightdm.conf 2014-07-27 23:39:55 +0000
@@ -35,6 +35,9 @@
35#35#
36# type = Seat type (xlocal, xremote)36# type = Seat type (xlocal, xremote)
37# xdg-seat = Seat name to set pam_systemd XDG_SEAT variable and name to pass to X server37# xdg-seat = Seat name to set pam_systemd XDG_SEAT variable and name to pass to X server
38# pam-service = PAM service to use for login
39# pam-autologin-service = PAM service to use for autologin
40# pam-greeter-service = PAM service to use for greeters
38# xserver-command = X server command to run (can also contain arguments e.g. X -special-option)41# xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
39# xserver-layout = Layout to pass to X server42# xserver-layout = Layout to pass to X server
40# xserver-config = Config file to pass to X server43# xserver-config = Config file to pass to X server
@@ -73,6 +76,9 @@
73[SeatDefaults]76[SeatDefaults]
74#type=xlocal77#type=xlocal
75#xdg-seat=seat078#xdg-seat=seat0
79#pam-service=lightdm
80#pam-autologin-service=lightdm-autologin
81#pam-greeter-service=lightdm-greeter
76#xserver-command=X82#xserver-command=X
77#xserver-layout=83#xserver-layout=
78#xserver-config=84#xserver-config=
7985
=== modified file 'src/lightdm.c'
--- src/lightdm.c 2014-04-17 04:06:30 +0000
+++ src/lightdm.c 2014-07-27 23:39:55 +0000
@@ -1109,6 +1109,12 @@
1109 config_set_boolean (config_get_instance (), "LightDM", "lock-memory", TRUE);1109 config_set_boolean (config_get_instance (), "LightDM", "lock-memory", TRUE);
1110 if (!config_has_key (config_get_instance (), "SeatDefaults", "type"))1110 if (!config_has_key (config_get_instance (), "SeatDefaults", "type"))
1111 config_set_string (config_get_instance (), "SeatDefaults", "type", "xlocal");1111 config_set_string (config_get_instance (), "SeatDefaults", "type", "xlocal");
1112 if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-service"))
1113 config_set_string (config_get_instance (), "SeatDefaults", "pam-service", "lightdm");
1114 if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-autologin-service"))
1115 config_set_string (config_get_instance (), "SeatDefaults", "pam-autologin-service", "lightdm-autologin");
1116 if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-greeter-service"))
1117 config_set_string (config_get_instance (), "SeatDefaults", "pam-greeter-service", "lightdm-greeter");
1112 if (!config_has_key (config_get_instance (), "SeatDefaults", "xserver-command"))1118 if (!config_has_key (config_get_instance (), "SeatDefaults", "xserver-command"))
1113 config_set_string (config_get_instance (), "SeatDefaults", "xserver-command", "X");1119 config_set_string (config_get_instance (), "SeatDefaults", "xserver-command", "X");
1114 if (!config_has_key (config_get_instance (), "SeatDefaults", "xserver-share"))1120 if (!config_has_key (config_get_instance (), "SeatDefaults", "xserver-share"))
11151121
=== modified file 'src/seat.c'
--- src/seat.c 2014-06-30 05:00:29 +0000
+++ src/seat.c 2014-07-27 23:39:55 +0000
@@ -64,11 +64,6 @@
64 gboolean stopped;64 gboolean stopped;
65};65};
6666
67/* PAM services to use */
68#define GREETER_SERVICE "lightdm-greeter"
69#define USER_SERVICE "lightdm"
70#define AUTOLOGIN_SERVICE "lightdm-autologin"
71
72static void seat_logger_iface_init (LoggerInterface *iface);67static void seat_logger_iface_init (LoggerInterface *iface);
7368
74G_DEFINE_TYPE_WITH_CODE (Seat, seat, G_TYPE_OBJECT,69G_DEFINE_TYPE_WITH_CODE (Seat, seat, G_TYPE_OBJECT,
@@ -1091,7 +1086,7 @@
1091 session = create_guest_session (seat, session_name);1086 session = create_guest_session (seat, session_name);
1092 if (!session)1087 if (!session)
1093 return FALSE;1088 return FALSE;
1094 session_set_pam_service (session, AUTOLOGIN_SERVICE);1089 session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
1095 }1090 }
1096 else1091 else
1097 {1092 {
@@ -1230,7 +1225,7 @@
1230 set_session_env (SESSION (greeter_session));1225 set_session_env (SESSION (greeter_session));
1231 session_set_env (SESSION (greeter_session), "XDG_SESSION_CLASS", "greeter");1226 session_set_env (SESSION (greeter_session), "XDG_SESSION_CLASS", "greeter");
12321227
1233 session_set_pam_service (SESSION (greeter_session), GREETER_SERVICE);1228 session_set_pam_service (SESSION (greeter_session), seat_get_string_property (seat, "pam-greeter-service"));
1234 if (getuid () == 0)1229 if (getuid () == 0)
1235 {1230 {
1236 gchar *greeter_user; 1231 gchar *greeter_user;
@@ -1246,7 +1241,9 @@
1246 session_set_argv (SESSION (greeter_session), argv);1241 session_set_argv (SESSION (greeter_session), argv);
1247 g_strfreev (argv);1242 g_strfreev (argv);
12481243
1249 greeter_set_pam_services (greeter_session, USER_SERVICE, AUTOLOGIN_SERVICE);1244 greeter_set_pam_services (greeter_session,
1245 seat_get_string_property (seat, "pam-service"),
1246 seat_get_string_property (seat, "pam-autologin-service"));
1250 g_signal_connect (greeter_session, "create-session", G_CALLBACK (greeter_create_session_cb), seat);1247 g_signal_connect (greeter_session, "create-session", G_CALLBACK (greeter_create_session_cb), seat);
1251 g_signal_connect (greeter_session, "start-session", G_CALLBACK (greeter_start_session_cb), seat);1248 g_signal_connect (greeter_session, "start-session", G_CALLBACK (greeter_start_session_cb), seat);
12521249
@@ -1483,7 +1480,7 @@
1483 /* Attempt to authenticate them */1480 /* Attempt to authenticate them */
1484 session = create_user_session (seat, username, FALSE);1481 session = create_user_session (seat, username, FALSE);
1485 g_signal_connect (session, "authentication-complete", G_CALLBACK (switch_authentication_complete_cb), seat);1482 g_signal_connect (session, "authentication-complete", G_CALLBACK (switch_authentication_complete_cb), seat);
1486 session_set_pam_service (session, USER_SERVICE);1483 session_set_pam_service (session, seat_get_string_property (seat, "pam-service"));
1487 session_start (session);1484 session_start (session);
14881485
1489 return FALSE;1486 return FALSE;
@@ -1533,7 +1530,7 @@
1533 if (seat->priv->session_to_activate)1530 if (seat->priv->session_to_activate)
1534 g_object_unref (seat->priv->session_to_activate);1531 g_object_unref (seat->priv->session_to_activate);
1535 seat->priv->session_to_activate = g_object_ref (session);1532 seat->priv->session_to_activate = g_object_ref (session);
1536 session_set_pam_service (session, AUTOLOGIN_SERVICE);1533 session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
1537 session_set_display_server (session, display_server);1534 session_set_display_server (session, display_server);
15381535
1539 return display_server_start (display_server);1536 return display_server_start (display_server);
@@ -1658,7 +1655,7 @@
1658 session = create_user_session (seat, autologin_username, TRUE);1655 session = create_user_session (seat, autologin_username, TRUE);
16591656
1660 if (session)1657 if (session)
1661 session_set_pam_service (session, AUTOLOGIN_SERVICE);1658 session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
16621659
1663 /* Load in background if required */1660 /* Load in background if required */
1664 if (autologin_in_background && session)1661 if (autologin_in_background && session)
16651662
=== modified file 'tests/Makefile.am'
--- tests/Makefile.am 2014-06-30 05:00:29 +0000
+++ tests/Makefile.am 2014-07-27 23:39:55 +0000
@@ -20,6 +20,7 @@
20 test-headless \20 test-headless \
21 test-autologin \21 test-autologin \
22 test-autologin-pam \22 test-autologin-pam \
23 test-autologin-pam-config \
23 test-autologin-in-background \24 test-autologin-in-background \
24 test-autologin-guest-in-background \25 test-autologin-guest-in-background \
25 test-autologin-timeout-in-background \26 test-autologin-timeout-in-background \
@@ -37,6 +38,7 @@
37 test-restart-authentication \38 test-restart-authentication \
38 test-cancel-authentication-gobject \39 test-cancel-authentication-gobject \
39 test-login-pam \40 test-login-pam \
41 test-login-pam-config \
40 test-denied \42 test-denied \
41 test-expired \43 test-expired \
42 test-cred-error \44 test-cred-error \
@@ -350,6 +352,7 @@
350 scripts/autologin-in-background.conf \352 scripts/autologin-in-background.conf \
351 scripts/autologin-invalid-greeter.conf \353 scripts/autologin-invalid-greeter.conf \
352 scripts/autologin-pam.conf \354 scripts/autologin-pam.conf \
355 scripts/autologin-pam-config.conf \
353 scripts/autologin-invalid-session.conf \356 scripts/autologin-invalid-session.conf \
354 scripts/autologin-invalid-user.conf \357 scripts/autologin-invalid-user.conf \
355 scripts/autologin-logout.conf \358 scripts/autologin-logout.conf \
@@ -424,6 +427,7 @@
424 scripts/login-new-authtok.conf \427 scripts/login-new-authtok.conf \
425 scripts/login-no-password.conf \428 scripts/login-no-password.conf \
426 scripts/login-pam.conf \429 scripts/login-pam.conf \
430 scripts/login-pam-config.conf \
427 scripts/login-pick-session.conf \431 scripts/login-pick-session.conf \
428 scripts/login-previous-session.conf \432 scripts/login-previous-session.conf \
429 scripts/login-remember-session.conf \433 scripts/login-remember-session.conf \
430434
=== added file 'tests/scripts/autologin-pam-config.conf'
--- tests/scripts/autologin-pam-config.conf 1970-01-01 00:00:00 +0000
+++ tests/scripts/autologin-pam-config.conf 2014-07-27 23:39:55 +0000
@@ -0,0 +1,44 @@
1#
2# Check we can configure the PAM service for automatic login
3#
4
5[SeatDefaults]
6autologin-user=no-password1
7user-session=default
8pam-autologin-service=lightdm-autologin-alternative
9
10[test-pam]
11log-events=true
12
13#?*START-DAEMON
14#?RUNNER DAEMON-START
15
16# X server starts
17#?XSERVER-0 START VT=7 SEAT=seat0
18
19# Daemon connects when X server is ready
20#?*XSERVER-0 INDICATE-READY
21#?XSERVER-0 INDICATE-READY
22#?XSERVER-0 ACCEPT-CONNECT
23
24# Session authenticates
25#?PAM-no-password1 START SERVICE=lightdm-autologin-alternative USER=no-password1
26#?PAM-no-password1 AUTHENTICATE
27#?PAM-no-password1 ACCT-MGMT
28#?PAM-no-password1 SETCRED ESTABLISH_CRED
29#?PAM-no-password1 OPEN-SESSION
30
31# Session starts
32#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/no-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=no-password1
33#?LOGIN1 ACTIVATE-SESSION SESSION=c0
34#?XSERVER-0 ACCEPT-CONNECT
35#?SESSION-X-0 CONNECT-XSERVER
36
37# Cleanup
38#?*STOP-DAEMON
39#?SESSION-X-0 TERMINATE SIGNAL=15
40#?PAM-no-password1 CLOSE-SESSION
41#?PAM-no-password1 SETCRED DELETE_CRED
42#?PAM-no-password1 END
43#?XSERVER-0 TERMINATE SIGNAL=15
44#?RUNNER DAEMON-EXIT STATUS=0
045
=== added file 'tests/scripts/login-pam-config.conf'
--- tests/scripts/login-pam-config.conf 1970-01-01 00:00:00 +0000
+++ tests/scripts/login-pam-config.conf 2014-07-27 23:39:55 +0000
@@ -0,0 +1,70 @@
1#
2# Check we can configure the PAM service for login
3#
4
5[SeatDefaults]
6user-session=default
7pam-service=lightdm-alternative
8pam-greeter-service=lightdm-greeter-alternative
9
10[test-pam]
11log-events=true
12
13#?*START-DAEMON
14#?RUNNER DAEMON-START
15
16# X server starts
17#?XSERVER-0 START VT=7 SEAT=seat0
18
19# Daemon connects when X server is ready
20#?*XSERVER-0 INDICATE-READY
21#?XSERVER-0 INDICATE-READY
22#?XSERVER-0 ACCEPT-CONNECT
23
24# Create PAM session for greeter
25#?PAM-lightdm START SERVICE=lightdm-greeter-alternative USER=lightdm
26#?PAM-lightdm SETCRED ESTABLISH_CRED
27#?PAM-lightdm OPEN-SESSION
28
29# Greeter starts
30#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
31#?LOGIN1 ACTIVATE-SESSION SESSION=c0
32#?XSERVER-0 ACCEPT-CONNECT
33#?GREETER-X-0 CONNECT-XSERVER
34#?GREETER-X-0 CONNECT-TO-DAEMON
35#?GREETER-X-0 CONNECTED-TO-DAEMON
36
37# Greeter does authentication via PAM
38#?*GREETER-X-0 AUTHENTICATE USERNAME=have-password1
39#?PAM-have-password1 START SERVICE=lightdm-alternative USER=have-password1
40#?PAM-have-password1 AUTHENTICATE
41#?GREETER-X-0 SHOW-PROMPT TEXT="Password:"
42#?*GREETER-X-0 RESPOND TEXT="password"
43#?PAM-have-password1 ACCT-MGMT
44#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE
45
46# User session starts
47#?*GREETER-X-0 START-SESSION
48#?PAM-have-password1 SETCRED ESTABLISH_CRED
49#?PAM-have-password1 OPEN-SESSION
50
51# Greeter session stops
52#?GREETER-X-0 TERMINATE SIGNAL=15
53#?PAM-lightdm CLOSE-SESSION
54#?PAM-lightdm SETCRED DELETE_CRED
55#?PAM-lightdm END
56
57# Session starts
58#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1
59#?LOGIN1 ACTIVATE-SESSION SESSION=c1
60#?XSERVER-0 ACCEPT-CONNECT
61#?SESSION-X-0 CONNECT-XSERVER
62
63# Cleanup
64#?*STOP-DAEMON
65#?SESSION-X-0 TERMINATE SIGNAL=15
66#?PAM-have-password1 CLOSE-SESSION
67#?PAM-have-password1 SETCRED DELETE_CRED
68#?PAM-have-password1 END
69#?XSERVER-0 TERMINATE SIGNAL=15
70#?RUNNER DAEMON-EXIT STATUS=0
071
=== added file 'tests/test-autologin-pam-config'
--- tests/test-autologin-pam-config 1970-01-01 00:00:00 +0000
+++ tests/test-autologin-pam-config 2014-07-27 23:39:55 +0000
@@ -0,0 +1,2 @@
1#!/bin/sh
2./src/dbus-env ./src/test-runner autologin-pam-config test-gobject-greeter
03
=== added file 'tests/test-login-pam-config'
--- tests/test-login-pam-config 1970-01-01 00:00:00 +0000
+++ tests/test-login-pam-config 2014-07-27 23:39:55 +0000
@@ -0,0 +1,2 @@
1#!/bin/sh
2./src/dbus-env ./src/test-runner login-pam-config test-gobject-greeter

Subscribers

People subscribed via source and target branches