Назад | Перейти на главную страницу

Почему Squid ntlm_auth работает только когда «cache_effective_group root»

У меня Debian 8 Jessie с Samba настроен как рядовой сервер AD. Samba + Winbind отлично работает: я могу создавать общие ресурсы и назначать права пользователям AD; getent passwd показывает как локальных пользователей, так и пользователей AD и т. д.

Некоторые дополнительные проверки, например:

все преуспели

Конфигурация аутентификации в squid.conf (только строки, относящиеся к вопросу):

...
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
...

Я также добавил пользователя доверенное лицо к winbindd_priv группа (как упоминалось здесь):

gpasswd -a proxy winbindd_priv

После перезапуска Squid я получаю диалоговое окно с запросом имени пользователя и пароля в браузере (в любом браузере).

Когда я установил

cache_effective_group root 

ntlm_auth работает нормально: нет диалоговых окон для имени пользователя и пароля, имя пользователя получается автоматически и отображается в access.log. Auth не работает при удалении cache_effective_group. Похоже ntlm_auth не может подключиться к Winbind через привилегированный канал, когда эффективная группа не корень.

Я пробовал:

  1. изменить групповое владение / var / run / samba / winbind_privileged к доверенное лицо
  2. изменить разрешение / var / run / samba / winbind_privileged разрешить доступ любому пользователю
  3. устанавливать cache_effective_group прямо к winbindd_priv (и проверьте это в списке процессов)
  4. полностью изменить членство в группе доверенное лицо пользователь winbindd_priv

Ничего не помогло

Помогает только "cache_effective_group root"

Для меня не рекомендуется использовать корневую группу для Squid.

Что еще проверить, чтобы запустить его от имени непривилегированного пользователя?

Я сам нашел ответ:

Настоящее место для привилегированного канала 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 это еще не исправлено

Я решил использовать sg на squid.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"

Я боролся с проблемой ntlm auth на Ubuntu 16 с помощью squid 3. Это была моя точная проблема. Как только я сменил владельца, ntlm auth сразу заработал.