]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Make PAM services configurable
authorRobert Ancell <robert.ancell@canonical.com>
Fri, 25 Jul 2014 05:00:37 +0000 (17:00 +1200)
committerRobert Ancell <robert.ancell@canonical.com>
Fri, 25 Jul 2014 05:00:37 +0000 (17:00 +1200)
data/lightdm.conf
src/lightdm.c
src/seat.c

index 9e7ba17ca6eba6a4a86721fd8f59946dd2afc46a..8d2289fe3cf85f95b3c0ff5cc885b48c359f9a5a 100644 (file)
@@ -35,6 +35,9 @@
 #
 # type = Seat type (xlocal, xremote)
 # xdg-seat = Seat name to set pam_systemd XDG_SEAT variable and name to pass to X server
+# pam-service = PAM service to use for login
+# pam-autologin-service = PAM service to use for autologin
+# pam-greeter-service = PAM service to use for greeters
 # xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
 # xserver-layout = Layout to pass to X server
 # xserver-config = Config file to pass to X server
@@ -73,6 +76,9 @@
 [SeatDefaults]
 #type=xlocal
 #xdg-seat=seat0
+#pam-service=lightdm
+#pam-autologin-service=lightdm-autologin
+#pam-greeter-service=lightdm-greeter
 #xserver-command=X
 #xserver-layout=
 #xserver-config=
index bdfd2b1822efe73d343d28fc132119d342250296..ff33085f37326a6f0ad9b458e0a602dd40df59ea 100644 (file)
@@ -1109,6 +1109,12 @@ main (int argc, char **argv)
         config_set_boolean (config_get_instance (), "LightDM", "lock-memory", TRUE);
     if (!config_has_key (config_get_instance (), "SeatDefaults", "type"))
         config_set_string (config_get_instance (), "SeatDefaults", "type", "xlocal");
+    if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-service"))
+        config_set_string (config_get_instance (), "SeatDefaults", "pam-service", "lightdm");
+    if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-autologin-service"))
+        config_set_string (config_get_instance (), "SeatDefaults", "pam-autologin-service", "lightdm-autologin");
+    if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-greeter-service"))
+        config_set_string (config_get_instance (), "SeatDefaults", "pam-greeter-service", "lightdm-greeter");
     if (!config_has_key (config_get_instance (), "SeatDefaults", "xserver-command"))
         config_set_string (config_get_instance (), "SeatDefaults", "xserver-command", "X");
     if (!config_has_key (config_get_instance (), "SeatDefaults", "xserver-share"))
index a30ee661dc93820c53c450f386c16b7eabaf6daa..ab2e86fba77a40f26eb351c81e86b768e0c2a773 100644 (file)
@@ -64,11 +64,6 @@ struct SeatPrivate
     gboolean stopped;
 };
 
-/* PAM services to use */
-#define GREETER_SERVICE   "lightdm-greeter"
-#define USER_SERVICE      "lightdm"
-#define AUTOLOGIN_SERVICE "lightdm-autologin"
-
 static void seat_logger_iface_init (LoggerInterface *iface);
 
 G_DEFINE_TYPE_WITH_CODE (Seat, seat, G_TYPE_OBJECT,
@@ -1091,7 +1086,7 @@ greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *sessi
         session = create_guest_session (seat, session_name);
         if (!session)
             return FALSE;
-        session_set_pam_service (session, AUTOLOGIN_SERVICE);
+        session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
     }
     else
     {
@@ -1230,7 +1225,7 @@ create_greeter_session (Seat *seat)
     set_session_env (SESSION (greeter_session));
     session_set_env (SESSION (greeter_session), "XDG_SESSION_CLASS", "greeter");
 
-    session_set_pam_service (SESSION (greeter_session), GREETER_SERVICE);
+    session_set_pam_service (SESSION (greeter_session), seat_get_string_property (seat, "pam-greeter-service"));
     if (getuid () == 0)
     {
         gchar *greeter_user;      
@@ -1246,7 +1241,9 @@ create_greeter_session (Seat *seat)
     session_set_argv (SESSION (greeter_session), argv);
     g_strfreev (argv);
 
-    greeter_set_pam_services (greeter_session, USER_SERVICE, AUTOLOGIN_SERVICE);
+    greeter_set_pam_services (greeter_session,
+                              seat_get_string_property (seat, "pam-service"),
+                              seat_get_string_property (seat, "pam-autologin-service"));
     g_signal_connect (greeter_session, "create-session", G_CALLBACK (greeter_create_session_cb), seat);
     g_signal_connect (greeter_session, "start-session", G_CALLBACK (greeter_start_session_cb), seat);
 
@@ -1483,7 +1480,7 @@ seat_switch_to_user (Seat *seat, const gchar *username, const gchar *session_nam
     /* Attempt to authenticate them */
     session = create_user_session (seat, username, FALSE);
     g_signal_connect (session, "authentication-complete", G_CALLBACK (switch_authentication_complete_cb), seat);
-    session_set_pam_service (session, USER_SERVICE);
+    session_set_pam_service (session, seat_get_string_property (seat, "pam-service"));
     session_start (session);
 
     return FALSE;
@@ -1533,7 +1530,7 @@ seat_switch_to_guest (Seat *seat, const gchar *session_name)
     if (seat->priv->session_to_activate)
         g_object_unref (seat->priv->session_to_activate);
     seat->priv->session_to_activate = g_object_ref (session);
-    session_set_pam_service (session, AUTOLOGIN_SERVICE);
+    session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
     session_set_display_server (session, display_server);
 
     return display_server_start (display_server);
@@ -1658,7 +1655,7 @@ seat_real_start (Seat *seat)
             session = create_user_session (seat, autologin_username, TRUE);
 
         if (session)
-            session_set_pam_service (session, AUTOLOGIN_SERVICE);
+            session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
 
         /* Load in background if required */
         if (autologin_in_background && session)