Статья чисто для того, чтобы молодые коллеги, которые столкнутся с подобной задачей, могли быстрее с ней справиться. Всю информацию по развёртыванию брал почти только
из оф. документации Samba, ибо русскоязычные статьи скудны и неинформативны.
Всё описанное ниже можно даже назвать листингом по настройке. Создана статья с целью привести последовательность действий по базовой настройке на русском языке, т.к. не все могут сходу разобраться в англоязычной документации (понятное дело, можно сразу идти в официальную д��кументацию Samba и там рыться)
Стенд: Debian 12, 1 ЦП, 1 ГБ ОЗУ (машина чистая, только создана)
Устанавливаем программу sudo
apt install sudoДобавляем созданного пользователя в процессе установки в группу sudo
usermod -aG sudo имя_вашего_пользователяУстанавливаем все необходимые сервисы для работы samba, как члена домена
sudo apt-get install acl attr samba winbind libpam-winbind libnss-winbind krb5-config krb5-user dnsutils python3-setproctitleДалее все команды выполняется либо с применением sudo, либо в привилегированном режиме sudo – i
Указываем NTP-сервер
nano /etc/systemd/timesyncd.conf
[Time]NTP=ваш_NTP_серверFallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.orgsystemctl enable systemd-timesyncd
systemctl start systemd-timesyncd
systemctl status systemd-timesyncd
Указываем настройки для Kerberos
nano /etc/krb5.conf
[libdefaults]default_realm = полное_название_вашего_доменаdns_lookup_realm = falsedns_lookup_kdc = true
Команда для просмотра, где находится основной конфигурационный файл samba:
smbd -b | grep CONFIGFILEРедактируем конфигурационный файл, добавляя необходимые строчки
nano /etc/samba/smb.conf
min domain uid = 0security = ADSworkgroup = краткое_имя_доменаrealm = полное_название_вашего_доменаlog file = /var/log/samba/%m.loglog level = 1# Default ID mapping configuration for local BUILTIN accounts# and groups on a domain member. The default (*) domain:# - must not overlap with any domain ID mapping configuration!# - must use a read-write-enabled back end, such as tdb.idmap config * : backend = tdbidmap config * : range = 3000-7999# - You must set a DOMAIN backend configuration# idmap config for the краткое_имя_домена domainidmap config краткое_имя_домена : backend = rididmap config краткое_имя_домена : range = 10000-999999# Template settings for login shell and home directorytemplate shell = /bin/bashtemplate homedir = /home/%U
Перечитываем конфигурационные файлы
smbcontrol all reload-configСоздаём папку
mkdir -p /usr/local/samba/etc/Добавляем в smb.conf строчки
username map = /etc/samba/user.mapusername map = /usr/local/samba/etc/user.mapСоздаём файл сопоставления root с доменным пользователем
nano /usr/local/samba/etc/user.map!root = краткое_имя_домена\логин_пользователяКоманда для проверки синтаксиса основного конфигурационного файла - testparm
В файл hosts заносим соответствие IP-адреса и доменного имени
nano /etc/hosts
X.X.X.X share-test.полное_название_вашего_домена share-test
Присоединяем машину к домену
net ads join -U логин_пользователя (должен иметь права для присоединения к домену)В nsswitch.conf приводим первые две строчки к следующему виду для того, чтобы доменные пользователи видели локальную систему
nano /etc/nsswitch.conf
passwd: files winbindgroup: files winbind
Запускаем службы
systemctl start smbd
systemctl start nmbd
systemctl start winbind
Перезагружаемся
poweroff –rebootПроверяем, что можем подключиться к контроллеру домена
wbinfo --ping-dcПроверяем поддерживает ли наша samba расширенные ACL
smbd -b | grep HAVE_LIBACLЕсли вывод HAVE_LIBACL, то всё окДобавляем ещё пару строчек в конфигурационный файл
nano /etc/samba/smb.conf
vfs objects = acl_xattrmap acl inherit = yes
Добавляем в ещё один файл сопоставление пользователя домена с root
nano /etc/samba/user.map
!root = Домен\логин_пользователя
Назначаем права на изменение прав для общих папок для доменных администраторов или другой группы (можно и пользователя поставить)
net rpc rights grant "Домен\Domain Admins" SeDiskOperatorPrivilege -U "Домен\логин_пользователя"Проверяем список тех, кто может менять права
net rpc rights list privileges SeDiskOperatorPrivilege -U "Домен\логин_пользователя"Создаём папку для общего использования
mkdir -p /srv/samba/Demo/Меняем владельца и группу папки
chown root:"Домен\Domain Admins" /srv/samba/Demo/Ставим права на папку
chmod 0770 /srv/samba/Demo/Вносим информацию про нашу папку в конфигурационный файл samba
nano /etc/samba/smb.conf
[Demo]path = /srv/samba/Demo/read only = noПеречитываем конф. Файл
smbcontrol all reload-configНастраиваем права для общей папки через Windows
Нажимаем Win+X -> Управлением компьютером
Вкладка Действие и «Подключиться к другом компьютеру», вводим имя нашей машины, например, share-test
В Инструментах системы открываем Общие папки и уже через ПКМ по нашей папке -> Свойства -> Безопасность, настраиваем права
Добавляем в файл smb.conf в раздел нашей папки строчку
acl_xattr:ignore system acls = yesПроверяем права на папку
getfacl /srv/samba/Demo/
Источники:
