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
1=== modified file 'data/lightdm.conf'
2--- data/lightdm.conf 2014-03-12 04:53:33 +0000
3+++ data/lightdm.conf 2014-07-27 23:39:55 +0000
4@@ -35,6 +35,9 @@
5 #
6 # type = Seat type (xlocal, xremote)
7 # xdg-seat = Seat name to set pam_systemd XDG_SEAT variable and name to pass to X server
8+# pam-service = PAM service to use for login
9+# pam-autologin-service = PAM service to use for autologin
10+# pam-greeter-service = PAM service to use for greeters
11 # xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
12 # xserver-layout = Layout to pass to X server
13 # xserver-config = Config file to pass to X server
14@@ -73,6 +76,9 @@
15 [SeatDefaults]
16 #type=xlocal
17 #xdg-seat=seat0
18+#pam-service=lightdm
19+#pam-autologin-service=lightdm-autologin
20+#pam-greeter-service=lightdm-greeter
21 #xserver-command=X
22 #xserver-layout=
23 #xserver-config=
24
25=== modified file 'src/lightdm.c'
26--- src/lightdm.c 2014-04-17 04:06:30 +0000
27+++ src/lightdm.c 2014-07-27 23:39:55 +0000
28@@ -1109,6 +1109,12 @@
29 config_set_boolean (config_get_instance (), "LightDM", "lock-memory", TRUE);
30 if (!config_has_key (config_get_instance (), "SeatDefaults", "type"))
31 config_set_string (config_get_instance (), "SeatDefaults", "type", "xlocal");
32+ if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-service"))
33+ config_set_string (config_get_instance (), "SeatDefaults", "pam-service", "lightdm");
34+ if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-autologin-service"))
35+ config_set_string (config_get_instance (), "SeatDefaults", "pam-autologin-service", "lightdm-autologin");
36+ if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-greeter-service"))
37+ config_set_string (config_get_instance (), "SeatDefaults", "pam-greeter-service", "lightdm-greeter");
38 if (!config_has_key (config_get_instance (), "SeatDefaults", "xserver-command"))
39 config_set_string (config_get_instance (), "SeatDefaults", "xserver-command", "X");
40 if (!config_has_key (config_get_instance (), "SeatDefaults", "xserver-share"))
41
42=== modified file 'src/seat.c'
43--- src/seat.c 2014-06-30 05:00:29 +0000
44+++ src/seat.c 2014-07-27 23:39:55 +0000
45@@ -64,11 +64,6 @@
46 gboolean stopped;
47 };
48
49-/* PAM services to use */
50-#define GREETER_SERVICE "lightdm-greeter"
51-#define USER_SERVICE "lightdm"
52-#define AUTOLOGIN_SERVICE "lightdm-autologin"
53-
54 static void seat_logger_iface_init (LoggerInterface *iface);
55
56 G_DEFINE_TYPE_WITH_CODE (Seat, seat, G_TYPE_OBJECT,
57@@ -1091,7 +1086,7 @@
58 session = create_guest_session (seat, session_name);
59 if (!session)
60 return FALSE;
61- session_set_pam_service (session, AUTOLOGIN_SERVICE);
62+ session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
63 }
64 else
65 {
66@@ -1230,7 +1225,7 @@
67 set_session_env (SESSION (greeter_session));
68 session_set_env (SESSION (greeter_session), "XDG_SESSION_CLASS", "greeter");
69
70- session_set_pam_service (SESSION (greeter_session), GREETER_SERVICE);
71+ session_set_pam_service (SESSION (greeter_session), seat_get_string_property (seat, "pam-greeter-service"));
72 if (getuid () == 0)
73 {
74 gchar *greeter_user;
75@@ -1246,7 +1241,9 @@
76 session_set_argv (SESSION (greeter_session), argv);
77 g_strfreev (argv);
78
79- greeter_set_pam_services (greeter_session, USER_SERVICE, AUTOLOGIN_SERVICE);
80+ greeter_set_pam_services (greeter_session,
81+ seat_get_string_property (seat, "pam-service"),
82+ seat_get_string_property (seat, "pam-autologin-service"));
83 g_signal_connect (greeter_session, "create-session", G_CALLBACK (greeter_create_session_cb), seat);
84 g_signal_connect (greeter_session, "start-session", G_CALLBACK (greeter_start_session_cb), seat);
85
86@@ -1483,7 +1480,7 @@
87 /* Attempt to authenticate them */
88 session = create_user_session (seat, username, FALSE);
89 g_signal_connect (session, "authentication-complete", G_CALLBACK (switch_authentication_complete_cb), seat);
90- session_set_pam_service (session, USER_SERVICE);
91+ session_set_pam_service (session, seat_get_string_property (seat, "pam-service"));
92 session_start (session);
93
94 return FALSE;
95@@ -1533,7 +1530,7 @@
96 if (seat->priv->session_to_activate)
97 g_object_unref (seat->priv->session_to_activate);
98 seat->priv->session_to_activate = g_object_ref (session);
99- session_set_pam_service (session, AUTOLOGIN_SERVICE);
100+ session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
101 session_set_display_server (session, display_server);
102
103 return display_server_start (display_server);
104@@ -1658,7 +1655,7 @@
105 session = create_user_session (seat, autologin_username, TRUE);
106
107 if (session)
108- session_set_pam_service (session, AUTOLOGIN_SERVICE);
109+ session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
110
111 /* Load in background if required */
112 if (autologin_in_background && session)
113
114=== modified file 'tests/Makefile.am'
115--- tests/Makefile.am 2014-06-30 05:00:29 +0000
116+++ tests/Makefile.am 2014-07-27 23:39:55 +0000
117@@ -20,6 +20,7 @@
118 test-headless \
119 test-autologin \
120 test-autologin-pam \
121+ test-autologin-pam-config \
122 test-autologin-in-background \
123 test-autologin-guest-in-background \
124 test-autologin-timeout-in-background \
125@@ -37,6 +38,7 @@
126 test-restart-authentication \
127 test-cancel-authentication-gobject \
128 test-login-pam \
129+ test-login-pam-config \
130 test-denied \
131 test-expired \
132 test-cred-error \
133@@ -350,6 +352,7 @@
134 scripts/autologin-in-background.conf \
135 scripts/autologin-invalid-greeter.conf \
136 scripts/autologin-pam.conf \
137+ scripts/autologin-pam-config.conf \
138 scripts/autologin-invalid-session.conf \
139 scripts/autologin-invalid-user.conf \
140 scripts/autologin-logout.conf \
141@@ -424,6 +427,7 @@
142 scripts/login-new-authtok.conf \
143 scripts/login-no-password.conf \
144 scripts/login-pam.conf \
145+ scripts/login-pam-config.conf \
146 scripts/login-pick-session.conf \
147 scripts/login-previous-session.conf \
148 scripts/login-remember-session.conf \
149
150=== added file 'tests/scripts/autologin-pam-config.conf'
151--- tests/scripts/autologin-pam-config.conf 1970-01-01 00:00:00 +0000
152+++ tests/scripts/autologin-pam-config.conf 2014-07-27 23:39:55 +0000
153@@ -0,0 +1,44 @@
154+#
155+# Check we can configure the PAM service for automatic login
156+#
157+
158+[SeatDefaults]
159+autologin-user=no-password1
160+user-session=default
161+pam-autologin-service=lightdm-autologin-alternative
162+
163+[test-pam]
164+log-events=true
165+
166+#?*START-DAEMON
167+#?RUNNER DAEMON-START
168+
169+# X server starts
170+#?XSERVER-0 START VT=7 SEAT=seat0
171+
172+# Daemon connects when X server is ready
173+#?*XSERVER-0 INDICATE-READY
174+#?XSERVER-0 INDICATE-READY
175+#?XSERVER-0 ACCEPT-CONNECT
176+
177+# Session authenticates
178+#?PAM-no-password1 START SERVICE=lightdm-autologin-alternative USER=no-password1
179+#?PAM-no-password1 AUTHENTICATE
180+#?PAM-no-password1 ACCT-MGMT
181+#?PAM-no-password1 SETCRED ESTABLISH_CRED
182+#?PAM-no-password1 OPEN-SESSION
183+
184+# Session starts
185+#?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
186+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
187+#?XSERVER-0 ACCEPT-CONNECT
188+#?SESSION-X-0 CONNECT-XSERVER
189+
190+# Cleanup
191+#?*STOP-DAEMON
192+#?SESSION-X-0 TERMINATE SIGNAL=15
193+#?PAM-no-password1 CLOSE-SESSION
194+#?PAM-no-password1 SETCRED DELETE_CRED
195+#?PAM-no-password1 END
196+#?XSERVER-0 TERMINATE SIGNAL=15
197+#?RUNNER DAEMON-EXIT STATUS=0
198
199=== added file 'tests/scripts/login-pam-config.conf'
200--- tests/scripts/login-pam-config.conf 1970-01-01 00:00:00 +0000
201+++ tests/scripts/login-pam-config.conf 2014-07-27 23:39:55 +0000
202@@ -0,0 +1,70 @@
203+#
204+# Check we can configure the PAM service for login
205+#
206+
207+[SeatDefaults]
208+user-session=default
209+pam-service=lightdm-alternative
210+pam-greeter-service=lightdm-greeter-alternative
211+
212+[test-pam]
213+log-events=true
214+
215+#?*START-DAEMON
216+#?RUNNER DAEMON-START
217+
218+# X server starts
219+#?XSERVER-0 START VT=7 SEAT=seat0
220+
221+# Daemon connects when X server is ready
222+#?*XSERVER-0 INDICATE-READY
223+#?XSERVER-0 INDICATE-READY
224+#?XSERVER-0 ACCEPT-CONNECT
225+
226+# Create PAM session for greeter
227+#?PAM-lightdm START SERVICE=lightdm-greeter-alternative USER=lightdm
228+#?PAM-lightdm SETCRED ESTABLISH_CRED
229+#?PAM-lightdm OPEN-SESSION
230+
231+# Greeter starts
232+#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
233+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
234+#?XSERVER-0 ACCEPT-CONNECT
235+#?GREETER-X-0 CONNECT-XSERVER
236+#?GREETER-X-0 CONNECT-TO-DAEMON
237+#?GREETER-X-0 CONNECTED-TO-DAEMON
238+
239+# Greeter does authentication via PAM
240+#?*GREETER-X-0 AUTHENTICATE USERNAME=have-password1
241+#?PAM-have-password1 START SERVICE=lightdm-alternative USER=have-password1
242+#?PAM-have-password1 AUTHENTICATE
243+#?GREETER-X-0 SHOW-PROMPT TEXT="Password:"
244+#?*GREETER-X-0 RESPOND TEXT="password"
245+#?PAM-have-password1 ACCT-MGMT
246+#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE
247+
248+# User session starts
249+#?*GREETER-X-0 START-SESSION
250+#?PAM-have-password1 SETCRED ESTABLISH_CRED
251+#?PAM-have-password1 OPEN-SESSION
252+
253+# Greeter session stops
254+#?GREETER-X-0 TERMINATE SIGNAL=15
255+#?PAM-lightdm CLOSE-SESSION
256+#?PAM-lightdm SETCRED DELETE_CRED
257+#?PAM-lightdm END
258+
259+# Session starts
260+#?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
261+#?LOGIN1 ACTIVATE-SESSION SESSION=c1
262+#?XSERVER-0 ACCEPT-CONNECT
263+#?SESSION-X-0 CONNECT-XSERVER
264+
265+# Cleanup
266+#?*STOP-DAEMON
267+#?SESSION-X-0 TERMINATE SIGNAL=15
268+#?PAM-have-password1 CLOSE-SESSION
269+#?PAM-have-password1 SETCRED DELETE_CRED
270+#?PAM-have-password1 END
271+#?XSERVER-0 TERMINATE SIGNAL=15
272+#?RUNNER DAEMON-EXIT STATUS=0
273
274=== added file 'tests/test-autologin-pam-config'
275--- tests/test-autologin-pam-config 1970-01-01 00:00:00 +0000
276+++ tests/test-autologin-pam-config 2014-07-27 23:39:55 +0000
277@@ -0,0 +1,2 @@
278+#!/bin/sh
279+./src/dbus-env ./src/test-runner autologin-pam-config test-gobject-greeter
280
281=== added file 'tests/test-login-pam-config'
282--- tests/test-login-pam-config 1970-01-01 00:00:00 +0000
283+++ tests/test-login-pam-config 2014-07-27 23:39:55 +0000
284@@ -0,0 +1,2 @@
285+#!/bin/sh
286+./src/dbus-env ./src/test-runner login-pam-config test-gobject-greeter

Subscribers

People subscribed via source and target branches