它的工作原理如下:我的 Ubuntu 工作站通过 Active Directory 进行身份验证,pam_mount 在用户登录时挂载一些 CIFS 目录。现在,由于某种原因,pam_mount 停止工作,没有挂载任何目录。因此,我启用了 pam_mount 调试并看到以下内容:
(rdconf1.c:744): path to luserconf set to
/home/DOMAIN/username/Documents/.pam_mount.conf.xml
(pam_mount.c:365): pam_mount 2.14: entering auth stage
(rdconf1.c:744): path to luserconf set to
/home/DOMAIN/username/Documents/.pam_mount.conf.xml
(pam_mount.c:568): pam_mount 2.14: entering session stage
(pam_mount.c:629): no volumes to mount
command: 'pmvarrun' '-u' 'username' '-o' '1'
(pmvarrun.c:258): parsed count value 0
(pam_mount.c:441): pmvarrun says login count is 1
(pam_mount.c:660): done opening session (ret=0)
那么,没有要安装的卷吗?我的pam_mount.conf.xml
情况如下:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<pam_mount>
<debug enable="1" />
<luserconf name="Documents/.pam_mount.conf.xml" />
<volume user="*" sgrp="residents" fstype="cifs" server="dfs.namespace.com" path="data/users/%(USER)/documents" mountpoint="~/Documents" options="uid=%(USER),gid=100,dir_mode=0700" />
<volume user="*" sgrp="residents" fstype="cifs" server="dfs.namespace.com" path="data/public" mountpoint="~/mount/Public" options="uid=%(USER),gid=100,dir_mode=0700" />
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other,uid,gid,dir_mode" />
<mntoptions require="nosuid,nodev,uid,gid,dir_mode" />
<logout wait="0" hup="0" term="0" kill="0" />
<mkmountpoint enable="1" remove="true" />
</pam_mount>
到目前为止,这个配置已经运行了几个月。我不记得最近做过任何配置更改。我怀疑是升级毁了它,因为有一天我注意到我所有的工作站都发生了这种情况。我不知道下一步该去哪里找 :( Google 并没有真正提供帮助。
其中/var/log/syslog
写道:
Apr 23 11:25:54 hostname nslcd[1261]: [86d4c7] <authz="username"> ldap_result() failed: Operations error: 000004DC: LdapErr: DSID-0C0906E8, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v1db1
但老实说,我一直都在 syslog 中看到这些错误,而且由于 LDAP 身份验证工作正常(现在仍然如此),所以我并没有太注意它。登录似乎在以下情况下工作正常/var/log/auth.log
:
Apr 23 11:43:48 hostname su[10409]: pam_winbind(su:auth): getting password (0x00000388)
Apr 23 11:43:48 hostname su[10409]: pam_winbind(su:auth): pam_get_item returned a password
Apr 23 11:43:49 hostname su[10409]: pam_winbind(su:auth): user 'username' granted access
除此之外,我没有在/var/log/syslog
或中看到任何相关内容/var/log/auth.log
。我有 Ubuntu 14.04。我对 Linux 还很陌生,如果有人能告诉我下一步该尝试什么,我将不胜感激 :)
答案1
今天更新后,我遇到了同样的问题。我做了一些测试,发现删除卷的 sgrp="..." 参数允许它们挂载。它似乎认为没有要挂载的卷,因为用户不在列出的组中。
这让我相信该问题是由于 winbind 最新更新中提交的这个错误导致的,该错误会影响群组:https://bugs.launchpad.net/ubuntu/+source/samba/+bug/1573526
我暂时从卷中删除了 sgrp,现在它们似乎正在安装。希望该错误能够得到解决,并能正确修复此问题。希望这会有所帮助。
更新:上面链接的错误已修复,更新已发布,但我仍然遇到同样的问题。Winbind 没有返回给定组的组成员(即“getent group”未返回任何成员)。将“winbind expand groups = 1”添加到 smb.conf 解决了这个问题。我不知道这是否与新的 winbind 更新有关,但我的组在 pam_mount.conf.xml 中再次正常工作。
答案2
感谢 @chtaylor,我最初能够通过从sgrp
中的所有条目中删除该属性来解决这个问题pam_mount.conf.xml
。后来我意识到sgrp
仅当该组是用户的主要组时,该属性才有效。因此,更改sgrp="residents"
为sgrp="domain users"
可让我再次使用这些卷,因为domain users
默认情况下是所有 AD 用户的主要组。另一个解决方案是更改 Active Directory 中所需用户的主要组以匹配 pam_mount 配置:
Active Directory 用户和计算机 > 转到用户属性 > 成员 > 设置主要组