AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 771163
Accepted
Ale
Ale
Asked: 2016-04-19 05:20:43 +0800 CST2016-04-19 05:20:43 +0800 CST 2016-04-19 05:20:43 +0800 CST

在 RedHat 服务器 6.7 上更新到 samba 3.6.23-30 会中断来自 AD 林上客户端的连接

  • 772

我有一个在 RedHat Enterprise 服务器 6.7 版上运行的 Samba 服务器(3.6.23-30 版)。它加入 Active Directory,并向 AD 验证用户。Winbind 未运行(“未使用 Winbind;用户和组是本地的”情况,根据 Samba howto)。很长一段时间以来,这一直运行良好,直到从 samba 3.6.23-25 到 3.6.23-30 的最后一次更新(实际上,10 天前在 3.6.23-26 中引入了几个针对安全问题的修复,包括 Badlock,但是版本从未在这里部署)。

我尝试将 Samba 降级到 3.6.23-25,这解决了问题(但当然不是解决方案,考虑到 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表示该服务器已正确加入 Active Directory。我也尝试离开 AD 并重新加入它,但并没有改善这种情况。

smbd 日志中客户端的错误消息(使用调试日志级别)是:

[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 守护程序,身份验证问题就会消失,用户可以成功连接到 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组没有映射到任何 AD 对象(它在 Windows 资源管理器的Security选项卡中显示为UNIX group\testgrp)。

有什么方法可以像这里一样在启用 winbind 的情况下使用本地组(并且不需要创建相应的 AD 对象)?我尝试将其添加到 smbd.conf:

idmap config * : backend = tdb
idmap config * : range = 1000000-1999999

但它并没有改善任何东西,也是因为我猜这只是将 AD 用户/组映射到 Linux 用户/组,而不是相反。

或者,在没有运行 Samba 时,“访问被拒绝”问题可能是什么winbindd?这是更新引入的错误(因此应该作为错误报告发送给 RedHat),还是由于安全模型的某些更改而导致的功能?

redhat samba
  • 4 4 个回答
  • 4422 Views

4 个回答

  • Voted
  1. Best Answer
    Tabs
    2016-04-23T06:54:59+08:002016-04-23T06:54:59+08:00

    我遇到了同样的问题:没有 winbind 的 AD 身份验证对我来说被破坏了。

    我之所以停止winbind,最初是因为它找不到本地组(虽然它似乎找到了正确的用户映射)。这是激活 winbind 的日志摘录:

    [2016/04/22 16:15:20.654780, 5] Auth/token_util.c:527(debug_unix_user_token)
    用户 1154 的 UNIX 令牌
    主组为 496,包含 0 个补充组

    如您所见,用户 ID 是正确的(1154),但除了主要的组(这也是正确的)之外,找不到其他组。

    看来我找到了解决该问题的解决方案:您应该添加该选项

    username map script = /bin/echo

    在 /etc/smb.conf 中。此处提出了此解决方案:http: //samba.2283325.n4.nabble.com/samba-winbind-ignores-local-unix-groups-td3410748.html,但未经测试。

    正如我从手册页中了解到的那样,此选项在 AD 身份验证后强制执行不同的映射。使用 echo 命令只需将名称映射到自身,因此当本地用户名与 AD 用户名相同时,它应该可以工作。结果如下:

    [2016/04/22 16:21:20.996130, 5] auth/token_util.c:527(debug_unix_user_token)
    用户 1154 的 UNIX 令牌
    主组是 496,包含 4 个补充组
    [... 组列表 ...]

    所以总结一下:

    • 激活 winbind 以允许 AD 身份验证;

    • username map script = /bin/echo在conf文件中添加。

    我认为这个解决方案并不理想,但这可能是在等待更好的解决方案时解决的问题。

    • 1
  2. Paul Stauffer
    2016-04-28T12:01:40+08:002016-04-28T12:01:40+08:00

    是的,这是一个上游 Samba 错误,它在最新的 Samba 软件包更新中被介绍给 RHEL 用户。Red Hat 已经意识到了这个问题,并有一个候选补丁来修复它,但截至今天(4 月 27 日)尚未发布该补丁的更新。请参阅https://bugzilla.redhat.com/show_bug.cgi?id=1326918和https://bugzilla.redhat.com/show_bug.cgi?id=1327697以了解这方面的更新。

    同时,如果配置允许,一些用户可能可以运行 winbindd 作为解决方法;否则,像您所做的那样降级到以前的版本是唯一的其他选择。

    • 1
  3. rundblom
    2016-04-20T06:33:03+08:002016-04-20T06:33:03+08:00

    因此,这可能不是放置此内容的正确位置,但我没有声誉点可以发表评论。我在 Scientific Linux 6.7 上也遇到了这个问题,并于上周三在我们的系统中进行了升级。我发现问题出在 netbios 名称解析 (nmb) 上。如果用户指定了活动目录的完全限定域名,则他们被授予访问权限,否则如果他们使用域的 netbios 名称,我将看到“NT_STATUS_ACCESS_DENIED”消息。

    我还发现加入域的 Windows 框能够访问 samba 共享,但我相信这是因为它们具有当前的 kerberos 令牌。

    更新:我发现指定完全限定域名实际上是在搞kerberos票并授予访问权限,我在ubuntu机器上发现安装krb5-user允许nautilus获取kerberos票,然后允许访问(它不起作用没有它),所以我想这是苹果/mac客户端和Windows客户端正在做的事情,我还没有注意到..

    虽然这不是答案,但我希望它有所帮助。尊敬的,-格伦

    • 0
  4. Ale
    2016-05-12T13:50:44+08:002016-05-12T13:50:44+08:00

    正如一些答案和评论中所述,在包含 Badlock 修复后,这确实是 Samba 包中的一个错误。作为临时解决方法,Tabs 提供的解决方案(在配置文件中使用winbindd和设置username map script = /bin/echo指令)运行良好。现在,最近更新的包 (samba-3.6.23-35) 修复了这个错误,使解决方法变得不必要。

    • 0

相关问题

  • 如何设置 Redhat 对 ActiveDirectory 的用户进行身份验证

  • 如何从 RHEL 5 迁移到 CentOS 5?

  • 我应该将 Rails 应用程序部署到哪个目录?

  • 如何移动 MySQL 的数据目录?

  • RHEL 5.3 上可用的 yum 存储库

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve