我有一台运行在RedHat Enterprise服务器版本6.7上的Samba服务器(版本3.6.23-30)。 它join到Active Directory中,并将用户authentication为AD。 Winbind没有运行(根据Samba的说法,“ Winbind不被使用;用户和组是本地的 ”)。 从很长一段时间以来,这一切都运行良好,直到最后一次从samba 3.6.23-25更新到3.6.23-30(实际上几个安全问题的修复,包括Badlock)在10天前在3.6.23-26被引入,版本从未在这里部署)。
我试着将Samba降级到3.6.23-25,并且解决了这个问题 (但是当然这不是一个解决scheme,考虑到3.6.23-26中包含的安全修复):
yum downgrade samba-3.6.23-25.el6_7.x86_64 samba-common-3.6.23-25.el6_7 samba-winbind-clients-3.6.23-25.el6_7 samba-client-3.6.23-25.el6_7 samba-winbind-3.6.23-25.el6_7
安装更新后,用户无法连接到服务器上的共享,直接得到“访问被拒绝”消息:
C:\Users\admin>net use \\servername /user:INTRANET\username The password or user name is invalid for \\servername. Enter the password for 'INTRANET\username' to connect to 'servername': System error 5 has occurred. Access is denied.
这不是由于错误的密码或类似的东西,因为在这种情况下,它显示错误1326(用户名或密码不正确)。 已经从Windows 7,Windows Server 2012 R2甚至Windows XP SP3尝试连接,结果相同。
net ads testjoin说,该服务器已正确joinActive Directory。 我也试过离开公元并重新join,但并没有改善这种情况。
smbd日志中的客户端的错误消息(使用debugging日志级别)是:
[2016/04/18 14:09:19.133618, 2] ../libcli/auth/credentials.c:289(netlogon_creds_client_check) credentials check failed [2016/04/18 14:09:19.133674, 0] rpc_client/cli_netlogon.c:623(rpccli_netlogon_sam_network_logon) rpccli_netlogon_sam_network_logon: credentials chain check failed [2016/04/18 14:09:19.134036, 0] auth/auth_domain.c:331(domain_client_validate) domain_client_validate: unable to validate password for user username in domain INTRANET to Domain controller AD6. Error was NT_STATUS_ACCESS_DENIED. [2016/04/18 14:09:19.135842, 5] auth/auth.c:281(check_ntlm_password) check_ntlm_password: winbind authentication for user [username] FAILED with error NT_STATUS_ACCESS_DENIED [2016/04/18 14:09:19.135917, 2] auth/auth.c:330(check_ntlm_password) check_ntlm_password: Authentication for user [username] -> [username] FAILED with error NT_STATUS_ACCESS_DENIED
现在,如果我启动winbind守护进程,身份validation问题将消失,用户可以成功连接到Samba服务器。 但是,在这种情况下会出现第二个烦人的问题。 由于组成员身份(即,用户是Samba服务器上的UNIX组的成员)获取用户仅拥有权限的目录:
username$ ls -l /export/projects/testproject drwxrws---. 2 root testgrp 4096 Apr 18 11:24 testproject
在这里, username是testgrp组的成员,并且可以成功访问该目录:
username$ ls -l /export/projects/testproject/ -rw-r--r--. 1 root testgrp 0 Apr 18 11:24 test.txt
连接到Samba服务器的同一用户无法访问目录(访问被拒绝)。 更新之前( winbindd 禁用 ),访问工作正常。 我想这跟winbindd运行的testgrp ,因为testgrp组没有映射到任何AD对象(它作为UNIX组\ testgrp显示在Windows资源pipe理器的“ 安全”选项卡中)。
在winbind启用的情况下,是否有任何方法可以使用本地组?(无需创build相应的AD对象)? 我试着把这个添加到smbd.conf中:
idmap config * : backend = tdb idmap config * : range = 1000000-1999999
但它并没有改善任何东西,也因为我猜这是将AD用户/组映射到Linux的,而不是相反。
或者,在没有winbindd情况下运行Samba时,可能会出现“拒绝访问”的问题? 这是由更新引入的错误 (因此应作为错误报告发送到RedHat),或者更确切地说是一个function,由于安全模型的一些变化?
我面临同样的问题:没有winbind的AD身份validation被打破了我。
我之所以停止winbind的原因是因为它找不到本地组(尽pipe它似乎find了正确的用户映射)。 这里是一个日志摘录与winbind激活:
[2016/04/22 16:15:20.654780,5] Auth / token_util.c:527(debug_unix_user_token)
用户1154的UNIX令牌
小学组为496人,包含0个辅助小组
正如你所看到的,用户标识是正确的(1154),但除了主用户标识(这也是正确的)之外没有find这些用户标识。
看来我find了一个解决scheme来纠正这个问题:你应该添加选项
username map script = /bin/echo
在/etc/smb.conf中。 此解决scheme在此处提出: http : //samba.2283325.n4.nabble.com/samba-winbind-ignores-local-unix-groups-td3410748.html ,但未经testing。
正如我从手册页了解到的,这个选项在ADauthentication之后强制执行一个不同的映射。 使用echo命令只需将名称映射到自身,以便在本地用户名与AD用户名相同时使用。 结果如下:
[2016/04/22 16:21:20.996130,5] auth / token_util.c:527(debug_unix_user_token)
用户1154的UNIX令牌
小学组为496人,包含4个辅助小组
[…小组名单…]
所以总结一下:
激活winbind允许ADauthentication;
在conf文件中添加username map script = /bin/echo 。
我不觉得这个解决scheme是理想的,但是在等待更好的东西的时候,这可能是一个修复。
是的,这是一个上游Samba错误,在最新的Samba软件包更新中引入了RHEL用户。 红帽已经意识到了这个问题,并且有一个补丁来解决这个问题,但截至今天(4月27日)还没有发布补丁的更新。 请参阅https://bugzilla.redhat.com/show_bug.cgi?id=1326918和https://bugzilla.redhat.com/show_bug.cgi?id=1327697观看有关此更新。
同时,如果configuration允许的话,一些用户可以运行winbindd作为解决方法; 否则降级到以前的版本是你唯一的select。
所以,这可能不是正确的地方,但我没有评论的名声。 我也在科学Linux 6.7上面有这个问题,并且在上个星期三在我们的系统上升级了。 我发现问题在于netbios名称parsing(nmb)。 如果用户指定活动目录的完全限定域名,则授予访问权限,否则,如果他们使用域的NetBIOS名称,则会看到“NT_STATUS_ACCESS_DENIED”消息。
我也发现join了Windows的域能够访问samba共享,但是我相信那是因为他们有一个当前的kerberos令牌。
更新:我发现指定完全合格的域名实际上是搞kerberos票和授予访问权限,我发现在一台Ubuntu机器上安装krb5用户允许鹦鹉螺得到一张kerberos票,然后允许访问(它不工作没有它),所以我想这是苹果/ Mac客户端和Windows客户端正在做,我没有注意到的一块。
虽然这不是答案,但我希望它有帮助。 尊敬的,格伦
正如其中一些答案和评论所述, 这是在包含Badlock修复之后的Samba软件包中的一个错误 。 作为一个临时的解决方法,标签提供的解决scheme(使用winbindd并在configuration文件中设置username map script = /bin/echo指令)是完美的。 现在, 最近更新的软件包(samba-3.6.23-35)修正了这个错误 ,使得解决方法变得不必要。