Отключаем межсетевой экран

systemctl stop ufw
systemctl disable ufw

Отключаем systemd-networkd-wait-online

systemctl disable systemd-networkd-wait-online.service
systemctl mask systemd-networkd-wait-online.service

Отключаем cloud-init

touch /etc/cloud/cloud-init.disabled

Перезагружаем

init 6

Устанавливаем необходимые пакеты

apt install mc
apt install ntpdate
apt install net-tools
apt install dnsutils

Устанавливаем точное время ubuntu_time_sync
Настраиваем resolv.conf

systemctl disable --now systemd-resolved
cp /etc/resolv.conf /etc/resolv.conf.backup
sudo unlink /etc/resolv.conf
sudo touch /etc/resolv.conf
sudo mcedit /etc/resolv.conf
nameserver 192.168.150.2
nameserver 192.168.150.109
search DOMAIN.LOCAL
sudo chattr +i /etc/resolv.conf

Настраиваем hosts

mcedit /etc/hosts
127.0.0.1   localhost
::1         localhost
127.0.0.1	samba-ubuntu samba-ubuntu.domain.local
192.168.150.112	samba-ubuntu samba-ubuntu.domain.local

также в DNS контроллера домена нужно добавить A-запись samba-ubuntu.domain.local
также в DNS контроллера домена нужно добавить PTR-запись для samba-ubuntu.domain.local

Настраиваем поиск по истории
mcedit /etc/inputrc
...
"\e[A":history-search-backward
"\e[B":history-search-forward

Устанавливаем пакеты для samba

apt install acl 
apt install attr 
apt install samba 
apt install samba-dsdb-modules 
apt install samba-vfs-modules 
apt install winbind 
apt install libpam-winbind 
apt install libnss-winbind 
apt install libpam-krb5 
apt install krb5-config 
apt install krb5-user

Перезагружаем

init 6

Проверяем

nslookup samba-ubuntu
nslookup 192.168.150.112

Устанавливаем пакеты для диагностики

apt install iputils-arping iputils-ping iputils-tracepath
apt install traceroute

Устанавливаем пакет для скачивания, потом когда-нибудь пригодится

apt install wget

Настраиваем kerberous

mcedit /etc/krb5.conf
[libdefaults]
    default_realm = DOMAIN.LOCAL
    dns_lookup_realm = false
    dns_lookup_kdc = true

Примечание: учетные записи в домене не должны совпадать с
учетными записями в локальной машине, например не
создавайте в домене учетную запись root, adm, apache, www и др.
иначе некоторые службы не будут корректно работать
в локальной машине

Настраиваем samba (везде DOMAIN меняете на свой домен)

mcedit /etc/samba/smb.conf
[global]
   workgroup = DOMAIN
   security = ADS
   realm = DOMAIN.LOCAL

   winbind refresh tickets = Yes

   #включаем pam offline authentication
   #разрешить вход офлайн, если не доступны контроллеры домена
   #также смотри ниже pam_winbind.conf
   winbind offline logon = yes
   lock directory = /var/cache/samba

   #включаем поддержку ACL
   vfs objects = acl_xattr
   map acl inherit = Yes
   #следующая строка необходима только
   #для SAMBA версии ниже чем 4.9.0
   store dos attributes = Yes

   dedicated keytab file = /etc/krb5.keytab
   kerberos method = secrets and keytab

   #чтобы не вводить домен с именем пользователя
   winbind use default domain = yes

   #для тестовых целей
   #в производственном режиме закомментировать
   winbind enum users = yes
   winbind enum groups = yes

   #отключаем сервер печати
   load printers = no
   printing = bsd
   printcap name = /dev/null
   disable spoolss = yes

   #чтобы отключить некоторые ошибки
   local master = no
   domain master = no
   preferred master = no

   #файлы логов
   log file = /var/log/samba/%m.log
   log level = 1

   #указываем диапазоны ID
   #вместо DOMAIN укажите свой домен, н-р SAMDOM
   idmap config * : backend = tdb
   idmap config * : range = 3000-7999
   idmap config DOMAIN:backend = rid
   idmap config DOMAIN:range = 10000-999999

   #указываем оболочку и путь к домашней папке,
   #одни настройки для всех
   template shell = /bin/bash
   template homedir = /home/%U

#[records]
#   path = /data
#   read only = no

Добавляем машину в домен

net ads join -U логин_администратора_домена

Редактируем nsswitch.conf

mcedit /etc/nsswitch.conf

заменяем passwd и group

...
#passwd:         files systemd
passwd:         files winbind
#group:          files systemd
group:          files winbind
...

Запускаем и включаем samba

systemctl start smbd
systemctl start nmbd
systemctl start winbind
systemctl enable smbd
systemctl enable nmbd
systemctl enable winbind

Перезагружаем

init 6

Проверяем

wbinfo --ping-dc
id samba_admins

samba_admins - эта группа должна уже быть в AD
Копируем pam_winbind.conf

cp /usr/share/doc/libpam-winbind/examples/pam_winbind/pam_winbind.conf /etc/security/pam_winbind.conf

Редактируем pam_winbind.conf

mcedit /etc/security/pam_winbind.conf
...
#разрешить вход закэшированным пользователям, если не доступны 
#контроллеры домена
;cached_login = no
cached_login = yes
...
#разрешить доступ только пользователям группы в домене
#(например подключение по ssh, доступ к папкам настраивается ниже)
;require_membership_of =
require_membership_of = DOMAIN\samba_admins
...
#создавать домашние директории на лету
#create homedirectory on the fly
;mkhomedir = no
mkhomedir = yes

Перезагружаем

init 6

Утилита pam-auth-update позволяет безопасно редактировать файлы pam
Проверяем настройки pam

pam-auth-update

выйдет меню

  1. Kerberos authentication
  2. Unix authentication
  3. Winbind NT/Active Directory authentication
  4. Register user sessions in the systemd control group hierarchy
  5. Create home directory on login
  6. Inheritable Capabilities Management

Ставим отметку на пунктах ниже, пункты 1 и 5 убираем:

  2. Unix authentication
  3. Winbind NT/Active Directory authentication
  4. Register user sessions in the systemd control group hierarchy
  6. Inheritable Capabilities Management

Данный выбор внесет изменения в файлы pam
Проверяем

pam-auth-update

Разрешаем доступ к директории /data по протоколу smb

mkdir -p /data
mcedit /etc/samba/smb.conf

расскоментируем следующее

...
[records]
   path = /data
   read only = no

Даем права группе samba_admins полные, остальным на чтение

chown root:samba_admins /data/
chmod 775 /data/

Сейчас вы уже имеете разрешение подключения через ssh
группе samba_admins (смотри настройку pam_winbind.conf выше).
Если нужно, чтобы они имели права root по ssh, то
добавляем следующие строки ниже
Выше в pam_winbind.conf мы разрешили только группу samba_admins

mcedit /etc/sudoers
...
#%samba_admins ALL=(ALL) ALL
%samba_admins ALL=(ALL)  NOPASSWD: ALL

Перезагружаем

init 6