Необходимо чтобы SAMBA была собрана с поддержкой winbind, т.е.
configure --with-winbind --with-winbind-auth-challenge
далее компилируем и инсталлируем:
make
make install
После установки, SAMBA нужно настроить на использование winbind и домен Windows.
Файл smb.conf должен содержать следующие строки:
[global]
workgroup = WORK - Имя нашего Windows-домена
netbios name = PDC - Имя сервера (необязательно)
server string = ProxyServer
hosts allow = 10.128. 127. - Диапазоны IP адресов, с которых могут обращаться к samba. Для безопасности.
winbind separator = +
Если у вас в сети только один домен и вы хотите при авторизации пользователя на PDC
использовать только имя пользователя без имени домена,
или ваш PDC выдает только имя пользователя без имени домена, можно прописать
winbind use default domain = yes
Иначе, если вы хотите использовать при авторизации конструкцию domain+user (у вас в сети несколько доменов), пропишите
winbind use default domain = no
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/winnt/%D/%U
template shell = /bin/bash
max log size = 50
security = domain
password server = yourservername
encrypt passwords = yes
Еще в /etc/samsba/lmhosts внесите ваш контроллер домена:
your.ip.addr yourservername
Это очень странно, но у меня samba стала авторизоваться в домене win2003 только после занесения имени сервера в /etc/samsba/lmhosts.
После изменения smb.conf можно попробовать зарегистрироваться в домене Windows.
net join -U Administrator
Необходимо чтобы первый вход с компьютера с samba был осуществлен из-под пользователя
домена windows, имеющего права администратора домена. В этот момент происходит обмен секретами между samba и контроллером домена.
Если регистрация в домене прошла успешно, будет выдано сообщение:
Joined domain YourDomain.
Далее запускаем демона WINBINDD:
winbindd -d9
и контролируем его работу:
команда wbinfo -p должна вернуть:
Ping to winbindd succeeded on fd 6
команда wbinfo -t должна вернуть:
checking the trust secret via RPC calls succeeded.
Если это не так, заглядываем в логи winbind и разбираемся в чем дело.
Копируем библиотеку libnss_winbind.so в каталог /lib:
cp nsswitch/libnss_winbind.so /lib
создаем символические ссылки на нее:
ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.1
ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2
Изменяем файл /etc/nsswitch.conf. Он должен содержать строки вида
passwd: files winbind
group: files winbind
Перезапустите winbindd
Пробуем авторизовать пользователя в Windows домене:
wbinfo -a [домен+]пользователь_домена%пароль
если авторизация прошла успешно, будет выдано сообщение:
plaintext password authentication succeeded
challenge/response password authentication succeeded
Далее заводим пользователей в систему.
Пользователи -> загрузить всех пользователей домена.
Если контроллер домена под win2000/2003 выдает только
имена пользователей без имени домена, введите в поле "Домен" название вашего домена. Это нужно
сделать обязательно, так как squidу контроллер домена вполне может выдавать и название домена.
И оно будет занесено в файл access.log.
Конфигурируем squid для работы с NTLM авторизацией, как описано ниже, даем команду на реконфигурацию squid и пробуем авторизоваться пользователем.
если авторизоваться удалось, то все оставляем как есть, иначе заходим и смотрим что пишет squid в access.log
Например:
1126510610.023 1617 192.168.0.153 TCP_MISS/200 11761 GET http://www.apc.com/resource/include/hitbox/hbe.js DOMAIN+User DIRECT/159.215.19.11 application/x-javascript
В зависимости от того, как записан пользователь в строке, изменяем настройки ntlm в sams:
если домен записан:
DOMAIN+user - выставляем "Домен пользователя в access.log записывть" в "ЗАГЛАВНЫМИ" буквами
domain+user - выставляем "Домен пользователя в access.log записывть" в "строчными" буквами
Domain+user - выставляем "Домен пользователя в access.log записывть" в "без изменения" буквами.
если домен записан:
domain+USER - выставляем "Домен пользователя в access.log записывть" в "ЗАГЛАВНЫМИ" буквами
domain+user - выставляем "Домен пользователя в access.log записывть" в "строчными" буквами
domain+User - выставляем "Домен пользователя в access.log записывть" в "без изменения"
буквами - если у вас в имени пользователя используются и заглавные и строчные буквы.
Если спользуется домен, то выставьте разделитель. Это может быть и/или
+
/
@
Разработчики squid рекомендуют использовать при работе с samba 3.x хелпер, идущий с samba 3.x ntlm_auth.
в файл /etc/squid/squid.conf добавляем строки:
auth_param ntlm program /path/to/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param ntlm max_challenge_reuses 0
auth_param ntlm max_challenge_lifetime 2 minutes
auth_param basic program /path/to/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
Причем важно чтобы NTLM авторизация шла первой, иначе будет применяться авторизация basic, и IE будет спрашивать пароль.
Если хелпер wb_ntlmauth по какой-то причине не удается заставить авторизовать пользователей, можете попробовать использовать хелпер fakeauth_auth.