Nautilus 中的“连接到服务器”无法连接到我们的 Active Directory 共享:我收到无限循环的用户/密码挑战。我可以使用“sudo mount”和“smbclient”访问相同的共享,因此这似乎是 Nautilus 的问题。
背景:刚刚从 12.04 升级到 16.04。我曾使用 Centrify 加入我们的 Active Directory,但现在选择了“裸机”方法,因此遵循了 SSSD 和 Active Directory 安装指南。“sudo mount”和“smbclient”以及经过 AD 身份验证的用户的登录运行良好,因此 AD 加入似乎已成功。
我尝试过的事情:
- 谷歌搜索。很多听起来类似的问题,但没有适合我的解决方案。
- 查看 /var/log/auth.log:没有任何内容。
- 查看 /var/log/syslog:只有一个条目“密码对话框已取消”。 (我确实看到了。)
- 根据“调试 GNOME”说明,使用调试选项运行 Nautilus。(仅供参考:必须先终止正在运行的 Nautilus:“nautilus -q”。)无调试输出。
- 仔细阅读“调试 Samba”说明。没有帮助。
附加信息:
Samba 版本:
libnss-winbind 2:4.3.11+dfsg-0ubuntu0.16.04.1 samba install ok installed libpam-winbind 2:4.3.11+dfsg-0ubuntu0.16.04.1 samba install ok installed libsmbclient 2:4.3.11+dfsg-0ubuntu0.16.04.1 samba install ok installed libwbclient0 2:4.3.11+dfsg-0ubuntu0.16.04.1 samba install ok installed python-samba 2:4.3.11+dfsg-0ubuntu0.16.04.1 samba install ok installed samba 2:4.3.11+dfsg-0ubuntu0.16.04.1 install ok installed samba-common 2:4.3.11+dfsg-0ubuntu0.16.04.1 samba install ok installed samba-common-bin 2:4.3.11+dfsg-0ubuntu0.16.04.1 samba install ok installed samba-dsdb-modules 2:4.3.11+dfsg-0ubuntu0.16.04.1 samba install ok installed samba-libs 2:4.3.11+dfsg-0ubuntu0.16.04.1 samba install ok installed samba-vfs-modules 2:4.3.11+dfsg-0ubuntu0.16.04.1 samba install ok installed smbclient 2:4.3.11+dfsg-0ubuntu0.16.04.1 samba install ok installed winbind 2:4.3.11+dfsg-0ubuntu0.16.04.1 samba install ok installed
远程服务器信息:
OS=[Windows Server 2012 R2 Standard 9600] Server=[Windows Server 2012 R2 Standard 6.3]
编辑
看来我是GVfs 中一个众所周知且长期存在的 bug。有很多方法可以绕过这些问题,这篇文章很好地总结了。但是,这些方法对我都不起作用,我猜是因为我的 smb.conf 指定了“security = ads”(Active Directory Server)。无论如何,黑客依赖于启用弱身份验证方案,这是一个坏主意。
答案1
在我找到更好的解决方案之前,我决定放弃在 Nautilus 中安装网络共享,而是使用脚本进行标准安装。如果有人感兴趣,我会附上脚本:
#!/bin/bash
echo Enter network user:
echo -n "Name [$USER]: "
read USR
if [ "$USR" = "" ]; then
USR="$USER"
fi
echo -n "Password: "
read -s PWD
echo
SERVER="your server name here"
SHARES="your share names here"
for SHR in $SHARES; do
ERR=$(sudo mount -t cifs -o rw,username=$USR,password=$PWD,uid=$USER //$SERVER/$SHR ~/Shares/$SHR 2>&1)
if [ "$ERR" = "" ]; then
ERR="OK"
fi
echo $SHR: $ERR
done