Отключаем межсетевой экран
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