为什么 Squid ntlm_auth 仅在“cache_effective_group root”时才起作用

为什么 Squid ntlm_auth 仅在“cache_effective_group root”时才起作用

我有 Debian 8 Jessie,其中 Samba 配置为 AD 成员服务器。Samba+Winbind 运行完美:我可以为 AD 用户创建共享并分配权限;getent 密码显示本地用户和 AD 用户等。

一些额外的检查如:

  • 净测试连接
  • klist 和 klist -k /etc/krb5.keytab
  • wbinfo-t
  • wbinfo -a mydomain\myuser%mypasswd
  • wbinfo-u
  • /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-basic

全部成功

身份验证配置squid配置文件(仅与问题相关的行):

...
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 16 startup=5 idle=5
...
acl AuthorizedUsers proxy_auth REQUIRED
http_access allow AuthorizedUsers
http_access deny all
...

我还添加了用户代理人私钥团体 (正如这里提到的):

gpasswd -a proxy winbindd_priv

重新启动 Squid 后,我会在浏览器(任何浏览器)中看到询问用户名和密码的对话框。

当我设置

cache_effective_group root 

ntlm_auth 工作正常:没有用户名和密码对话框,用户名自动获取并显示在访问日志. 删除后 Auth 不起作用缓存有效组。 这好像是ntlm_auth有效组时无法通过特权管道连接到 Winbind不是 root

我尝试了一些:

  1. 更改群组所有权/var/运行/samba/winbind_privileged代理人
  2. 更改权限/var/运行/samba/winbind_privileged允许任何用户访问
  3. 缓存有效组明确地私钥(并在进程列表中检查)
  4. 彻底改变团体成员身份代理人用户私钥

没什么帮助

只有“cache_effective_group root”有帮助

对于我来说,使用 Squid 的 root 组并不是一个好主意。

还需要检查什么才能以非特权用户身份运行它?

答案1

我自己找到了答案:

Winbind 特权管道的真正位置是在 /var/lib/samba/winbindd_privileged不是 /var/run/samba/winbind_privileged

在杰西它拥有根:根并拥有以下权利:0750

我已改变所有权:

chown root:winbindd_priv /var/lib/samba/winbindd_privileged/

现在没有“cache_effective_group”一切正常

PS. 终于在 2014 年报告了一个错误 :) https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=754339尚未修复

答案2

一直在与 Ubuntu 16 上使用 squid 3 的 ntlm auth 问题作斗争。这正是我的问题。一旦我更改所有权,ntlm auth 就会立即开始工作。

答案3

我已经解决了使用 sgsquid.conf

auth_param ntlm program /usr/bin/sg winbindd_priv -c "/usr/bin/ntlm_auth --diagnostics --helper-protocol=squid-2.5-ntlmssp --require-membership-of=MYDOMAINNAME+WEBGROUPS"

相关内容