src/seat.c | 9 ++++++- tests/Makefile.am | 2 ++ tests/scripts/autologin-unknown.conf | 50 ++++++++++++++++++++++++++++++++++++ tests/test-autologin-unknown | 2 ++ 4 files changed, 62 insertions(+), 1 deletion(-) diff --git a/src/seat.c b/src/seat.c index 85134180..02c0f4d0 100644 --- a/src/seat.c +++ b/src/seat.c @@ -998,8 +998,15 @@ create_user_session (Seat *seat, const gchar *username, gboolean autostart) l_debug (seat, "Creating user session"); /* Load user preferences */ + gboolean login_unknown = FALSE; + + if (seat_get_string_property (seat, "login-unknown")) + login_unknown = seat_get_boolean_property (seat, "login-unknown"); + else + login_unknown = config_get_boolean (config_get_instance (), "LightDM", "login-unknown"); + g_autoptr(User) user = accounts_get_user_by_name (username); - if (!user) + if (!user && !login_unknown) { l_debug (seat, "Can't login unknown user '%s'", username); return NULL; diff --git a/tests/Makefile.am b/tests/Makefile.am index 6ca26678..38007fb8 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -27,6 +27,7 @@ TESTS = \ test-autologin-guest-in-background \ test-autologin-timeout-in-background \ test-autologin-invalid-user \ + test-autologin-unknown \ test-autologin-invalid-greeter \ test-autologin-invalid-session \ test-crash-authenticate \ @@ -411,6 +412,7 @@ EXTRA_DIST = \ scripts/autologin-pam-config.conf \ scripts/autologin-invalid-session.conf \ scripts/autologin-invalid-user.conf \ + scripts/autologin-unknown.conf \ scripts/autologin-logout.conf \ scripts/autologin-new-authtok.conf \ scripts/autologin-password.conf \ diff --git a/tests/scripts/autologin-unknown.conf b/tests/scripts/autologin-unknown.conf new file mode 100644 index 00000000..4bcff803 --- /dev/null +++ b/tests/scripts/autologin-unknown.conf @@ -0,0 +1,50 @@ +# +# Checks that login-unknown=true option works +# + +[Seat:*] +autologin-user=no-such-user +login-unknown=true + +[test-pam] +log-events=true + +#?*START-DAEMON +#?RUNNER DAEMON-START + +# (fails to start session for non-existent user) + +# X server starts +#?XSERVER-0 START VT=7 SEAT=seat0 + +# Daemon connects when X server is ready +#?*XSERVER-0 INDICATE-READY +#?XSERVER-0 INDICATE-READY +#?XSERVER-0 ACCEPT-CONNECT + +#?PAM-no-such-user START SERVICE=lightdm-autologin USER=no-such-user +#?PAM-no-such-user AUTHENTICATE +#?PAM-no-such-user END + +# Create PAM session for greeter +#?PAM-_ldm START SERVICE=lightdm-greeter USER=_ldm +#?PAM-_ldm SETCRED ESTABLISH_CRED +#?PAM-_ldm OPEN-SESSION + +# Greeter starts +#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter +#?LOGIN1 ACTIVATE-SESSION SESSION=c0 +#?XSERVER-0 ACCEPT-CONNECT +#?GREETER-X-0 CONNECT-XSERVER +#?GREETER-X-0 CONNECT-TO-DAEMON +#?GREETER-X-0 CONNECTED-TO-DAEMON + +# Cleanup +#?*STOP-DAEMON +#?GREETER-X-0 SELECT-USER-HINT USERNAME=no-such-user +#?GREETER-X-0 TERMINATE SIGNAL=15 +#?PAM-_ldm CLOSE-SESSION +#?PAM-_ldm SETCRED DELETE_CRED +#?PAM-_ldm END +#?XSERVER-0 TERMINATE SIGNAL=15 +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/test-autologin-unknown b/tests/test-autologin-unknown new file mode 100755 index 00000000..a2210455 --- /dev/null +++ b/tests/test-autologin-unknown @@ -0,0 +1,2 @@ +#!/bin/sh +./src/dbus-env ./src/test-runner autologin-unknown test-gobject-greeter