Статья чисто для того, чтобы молодые коллеги, которые столкнутся с подобной задачей, могли быстрее с ней справиться. Всю информацию по развёртыванию брал почти только
из оф. документации 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.org -
systemctl 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/
Источники:
ссылка на оригинал статьи https://habr.com/ru/articles/797725/
Добавить комментарий