Файловый сервер Samba в AD на Debian 11

Краткое руководство по установке и первоначальной настройке файлового сервера Samba с интеграцией с контроллером домена Active Directory на ОС Debian GNU/Linux 11.6.

В первую очередь необходимо указать FDQN в файле /etc/hostname

# hostnamectl set-hostname fileserver.homenet.local

и поправить строчку в файле /etc/hosts:

127.0.1.1	fileserver.homenet.local fileserver

Проверим командой:

# hostnamectl status

После этого устанавливаем службу ntp для синхронизации времени с контроллером домена

# apt install ntp ntpdate

Служба запустится автоматически после установки.

Затем открываем файл /etc/ntp.conf и перед списком pool указываем сервер контроллера домена:

server dc1.homenet.local

Перезапускаем службу ntp

# systemctl restart ntp

и сверяем дату и время

# date

Переходим к настройке Kerberos. Устанавливаем пакет krb5-user

# apt install krb5-user

открываем файл /etc/krb5.conf и приводим его к следующему виду:

[logging]
	default = FILE:/var/log/krb5libs.log
	kdc = FILE:/var/log/krb5kdc.log
	admin_server = FILE:/var/log/kadmind.log

[libdefaults]
	default_realm = HOMENET.LOCAL
	dns_lookup_kdc = false
	dns_lookup_realm = false
	forwardable = true
	ticket_lifetime = 24h

[realms]
	HOMENET.LOCAL = {
		kdc = dc1.homenet.local
		default_domain = HOMENET.LOCAL
		admin_server = dc1.homenet.local
	}

[domain_realm]
	.homenet.local = HOMENET.LOCAL
	homenet.local = HOMENET.LOCAL

Проверяем работу kerberos

# kinit administrator@HOMENET.LOCAL

потребуется ввести пароль

здесь administrator — учётная запись с правами администратора контроллера домена

Проверяем:

# klist

консоль должна показать примерно такое:

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@HOMENET.LOCAL

Valid starting       Expires              Service principal
10.02.2023 00:27:51  10.02.2023 10:27:51  krbtgt/HOMENET.LOCAL@HOMENET.LOCAL
	renew until 11.02.2023 00:27:45

Значит всё сработало. Теперь удаляем полученный тикет

# kdestroy

Далее устанавливаем Samba и winbind и входим в домен

# apt install samba cifs-utils winbind libnss-winbind libpam-winbind

открываем файл конфигурации samba

# nano /etc/samba/smb.conf

и приводим его к следующему виду:

[global]
        realm = HOMENET.LOCAL
        workgroup = HOMENET

        security = ads
        encrypt passwords = yes

        netbios name = fileserver
        server string = %h, Samba server %v

        domain master = no
        local master = no
        preferred master = no
        os level = 0
        domain logons = no

        dns proxy = no

        socket options = TCP_NODELAY

        unix charset = UTF-8
        dos charset = 866

        idmap config * :              backend = tdb
        idmap config * :              range   = 3000-7999
        idmap config HOMENET : backend = rid
        idmap config HOMENET : range   = 10000-999999

        winbind enum users = yes
        winbind enum groups = yes
        winbind refresh tickets = yes
        winbind use default domain = yes
        winbind offline logon = yes
        winbind cache time = 300
        template homedir = /srv/share/users/%D/%U
        template shell = /bin/bash

        load printers = no
        show add printer wizard = no
        printcap name = /dev/null
        disable spoolss = yes

        log level = 0 vfs:1

Затем увеличиваем лимит одновременно открытых файлов до 16384. Для этого открываем /etc/security/limits.conf и в самом конце допишем такие строки:

*               -       nofile          16384
root            -       nofile          16384

Проверяем конфигурацию Самбы утилитой testparm

# testparm

в консоли получим ответ:

Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER

Press enter to see a dump of your service definitions

жмём Enter и консоль покажет такую выгрузку:

# Global parameters
[global]
	disable spoolss = Yes
	dns proxy = No
	domain master = No
	dos charset = 866
	load printers = No
	local master = No
	os level = 0
	preferred master = No
	printcap name = /dev/null
	realm = HOMENET.LOCAL
	security = ADS
	server string = %h server
	show add printer wizard = No
        template homedir = /srv/share/users/%D/%U
	template shell = /bin/bash
	winbind enum groups = Yes
	winbind enum users = Yes
	winbind offline logon = Yes
	winbind refresh tickets = Yes
	winbind use default domain = Yes
	workgroup = HOMENET
	idmap config homenet :	range = 10000-999999
	idmap config homenet :	backend = rid
	idmap config * :	range = 3000-7999
	idmap config * : backend = tdb

После этого не помешает перезагрузить машину

# shutdown -r now

Теперь подключим Самбу к домену

# net ads join -U administrator@homenet.local

вводим пароль и консоль покажет такой результат:

Using short domain name -- HOMENET
Joined 'FILESERVER' to dns domain 'homenet.local'

Это значит, что в DNS контроллера домена homenet.local добавлена A-запись fileserver.

Для того, чтобы мы могли видеть и пользоваться учётными записями и группами домена, настроим службу winbind. Для этого открываем файл /etc/nsswitch.conf и изменим параметры passwd и group:

passwd:         files winbind
group:          files winbind

Перезапускаем службу winbind

# systemctl restart winbind

Теперь нам необходимо проверить доверительные отношения с контроллером домена

# wbinfo -t

консоль должна вывести такую строчку:

checking the trust secret for domain HOMENET via RPC calls succeeded

Это значит, что Active Directory доверяет Самбе.

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

# wbinfo -u

а также групп

# wbinfo -g

Если консоль всё это выводит, значит всё настроено правильно. Если нет, то перезагрузим машину

# shutdown -r now

и повторим эти команды, должно будет работать.

Далее можно начинать открывать ресурсы для пользователей. Для этого создадим директорию /srv/share/

# mkdir /srv/share/

назначим ей владельца — группу sambashare и дадим полные права

# chown :sambashare /srv/share/
# chmod 777 /srv/share/

в этой директории создадим директорию test

# mkdir /srv/share/test/

и зададим владельца уже пользователя домена vasya_petrov

# chown vasya_petrov /srv/share/test/
# chmod 777 /srv/share/test/

снова откроем файл /etc/samba/smb.conf и пропишем эту директорию в шарах:

[Test Folder]
	writeable = yes
	read list = @sales fedya_ivanov
	valid users = vasya_petrov @buh "@Администраторы домена"
	path = /srv/share/test

и перезапускаем службы самбы

# systemctl restart smbd
# systemctl restart nmbd

Теперь на другой машине в домене homenet.local открываем

\\fileserver\ 

и увидим шару Test Folder

Здесь получается, что у группы sales и пользователя fedya_ivanov права только на чтение, а у пользователя vasya_petrov и групп buh и Администраторы домена — права на чтение и запись.

Файловый сервер Samba в AD на Debian 11: 3 комментария

  1. Отличная статья!
    Кратко и по делу. Завелось все с первого разу.
    Добавил себе в закладки.
    Спасибо.

  2. Присоединюсь к предыдущему оратору — статья ОГОНЬ!
    Правда у меня возникла проблема. На первом Debian’е завелось сразу, а вот на втором почему-то в DC не удалось DNS самбы прописать. Выдает ошибку:
    root@deb:/etc# net ads join -U admin@homenet.local
    Enter admin@homenet.local‘s password:
    Using short domain name — HOMENET
    Joined ‘DEB’ to dns domain ‘homenet.local’
    DNS Update for deb.homenet.local failed: ERROR_DNS_UPDATE_FAILED
    DNS update failed: NT_STATUS_UNSUCCESSFUL
    Пришлось руками в DC прописывать DNS. Где копать?

  3. это ерундовая ошибка, такое периодически бывает, когда несколько контроллеров домена: один глюкнул, можно прописать в /etc/krb5.conf другой контроллер, например dc2.homenet.local или dc3.homenet.local или dcn.homenet.local — в зависимости от того, как они у вас нумеруются. там то и весь смысл этой ошибки, что он просто не смог прописаться в dns.

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

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