I'm having a problem getting pam_mkhomedir.so to make a user's home directory when it's specified using an LDAP attribute. The backend directory server is AD on Server 2008. The client is Ubuntu 12.04, sssd version 1.11.1.

First, my sssd.conf:

[sssd]
config_file_version = 2
debug_level = 0
reconnection_retries = 3
sbus_timeout = 30
services = nss, pam
domains = domain
 
[pam]
debug_level = 0

[nss]
debug_level = 0
filter_users = root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,nscd,gdm
filter_groups = root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,nscd,gdm
reconnection_retries = 3

[domain/domain]
debug_level = 0
ad_domain = domain.local
id_provider = ad
auth_provider = ad
chpass_provider = ad
access_provider = ad
enumerate = true
cache_credentials = true
# Will check unixHomeDirectory LDAP attribute for a value first
fallback_homedir = /home/%u
ldap_user_home_directory = unixHomeDirectory
dyndns_update = true
dyndns_update_ptr = true
ldap_schema = ad
ldap_id_mapping = true

I'm testing using the Guest user.

Guest, unlike all my other users, has a home directory set in the unixHomeDirectory attribute (/tmp/Guest). All other users rely on the fallback_homedir option. When a normal user signs in and does not have a home directory, I've configured pam to create one by adding this to the common-session file:

session required pam_mkhomedir.so umask=077

This all works fine when ldap_user_home_directory is empty; the home directory is created automatically upon logging in using the fallback_homedir option.

However, when unixHomeDirectory actually contains a path, no home directory is ever created and I'm always dropped in /.

Interestingly enough, "echo $HOME" as the Guest returns two different values depending on if fallback_homedir is set. If it is set, $HOME = /home/Guest. If it's commented out, $HOME = /tmp/Guest.

Any ideas? Thanks!

-Chris