Настройка Samba сервера с авторизацией через Active Directory в Debian

Автор: | 22.09.2016

Обратился ко мне один из моих заказчиков с задачей:
Сделать файловый сервер для отдела с авторизацией в домене windows, но так, чтобы если у пользователя нету прав на чтение папки - запрашивало пароль (windows server этого делать не умеет, т.к. если учетка пользователя в домене, то он смотрит разрешения и если нету то выдает Access Denied и сделать что-то с этим нельзя).
Решение пало на Debian (исторически его люблю) и Samba 5.
Итак, у нас есть пустой Debian:

aptitude install samba winbind smbclient krb5-user

Winbind — это демон, который позволяет Sambe узнавать пользователей AD и общаться с ними как с локальными.

Kerberos используется для интеграции Samba в Active Directory. Открываем его конфиг в /etc/krb5.conf и подставляем свои параметры (выделил красным):

[logging]
default = FILE:/var/log/krb5.log
kdc = FILE:/var/log/krb5kdc.log
[libdefaults]
default_realm = DOMAIN.COM
clockskew = 500
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 324000
[realms]
DOMAIN.COM = {
kdc = DC.DOMAIN.COM
admin_server = DC.DOMAIN.COM
default_domain = DOMAIN.COM
}
[domain_realm]
.domain.com = DOMAIN.COM
[login]
krb4_convert = true
krb4_get_tickets = false

UPD: у меня было куча левых доменов, я их закоментил 🙂

Проверяем правильность настроек:

kinit domain_user@DOMAIN.COM

UPD: обязательно домен должен быть указан в ВЕРХНЕМ РЕГИСТРЕ!

domain_user — пользователь с правами входа в домен. Если все правильно — команда завершиться без вывода на экран. У меня все прошло без ошибок, но вот самые распространенные из них:

kinit: krb5_get_init_creds: Client (domain_user@DOMAIN.COM) unknown

Неправильный логин или пароль пользователя domain_user.

kinit: krb5_get_init_creds: unable to reach any KDC in realm (DOMAIN.COM)

Стоит проверить правильность конфига и настройки ДНС.

kinit: krb5_get_init_creds: Clock skew too great

Несоответствие времени на контроллере домена и на нашем сервере. Синхронизировать время с Active Directory можно командой:

ntpdate DC.DOMAIN.COM

Теперь настроим Самбу и Winbind - /etc/samba/smb.conf. Мой работающий конфиг ниже, можно просто скопировать его подставив свои данные (выделил красным)(конфиг по умолчанию я для простоты "грохнул") :

[global]
obey pam restrictions = Yes
log file = /var/log/samba/log.%m
log level = 1
socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
encrypt passwords = yes
idmap uid = 10000-40000
idmap gid = 10000-40000
auth methods = winbind
name resolve order = hosts bcast lmhosts
case sensitive = no
dns proxy = no
netbios name = SOFT
server string = %v samba
password server = dc.domain.com
# обязательно указывать имя домена в верхнем регистре
realm = DOMAIN.COM
client use spnego = yes
client signing = yes
local master = no
domain master = no
preferred master = no
workgroup = DOMAIN
debug level = 2
# ads указывает что авторизация проходит на уровне домена
security = ads
template homedir = /home/samba/%U
template shell = /bin/false
unix charset = UTF-8
dos charset = 866
max log size = 50
os level = 0
follow symlinks = yes
winbind separator = \
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum groups = yes
winbind enum users = yes
# этот параметр поможет в корректном соблюдении прав доступа к папкам
winbind use default domain = yes
[Soft]
path = /home/samba/soft
comment = Soft directory
browseable = yes
readonly = no
writable = yes
guest ok = No
create mask = 0777
valid users = @"DOMAIN smbusers"
read list = @"DOMAIN smbusers"
write list = @"DOMAIN smbusers"

Внимание! Имя домена указывается в верхнем регистре.
В моем случае smbusers — группа в Active Directory, пользователи которой будут иметь доступ к общей папке.

Далее открываем /etc/nsswitch.conf и добавляем выделенную информацию:

passwd: compat winbind
group: compat winbind
shadow: compat winbind

Рестартуем сервисы:

/etc/init.d/winbindd restart
/etc/init.d/samba restart

Вводим компьютер в домен:

net ads join -U domain_user

domain_user — пользователь домена, у которого достаточно привилегий для присоединения компьютера к домену.

Проверим работу winbindd:

wbinfo -u
wbinfo -g

Эти команды должны вывести список пользователей и список групп соответственно.

Вот и все.
Теперь можно покдлючаться с доменной машины, под доменной учетной записью, и если у вас есть права на папку то зайдет и даст создать файл/папку, а если нету прав - то попросит пароль 🙂

UPD: не забываем дать права 777 на папку /home/samba/soft

chmod -R 777 /home/samba/soft

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *