samba4 nslcd lightdm 和 pam_mount

samba4 nslcd lightdm 和 pam_mount

我的设置有问题,希望得到一些帮助。

我在服务器和客户端上都使用 Samba4 和 nslcd 作为 nss 设置了 AD。我知道 Samba 不建议在同一台机器上运行 AD 和文件服务器,但由于 20 个用户设置和非常有限的预算,没有其他办法。客户端运行的是 Ubuntu 12.04 和 14.04。我希望用户能够通过 Samba4 AD 进行身份验证,并自动挂载他们的主目录以及共享目录。

似乎有两个独立的问题,但它们可能有关联。当我以 root 身份登录并 su domainuser 时,一切正常:主目录和共享都已挂载,并且用户切换已完成

当我以本地用户身份登录并 su domainuser 时,切换失败并且 auth.log 显示以下内容:

pam_ldap: ldap_simple_bind Can't contact LDAP server
pam_authenticate: Authentication failure

但是可以使用 /etc/pam_ldap.conf 中的设置来访问 ldapserver:

ldapsearch -H ldap://sturavm -D "cn=ldap-connect,cn=Users,dc=ad,dc=stura" -w secret

# cat /etc/pam_ldap.conf
uri ldap://192.168.138.6
base dc=ad,dc=stura
binddn cn=ldap-connect,cn=Users,dc=ad,dc=stura
bindpw secret
pam_login_attribute sAMAccountName
ssl no

第二个问题是 lightdm 将 lightdm 作为用户名而不是给定的用户名传递:

lightdm: (pam_mount.c:365): pam_mount 2.14: entering auth stage
lightdm: (pam_mount.c:173): conv->conv(...): Conversation error
lightdm: pam_unix(lightdm:auth): auth could not identify password for [domainuser]
lightdm: gkr-pam: no password is available for user
lightdm: PAM unable to dlopen(pam_kwallet.so): /lib/security/pam_kwallet.so: cannot open shared object file: No such file or directory
lightdm: PAM adding faulty module: pam_kwallet.so
lightdm: PAM unable to dlopen(pam_foreground.so): /lib/security/pam_foreground.so: cannot open shared object file: No such file or directory
lightdm: PAM adding faulty module: pam_foreground.so
lightdm: (pam_mount.c:568): pam_mount 2.14: entering session stage
lightdm: (pam_mount.c:477): warning: could not obtain password interactively either
lightdm: (mount.c:786): Could not get realpath of /home/lightdm: No such file or directory
lightdm: (mount.c:267): Mount info: globalconf, user=lightdm <volume fstype="cifs" server="192.168.138.6" path="home" mountpoint="/home/lightdm" cipher="(null)" fskeypath="(null)" fskeycipher="(null)" fskeyhash="(null)" options="iocharset=utf8" /> fstab=0 ssh=0

一些配置:

#cat /etc/pam.conf    
auth      sufficient  pam_unix.so
auth      sufficient  pam_ldap.so minimum_uid=1000 use_first_pass
auth      required    pam_deny.so

account   required    pam_unix.so
account   sufficient  pam_ldap.so minimum_uid=1000
account   required    pam_permit.so

session   required    pam_unix.so
session   optional    pam_ldap.so minimum_uid=1000

password  sufficient  pam_unix.so nullok md5 shadow use_authtok
password  sufficient  pam_ldap.so minimum_uid=1000 try_first_pass
password  required    pam_deny.so 

# cat /etc/pam.d/lightdm 
#%PAM-1.0
auth    requisite       pam_nologin.so
auth    sufficient      pam_succeed_if.so user ingroup nopasswdlogin
@include common-auth
auth    optional        pam_gnome_keyring.so
auth    optional        pam_kwallet.so
@include common-account
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
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 optional        pam_kwallet.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

# cat /etc/pam.d/common-auth
auth required   pam_mount.so
auth sufficient pam_unix.so nullok_secure use_first_pass
auth required   pam_group.so use_first_pass 
auth sufficient pam_ldap.so use_first_pass
auth required   pam_deny.so

# cat /etc/lightdm/lightdm.conf 
[SeatDefaults]
user-session=ubuntu
greeter-session=unity-greeter
greeter-show-manual-login=true
allow-guest=true

答案1

事实证明答案并不难:

我必须确保客户端有 libpam-ldapd和 libnis-ldapd已安装。一些 pam-auth-update --force 清理了整个 pam 混乱,而我无需做任何事情。

奇怪的是,ldap-auth-config 包似乎也产生了干扰。apt-get autoremove 可以在大多数机器上解决这个问题。

我可能很快就会写下我的设置,这样人们就不必依赖糟糕的 samba4 文档。

相关内容