Как подружить Samba и контроллер домена Windows 2003
ВНИМАНИЕ: команды предваряемые символом '#
' должны выполняться с правами root (Суперпользователь). Открыв терминал (или находясь в консоли) с правами обычного пользователя, введите команду $ su -
для повышения уровня привелегий. Символы '$
' и '#
' в начале строки не являются частью команды и не должны вводится. Прочие команды могут выполняться с правами обыкновенного пользователя.
Содержание
Графическая интеграция
При помощи SADMS.
Ручная интеграция
Требования
Samba собранная с опциями: --with-ldap --with-ads --with-krb5 --with-pam --with-winbind
или просто установите из rpm.
Условимся что:
192.168.0.1 – server.domain.com – это сервер Windows 2003
192.168.0.10 – client.domain.com – клиентская машина Linux с Samba
Настройка разрешения имен
Надеюсь что на вашем контроллере домена поднят DNS (Domain Names Server) с зонами прямого и обратного просмотра. Если поднят, то в файле /etc/resolv.conf прописываем следующее:
search domain.com domain domain.com nameserver 192.168.0.1
Если же в сети нет DNS (что вряд ли) сервера - можно воспользоваться файлами hosts на обеих машинах.
На машине в файл /etc/hosts добавляем:
192.168.0.1 server.domain.com server 192.168.0.10 client.domain.com client
На контроллере домена в файле %Systemroot%\~System32\drivers\etc\hosts пишем следующее:
192.168.0.1 server server.domain.com 192.168.0.10 client client.domain.com
%Systemroot% - папка WINNT или WINDOWS(на системном диске)
Настройка Kerberos
Часть этого документа использует DOMAIN.COM прописными буквами. Удостоверьтесь, что в вашем конфиге krb5.conf правильный регистр!
Приводим файл krb5.conf в соответствие с настройками вашей сети(не забывайте про регистр!).
[libdefaults]
default_realm = DOMAIN.COM
[realms]
SERVER.DOMAIN.COM = {
kdc = server.domain.com
}
[domain_realms]
.domain.com = DOMAIN.COM
После этого выполняем команду(необходимо знать пароль администратора КД):
# kinit Admin@DOMAIN.COM
Admin@DOMAIN.COM 's Password:
kinit: NOTICE: ticket renewable lifetime is 1 week
Возможные проблемы на этом этапе:
# kinit Admin@DOMAIN.COM
Admin@DOMAIN.COM 's Password:
kinit: krb5_get_init_creds: Client (Admin@DOMAIN.COM) unknown
Надо проверить правильность ввода логина\пароль админа.
# kinit Admin@DOMAIN.COM
Admin@DOMAIN.COM 's Password:
kinit: krb5_get_init_creds: unable to reach any KDC in realm (DOMAIN.COM)
Проверьте правильность настроек DNS и конфига krb5.conf
# kinit Admin@DOMAIN.COM
Admin@DOMAIN.COM 's Password:
kinit: krb5_get_init_creds: Clock skew too great
Рассинхронизация времени на КД и клиенте – выполните команду net time set(в linux) Желательно выполнять данную команду раз в неделю(можно через cron).
Настройка Samba
Пожалуй, самая легкая часть настройки.
Выкладываю уже готовый к эксплуатации конфиг (с комментариями к тому, на что надо обратить внимание):
[global]
log file = /var/log/samba/log.%m
socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
null passwords = yes #Разрешить пустые пароли
interfaces = 192.168.0.10/255.255.255.0 #На каком интерфейсе работать
hosts allow = 192.168.0. 127.0.0.1 #Хостам из каких сетей разрешено
encrypt passwords = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
auth methods = winbind
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
name resolve order = hosts wins bcast lmhosts
case sensitive = no
dns proxy = no
netbios name = client #NetBIOS имя машины
server string = My Linux
password server = server.domain.com #dns имя сервера win 2003
realm = DOMAIN.COM #Имя рилма
client use spnego = yes
client signing = yes
local master = no
domain master = no
preferred master = no
workgroup = DOMAIN #Укороченное имя домена
debug level = 2
security = ads
dos charset = 866
unix charset = UTF-8 #Кодировка ФС –UTF-8 или KOI8-R
max log size = 50
os level = 0
wins server = 192.168.0.1 #Укажите здесь WINS сервер, если он есть
[upload]
comment = Upload
path = /srv/smb/upload
browseable = yes
writeable = yes
directory mask = 0777
create mask = 0666
valid users = @”Администраторы домена”, DOMAIN\Пользователь
Входим в Active Directory
Убедившись, что на контроллере домена нет машин с именем, которое мы использовали в конфиге. Выполняем команду:
# net ads join -U Administrator
Настройка Winbind
1. Откроем файл /etc/nsswitch.conf для редактирования и найдем следующие строчки:
passwd: compat shadow: compat group: compat
2. Заменим их на:
passwd: compat winbind shadow: compat group: compat winbind
3. Перезапустим сервис winbind:
# service winbind restart
4. Проверим работу:
# wbinfo -t
если вывод:
checking the trust secret via RPC calls succeeded
значит доверительная учетная запись компьютера в домене создана.
5. Проверка пользователей и групп:
# wbinfo -u
# wbinfo -g
должно вывести пользователей домена и группы домена.
6. Проверяем аутентификацию в домене:
# wbinfo -a user%123
где user - пользователь домена, 123 - пароль. Если ответ:
plaintext password authentication succeeded сhallenge/response password authentication succeeded
значит аутентификация в домене работает.
7. Проверяем, чтобы наш Linux видел пользователей домена:
# id user
должно вывести id пользователя домена и к каким группам он относится.
Настройка PAM
Перед выполнением нижеперечисленных действий рекомендуется сделать бэкап всех редактируемых файлов.
Файл /etc/pam.d/samba не требует редактирования, т.к. он уже содержит необходимое. Редактируем /etc/pam.d/login
#%PAM-1.0 auth required pam_securetty.so auth sufficient pam_winbind.so auth sufficient pam_unix.so use_first_pass auth required pam_stack.so service=system-auth auth required pam_nologin.so account sufficient pam_winbind.so account required pam_stack.so service=system-auth password required pam_stack.so service=system-auth session required pam_stack.so service=system-auth session optional pam_console.so
Теперь на машину с linux можно заходить используя доменные аккаунты(DOMAIN\User).
Поддержка SSH
Для того, чтобы можно было использовать доменные аккаунты для входа через ssh в файле /etc/pam.d/sshd делаем изменения аналогично /etc/pam.d/login.
Заключение
Ну вот и все. Теперь можно запустить Samba:
# service smb start
# service nmb start
# service winbind start
В случае неполадок смотрим: /var/log/samba