Windows и Mac под одной крышей: Samba-сервер для архитектурного бюро

Задача клиента: архитектурное бюро без централизованного хранилища

К нам обратилось архитектурное бюро «АрхПроект» из Москвы — команда из 25 специалистов: архитекторы, дизайнеры интерьеров, инженеры и администрация. Клиент столкнулся с хаосом в хранении файлов: проектная документация разбросана по рабочим станциям, версии чертежей путаются, а совместная работа над проектами превращается в кошмар с флешками и email-вложениями.

Ситуация на момент обращения:

  • 25 сотрудников — 15 на Windows, 10 на macOS (дизайнеры и архитекторы)
  • Файлы хранятся локально на рабочих станциях — нет общего хранилища
  • Обмен файлами через флешки, email и мессенджеры — постоянная путаница с версиями
  • При поломке рабочей станции терялись проекты (бэкапов не было)
  • Новый сотрудник получал доступ к файлам по принципу «попроси у коллеги скинуть на флешку»

Клиент хотел получить централизованное хранилище с разграничением доступа по отделам, совместимое с Windows и macOS, с корзиной для восстановления удалённых файлов и возможностью подключения к существующему домену Active Directory.

Мы провели аудит текущего состояния данных и обнаружили, что суммарный объём рабочих файлов на рабочих станциях составляет около 800 ГБ — чертежи AutoCAD, 3D-модели в ArchiCAD и Revit, растровая графика Photoshop, презентации и проектная документация в PDF. При этом минимум 30% файлов дублировались на разных компьютерах, а некоторые сотрудники хранили критически важные проекты только на своём рабочем столе без какого-либо бэкапа.

Отдельной проблемой была совместная работа: когда два архитектора работали над одним проектом, им приходилось «по очереди» копировать файлы друг другу на флешке, что приводило к конфликтам версий и потере изменений. Однажды из-за такой путаницы бюро потеряло неделю работы над коммерческим проектом.

Ещё одна боль клиента — macOS. Десять сотрудников работали на Mac (архитекторы и дизайнеры), и любое решение должно было одинаково хорошо работать как с Windows, так и с macOS. Встроенная поддержка SMB в macOS делала Samba идеальным выбором — никакого дополнительного ПО на стороне клиента не требуется.

Спланированная структура ресурсов

Мы провели аудит потребностей каждого отдела и спланировали структуру общих папок:

РесурсПутьДоступНазначение
Общий/srv/samba/sharedВсе сотрудникиОбщие документы, шаблоны
Бухгалтерия/srv/samba/accountingОтдел бухгалтерииФинансовые документы
Руководство/srv/samba/managementТолько руководителиСтратегические документы
Проекты/srv/samba/projectsПроектные группыРабочие файлы проектов
Обмен/srv/samba/exchangeВсе, автоочисткаВременный обмен файлами

Также определили политику квот, бэкапов и хранения файлов для каждого ресурса.

Установка Samba на выделенный сервер

Мы установили Samba на выделенный сервер Debian 12 с RAID-массивом для надёжности:

# Обновление и установка
sudo apt update
sudo apt install -y samba samba-common samba-client \
  smbclient cifs-utils winbind libpam-winbind libnss-winbind

# Проверка версии
smbd --version

# Остановка служб перед настройкой
sudo systemctl stop smbd nmbd winbind

Создали бэкап оригинальной конфигурации и подготовили директории:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.original
sudo mkdir -p /srv/samba/{shared,accounting,management,projects,exchange}
sudo chown -R root:root /srv/samba

Вот наше решение: конфигурация smb.conf

Мы создали конфигурацию, оптимизированную под смешанную среду Windows/macOS архитектурного бюро.

При настройке мы учли специфику архитектурного бюро: большие файлы проектов (AutoCAD DWG, ArchiCAD PLN, Revit RVT) требуют высокой пропускной способности, а одновременная работа нескольких дизайнеров над проектом создаёт множество мелких операций чтения-записи. Мы настроили параметры Samba для оптимальной работы с обоими паттернами нагрузки, включили sendfile для быстрой передачи больших файлов и увеличили буферы для потоковых операций.

Глобальные параметры сервера

Конфигурация [global] для автономного файлового сервера:

# /etc/samba/smb.conf
[global]
   workgroup = COMPANY
   server string = File Server %v
   netbios name = FILESERVER
   server role = standalone server

   security = user
   map to guest = never
   encrypt passwords = yes
   min protocol = SMB2
   server min protocol = SMB2
   
   restrict anonymous = 2
   
   log file = /var/log/samba/log.%m
   max log size = 10000
   log level = 1 auth:3
   
   unix charset = UTF-8
   dos charset = CP866
   
   dns proxy = no
   wins support = no
   
   socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
   read raw = yes
   write raw = yes
   use sendfile = yes
   aio read size = 16384
   aio write size = 16384
   
   vfs objects = recycle
   recycle:repository = .recycle/%U
   recycle:keeptree = yes
   recycle:versions = yes
   recycle:maxsize = 104857600

Проверили конфигурацию:

testparm -s

Настройка общих ресурсов для отделов

Мы создали секции для каждого отдела бюро:

# Общая папка для всех сотрудников
[shared]
   comment = Общие документы
   path = /srv/samba/shared
   browseable = yes
   read only = no
   valid users = @staff
   create mask = 0664
   directory mask = 0775
   force group = staff
   inherit permissions = yes

# Бухгалтерия — ограниченный доступ
[accounting]
   comment = Бухгалтерия
   path = /srv/samba/accounting
   browseable = yes
   read only = no
   valid users = @accounting @management
   write list = @accounting
   create mask = 0660
   directory mask = 0770
   force group = accounting
   inherit permissions = yes
   vfs objects = recycle
   recycle:repository = .recycle/%U
   recycle:keeptree = yes

# Руководство — максимальная защита
[management]
   comment = Документы руководства
   path = /srv/samba/management
   browseable = no
   read only = no
   valid users = @management
   create mask = 0660
   directory mask = 0770
   force group = management
   hosts allow = 192.168.1.0/24
   hosts deny = 0.0.0.0/0

# Папка обмена с автоочисткой
[exchange]
   comment = Временный обмен файлами
   path = /srv/samba/exchange
   browseable = yes
   read only = no
   valid users = @staff
   create mask = 0666
   directory mask = 0777
   force group = staff

# Домашние каталоги
[homes]
   comment = Home Directories
   browseable = no
   read only = no
   create mask = 0700
   directory mask = 0700
   valid users = %S

Управление пользователями и правами доступа

Мы создали систему групп и пользователей, отражающую структуру архитектурного бюро.

Для архитектурного бюро правильная организация прав доступа была критически важна: дизайнеры не должны видеть финансовые документы бухгалтерии, а бухгалтерия не должна случайно удалить чертежи. При этом руководство бюро хотело иметь обзорный доступ ко всем папкам для контроля хода проектов.

Создание пользователей и групп

Группы по отделам:

# Создание групп
sudo groupadd staff
sudo groupadd accounting
sudo groupadd management
sudo groupadd projects

# Создание пользователей
sudo useradd -M -s /usr/sbin/nologin -G staff ivanov
sudo useradd -M -s /usr/sbin/nologin -G staff,accounting petrov
sudo useradd -M -s /usr/sbin/nologin -G staff,management,accounting sidorov
sudo useradd -M -s /usr/sbin/nologin -G staff,projects kozlov

# Установка паролей Samba
sudo smbpasswd -a ivanov
sudo smbpasswd -a petrov
sudo smbpasswd -a sidorov
sudo smbpasswd -a kozlov

# Включение учётных записей
sudo smbpasswd -e ivanov
sudo smbpasswd -e petrov

Управление:

# Смена пароля
sudo smbpasswd ivanov

# Блокировка при увольнении
sudo smbpasswd -d petrov

# Список пользователей Samba
sudo pdbedit -L
sudo pdbedit -Lv

Мы создали 25 учётных записей Samba для всех сотрудников бюро, распределив их по группам в соответствии с организационной структурой. Для каждого нового сотрудника мы подготовили скрипт, который создаёт системного пользователя, добавляет его в нужные группы и устанавливает пароль Samba — весь процесс занимает 2 минуты вместо ручной настройки.

Настройка POSIX-прав и ACL

Установили правильные права на каталоги:

# Общая папка
sudo chown root:staff /srv/samba/shared
sudo chmod 2775 /srv/samba/shared

# Бухгалтерия
sudo chown root:accounting /srv/samba/accounting
sudo chmod 2770 /srv/samba/accounting

# Руководство
sudo chown root:management /srv/samba/management
sudo chmod 2770 /srv/samba/management

# Обмен
sudo chown root:staff /srv/samba/exchange
sudo chmod 2777 /srv/samba/exchange

Для проектных папок с гранулярными правами использовали POSIX ACL:

sudo apt install -y acl

# Разные права для проектных команд
sudo mkdir -p /srv/samba/projects/{project-alpha,project-beta}

# Группа project-alpha — полный доступ
sudo setfacl -R -m g:project-alpha:rwx /srv/samba/projects/project-alpha
sudo setfacl -R -d -m g:project-alpha:rwx /srv/samba/projects/project-alpha

# Руководство — чтение всех проектов
sudo setfacl -R -m g:management:rx /srv/samba/projects
sudo setfacl -R -d -m g:management:rx /srv/samba/projects

# Просмотр ACL
getfacl /srv/samba/projects/project-alpha

SGID-бит (chmod 2xxx) гарантирует, что все новые файлы принадлежат группе каталога.

Интеграция с Active Directory клиента

У бюро был существующий контроллер домена Windows Server. Мы интегрировали Samba с Active Directory для единой аутентификации.

Интеграция с Active Directory была критически важна для бюро — сотрудники не должны запоминать дополнительные пароли. Мы обеспечили единую точку входа: один логин и пароль для Windows-рабочей станции, файлового сервера и принтеров. Для macOS-клиентов процесс также прозрачен — macOS нативно поддерживает аутентификацию через Kerberos/AD, достаточно указать адрес сервера в настройках Finder.

Присоединение к домену AD

Предварительно установили необходимые пакеты и настроили DNS/NTP:

# Установка необходимых пакетов
sudo apt install -y realmd sssd sssd-tools adcli samba-common-bin \
  oddjob oddjob-mkhomedir packagekit krb5-user libpam-sss libnss-sss

# Настройка DNS
nano /etc/resolv.conf
nameserver 192.168.1.1
search company.local

# Настройка NTP
sudo apt install -y chrony
echo "server dc01.company.local iburst" | sudo tee -a /etc/chrony/chrony.conf
sudo systemctl restart chrony

# Проверка DNS-обнаружения
realm discover company.local

Присоединили сервер к домену:

sudo realm join --user=Administrator company.local
realm list

# Проверка
id administrator@company.local
getent passwd administrator@company.local

Конфигурация smb.conf для AD

Изменили конфигурацию для аутентификации через AD:

# /etc/samba/smb.conf — секция [global] для AD
[global]
   workgroup = COMPANY
   server string = File Server %v
   netbios name = FILESERVER
   realm = COMPANY.LOCAL
   
   security = ADS
   
   idmap config * : backend = tdb
   idmap config * : range = 10000-19999
   idmap config COMPANY : backend = rid
   idmap config COMPANY : range = 20000-99999
   
   winbind use default domain = yes
   winbind enum users = yes
   winbind enum groups = yes
   winbind refresh tickets = yes
   
   template shell = /bin/bash
   template homedir = /home/%U
   
   kerberos method = secrets and keytab
   dedicated keytab file = /etc/krb5.keytab
   
   log file = /var/log/samba/log.%m
   max log size = 10000

[shared]
   path = /srv/samba/shared
   browseable = yes
   read only = no
   valid users = @"COMPANY\Domain Users"
   create mask = 0664
   directory mask = 0775

[accounting]
   path = /srv/samba/accounting
   browseable = yes
   read only = no
   valid users = @"COMPANY\Accounting" @"COMPANY\Management"
   write list = @"COMPANY\Accounting"
   create mask = 0660
   directory mask = 0770

Настройка NSS и перезапуск:

# /etc/nsswitch.conf
passwd: files systemd winbind
group:  files systemd winbind
shadow: files
sudo systemctl restart smbd nmbd winbind
sudo systemctl enable smbd nmbd winbind

# Проверка
wbinfo -u  # доменные пользователи
wbinfo -g  # доменные группы
wbinfo -t  # доверительные отношения

Принт-сервер для общих принтеров бюро

В бюро было 3 принтера — большой плоттер для чертежей и 2 лазерных для документов. Мы настроили общий доступ через CUPS + Samba.

Настройка принт-сервера для архитектурного бюро имела свои особенности. Плоттер для печати чертежей формата А0 требовал специфического драйвера, который мы установили через CUPS. Мы настроили два профиля печати: «Черновик» (быстрая печать, экономия тонера) и «Финальный» (максимальное качество для презентаций клиентам). Менеджеры по продажам получили доступ только к лазерным принтерам, а плоттер был доступен только архитекторам и дизайнерам — через разграничение прав в Samba.

Установка CUPS и настройка принтеров

Установили и настроили CUPS:

sudo apt install -y cups cups-pdf printer-driver-all
sudo cupsctl --remote-admin --share-printers
sudo usermod -aG lpadmin admin

Добавили принтеры:

lpadmin -p HP-LaserJet -E -v socket://192.168.1.100:9100 \
  -m drv:///hp/hplip.drv/hp-laserjet_pro_m404dn-ps.ppd

lpoptions -d HP-LaserJet
lpstat -p -d

Общий доступ через Samba

Добавили в smb.conf:

# В секции [global]
   printing = cups
   printcap name = cups
   load printers = yes
   cups options = raw

[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
   valid users = @staff

[print$]
   comment = Printer Drivers
   path = /var/lib/samba/drivers
   browseable = yes
   read only = yes
   guest ok = no
   write list = @"COMPANY\Domain Admins"
sudo mkdir -p /var/spool/samba
sudo chmod 1777 /var/spool/samba
sudo systemctl restart smbd

Оптимизация, аудит и обслуживание

Для архитектурного бюро, работающего с большими файлами (чертежи AutoCAD, 3D-модели), производительность файлового сервера критична. Мы выполнили тонкую настройку.

Архитекторы работают с файлами размером от 50 МБ (чертёж AutoCAD) до 2 ГБ (полная 3D-модель здания). При таких объёмах каждый процент оптимизации ощутимо влияет на скорость работы. Мы провели нагрузочное тестирование и добились скорости передачи файлов 110-115 МБ/с по гигабитной сети — практически предел пропускной способности канала.

Параметры производительности и аудит

Оптимизации для больших файлов:

# Производительность smb.conf
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
read raw = yes
write raw = yes
use sendfile = yes
aio read size = 16384
aio write size = 16384
min receivefile size = 16384
write cache size = 1048576
max smbd processes = 0
deadtime = 15
server min protocol = SMB2
client min protocol = SMB2

Сетевые оптимизации ядра:

# /etc/sysctl.conf
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.core.netdev_max_backlog = 5000

sudo sysctl -p

Файловая система XFS для больших объёмов:

# /etc/fstab
/dev/sdb1 /srv/samba xfs defaults,noatime,nodiratime 0 2

Аудит файловых операций для бухгалтерии:

[accounting]
   vfs objects = full_audit recycle
   full_audit:prefix = %u|%I|%S
   full_audit:success = connect disconnect mkdir rmdir open rename unlink write
   full_audit:failure = connect
   full_audit:facility = local5
   full_audit:priority = notice
# /etc/rsyslog.d/samba-audit.conf
local5.notice /var/log/samba/audit.log

Автоматическое подключение дисков и бэкапы

Настроили автоматическое подключение через GPO и логон-скрипты:

@echo off
REM logon.bat
net use S: \\FILESERVER\shared /persistent:yes
net use H: \\FILESERVER\%USERNAME% /persistent:yes

Для macOS-клиентов — автомонтирование через Finder (smb://FILESERVER/shared).

Настроили ежедневное резервное копирование с сохранением ACL:

#!/bin/bash
# /opt/scripts/samba-backup.sh
BACKUP_DIR="/backup/samba/$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"

# Бэкап данных с сохранением ACL
rsync -avz --acls --xattrs /srv/samba/ "$BACKUP_DIR/data/"

# Бэкап конфигурации
cp /etc/samba/smb.conf "$BACKUP_DIR/"

# Бэкап базы пользователей
pdbedit -Le > "$BACKUP_DIR/samba-users.txt"
tdbbackup /var/lib/samba/private/passdb.tdb
cp /var/lib/samba/private/passdb.tdb.bak "$BACKUP_DIR/"

# Удаление старых бэкапов
find /backup/samba/ -maxdepth 1 -mtime +30 -type d -exec rm -rf {} \;
# Автоочистка папки обмена
# /etc/cron.daily/exchange-cleanup
#!/bin/bash
find /srv/samba/exchange -type f -mtime +7 -delete
find /srv/samba/exchange -type d -empty -not -path /srv/samba/exchange -delete

# Очистка корзин
find /srv/samba -name '.recycle' -type d -exec \
  find {} -type f -mtime +30 -delete \;
sudo crontab -e
0 2 * * * /opt/scripts/samba-backup.sh >> /var/log/samba-backup.log 2>&1

Результаты внедрения

Проект занял 1 неделю — от аудита до полностью работающего файлового сервера. Вот результаты:

  • Централизованное хранилище — все 25 сотрудников работают с общими папками, версии файлов не путаются
  • Совместимость — Windows и macOS рабочие станции подключаются без проблем через SMB
  • Разграничение доступа — бухгалтерия видит только свои файлы, руководство имеет доступ ко всему
  • Интеграция с AD — сотрудники входят под доменными учётными записями, единый пароль
  • Корзина — удалённые файлы восстанавливаются из .recycle, спасло 4 файла за первый месяц
  • Аудит — все операции с финансовыми документами логируются
  • Производительность — файлы AutoCAD (100-500 МБ) открываются с сервера так же быстро, как локальные
  • Экономия — 0 рублей лицензионных затрат вместо ~200 000 руб. за Windows Server + CAL

Спустя три месяца после внедрения мы провели повторный аудит и собрали обратную связь от сотрудников. Главный архитектор отметил, что совместная работа над проектами стала «как в облачном сервисе, только быстрее и под нашим контролем». Бухгалтер оценила корзину для удалённых файлов — за первый месяц она спасла четыре важных документа от случайного удаления. Руководитель бюро отметил полную прозрачность — он видит все проекты на одной сетевой шаре и может оценить объём работы каждой команды.

Для macOS-пользователей переход был максимально гладким: Finder нативно работает с SMB, а Time Machine может бэкапить на Samba-ресурс. Windows-пользователи получили привычные сетевые диски через GPO. Общая экономия на лицензиях по сравнению с Windows Server + CAL составила около 200 000 рублей, а типографское бюро получило более надёжное и производительное решение.

Через месяц после внедрения мы помогли клиенту настроить дополнительную папку «Архив проектов» с автоматическим перемещением завершённых проектов. Скрипт на cron проверяет дату последнего изменения файлов в проектных папках и переносит проекты без активности более 90 дней в архивную директорию на отдельном RAID-массиве. Это позволило освободить 200 ГБ на основном хранилище и ускорить навигацию по активным проектам.

Часто задаваемые вопросы

Минимум SMBv2, лучше SMBv3. SMBv1 содержит критические уязвимости (WannaCry) и отключён в Windows 10/11. SMBv3 добавляет шифрование трафика и мультиканальность. Установите server min protocol = SMB2 в smb.conf.

Используйте robocopy с Windows: robocopy \\OLDSERVER\share \\NEWSERVER\share /E /COPY:DATSOU /R:3 /W:5 /LOG:migration.log. Или rsync с Linux через примонтированный CIFS-ресурс. Предварительно создайте группы и пользователей.

Samba не имеет встроенного ограничения. Используйте дисковые квоты Linux: quota, включите в fstab (usrquota,grpquota), настройте через edquota.

Если клиенты Windows — Samba (SMB). Если Linux/macOS — NFS быстрее. В смешанной среде можно оба на одном сервере. Samba предпочтительнее при интеграции с Active Directory.

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#samba настройка#файловый сервер linux#samba active directory#smb linux#общие папки linux windows#samba принт-сервер#smb.conf настройка#samba права доступа