← Back to team overview

ubuntu-translations-coordinators team mailing list archive

[Bug 1314095] [NEW] Unity Lockscreen in 14.04 can't unlock when using LDAP account

 

You have been subscribed to a public bug:

SRU justification:

[Impact]

* Summary: in Trusty, when libnss-ldapd is used, LDAP users are not able
to unlock the Unity lockscreen. Utopic and later are not affected. Some
workarounds are listed in comment #29.

* nslcd in Trusty and earlier does not permit unprivileged users to read
shadow entries. When invoked by the Unity lockscreen, running as the
logged-in user, pam_unix returns PAM_AUTHINFO_UNAVAIL in pam_acct_mgmt
when it tries to get password expiry information from shadow. This leads
to an authorization failure, so Unity refuses to unlock the screen.
pam_ldap is not consulted for pam_acct_mgmt after pam_unix fails because
its rule is in the Additional section.

* In Utopic and later, nslcd returns partial shadow entries to
unprivileged users. This is enough for the expiry check in pam_unix to
succeed, so the screen can be unlocked. See
http://bugs.debian.org/706913 for a discussion of the upstream fix.

* This proposed SRU backports the upstream solution to Trusty's nslcd.
This is a change of behaviour for shadow queries from unprivileged
users, compared to the current package. An alternative, more targeted
fix would be to change Unity to ignore AUTHINFO_UNAVAIL results from
pam_acct_mgmt, like gnome-screensaver already does (see comment #29).
The nslcd change is a more general fix for not just Unity, but any PAM-
using program run by an unprivileged user.

[Test Case]

* Install and configure libnss-ldapd. Ensure ldap is enabled for at
least the passwd and shadow services in /etc/nsswitch.conf.

* Log into Unity as an LDAP user, lock the screen, and then try to
unlock it again.

[Regression Potential]

* The patch is minimal, was written by the upstream author, and was
backported (adjusting for whitespace changes) to Trusty. The change has
already been released in Utopic and will be included in Debian Jessie as
well.

* Regression testing should include checking that shadow queries, both
by name and for listing all users, are unchanged when issued as root.

[Other Info]

* Packages for testing are available in ppa:rtandy/lp1314095

Original description:

My setup is:

Ubuntu 14.04 LTS,
ldap accounts,
krb5 authentication,
Lightdm,
Unity session

ldap+krb5 is configured using nss-ldapd and nslcd. It works fine. getent passwd and getent shadow works fine.
I am able to login in console without any problems.
I was able to login in lightdm.
Then I used the lock screen.
I could not disable the lock screen using my password.
I rebooted my computer.

Now:
After logging in through lightdm, the unity lockscreen locks the screen immediately and I can not disable it using my password.

>From my short inspection of auth.log and unix_chkpwd sources it seems,
that unix_chkpwd works fine when called from lightdm and fails to get
user info when called from unity lockscreen.

lsb_release -rd
Description:	Ubuntu 14.04 LTS
Release:	14.04

apt-cache policy unity lightdm libpam-modules
unity:
  Installed: 7.2.0+14.04.20140416-0ubuntu1
  Candidate: 7.2.0+14.04.20140416-0ubuntu1
  Version table:
 *** 7.2.0+14.04.20140416-0ubuntu1 0
        500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
        100 /var/lib/dpkg/status
lightdm:
  Installed: 1.10.0-0ubuntu3
  Candidate: 1.10.0-0ubuntu3
  Version table:
 *** 1.10.0-0ubuntu3 0
        500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
        100 /var/lib/dpkg/status
libpam-modules:
  Installed: 1.1.8-1ubuntu2
  Candidate: 1.1.8-1ubuntu2
  Version table:
 *** 1.1.8-1ubuntu2 0
        500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
        100 /var/lib/dpkg/status

Contents of /var/log/auth.log:

Apr 29 06:49:27 localhost lightdm: pam_succeed_if(lightdm:auth): requirement "user ingroup nopasswdlogin" not met by user "user"
Apr 29 06:49:31 localhost lightdm: pam_unix(lightdm:auth): authentication failure; logname= uid=0 euid=0 tty=:2 ruser= rhost=  user=user
Apr 29 06:49:31 localhost lightdm: pam_krb5(lightdm:auth): user user authenticated as user@NETWORK
Apr 29 06:49:32 localhost lightdm[15604]: pam_unix(lightdm-greeter:session): session closed for user lightdm
Apr 29 06:49:37 localhost unix_chkpwd[15825]: check pass; user unknown
Apr 29 06:49:37 localhost unix_chkpwd[15825]: password check failed for user (user)
Apr 29 06:49:37 localhost compiz: pam_unix(lightdm:auth): authentication failure; logname= uid=1001 euid=1001 tty= ruser= rhost=  user=user
Apr 29 06:49:37 localhost compiz: pam_krb5(lightdm:auth): user user authenticated as user@NETWORK
Apr 29 06:49:37 localhost unix_chkpwd[15826]: could not obtain user info (user)
Apr 29 06:49:37 localhost unix_chkpwd[15827]: could not obtain user info (user)
Apr 29 06:49:37 localhost compiz: pam_succeed_if(lightdm:auth): requirement "user ingroup nopasswdlogin" not met by user "user"

cat /etc/pam.d/common-auth
account     required    pam_unix.so
auth        required    pam_group.so
auth [success=2 default=ignore] pam_unix.so try_first_pass nullok_secure
auth [success=1 default=ignore] pam_krb5.so try_first_pass minimum_uid=200
auth        requisite   pam_deny.so
auth        required    pam_permit.so

auth        optional    pam_afs_session.so minimum_uid=200
auth        optional    pam_ecryptfs.so unwrap
auth        optional    pam_cap.so

cat /etc/pam.d/common-account
account     required    pam_unix.so

cat /etc/pam.d/lightdm
auth        requisite   pam_nologin.so
auth        sufficient  pam_succeed_if.so user ingroup nopasswdlogin
@include common-auth
auth        optional    pam_gnome_keyring.so
@include common-account
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
auth        optional    pam_group.so
session     required    pam_limits.so
@include common-session
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
session     optional    pam_gnome_keyring.so auto_start
session     required    pam_env.so readenv=1
session     required    pam_env.so readenv=1 user_readenv=1 envfile=/etc/default/locale
@include common-password

** Affects: ubuntu-translations
     Importance: High
         Status: Invalid

** Affects: nss-pam-ldapd (Ubuntu)
     Importance: Undecided
         Status: Fix Released

** Affects: unity (Ubuntu)
     Importance: High
         Status: Invalid

** Affects: nss-pam-ldapd (Ubuntu Trusty)
     Importance: Undecided
         Status: Fix Released

** Affects: unity (Ubuntu Trusty)
     Importance: Undecided
         Status: Invalid

** Affects: nss-pam-ldapd (Ubuntu Utopic)
     Importance: Undecided
         Status: Fix Released

** Affects: unity (Ubuntu Utopic)
     Importance: Undecided
         Status: Invalid

** Affects: nss-pam-ldapd (Debian)
     Importance: Unknown
         Status: Fix Released


** Tags: lockscreen verification-done
-- 
Unity Lockscreen in 14.04 can't unlock when using LDAP account
https://bugs.launchpad.net/bugs/1314095
You received this bug notification because you are a member of Ubuntu Translations Coordinators, which is subscribed to Ubuntu Translations.