Как подружить Samba и контроллер домена Windows 2003

Материал из FedoraMD.org Wiki
Версия от 19:30, 5 октября 2011; 87.248.191.50 (обсуждение) (адаптация - использовать DOMAIN\\user)
Перейти к навигации Перейти к поиску

ВНИМАНИЕ: команды предваряемые символом '#' должны выполняться с правами 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 DOMAIN\\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