Файловый сервер Samba [209.1]

Рейтинг: 48.7% · 7 голосов
Курс LPIC-2 (201-450 и 202-450): емкостное планирование, ядро, хранилище и RAID/LVM, продвинутая сеть, DNS/BIND, Apache/Nginx, Samba/NFS, DHCP/LDAP, почта, безопасность и VPN.
Ответить
Аватара пользователя
Sergey_Sysadmin
Сообщения: 134
Зарегистрирован: 11 май 2026, 05:31

Файловый сервер Samba [209.1]

Сообщение Sergey_Sysadmin »

Оглавление курса (41)
  1. Введение в LPIC-2 и уровень инженера
  2. Измерение и устранение проблем с ресурсами [200.1]
  3. Прогнозирование потребности в ресурсах
  4. Компоненты ядра Linux [201.1]
  5. Сборка ядра из исходников [201.2]
  6. Управление модулями ядра в рантайме [201.3]
  7. Кастомизация запуска системы [202.1]
  8. Восстановление системы [202.2]
  9. Альтернативные загрузчики [202.3]
  10. Работа с файловой системой Linux [203.1]
  11. Обслуживание файловых систем [203.2]
  12. Создание и настройка опций ФС [203.3]
  13. Программный RAID [204.1]
  14. Тюнинг доступа к устройствам хранения [204.2]
  15. Менеджер логических томов LVM [204.3]
  16. Базовая конфигурация сети [205.1]
  17. Продвинутая конфигурация сети [205.2]
  18. Диагностика сетевых проблем [205.3]
  19. Сборка и установка программ из исходников [206.1]
  20. Резервное копирование [206.2]
  21. Оповещение пользователей о событиях
  22. DNS-сервер BIND: базовая настройка [207.1]
  23. Зоны DNS: создание и сопровождение [207.2]
  24. Безопасность DNS-сервера [207.3]
  25. Веб-сервер Apache: базовая настройка [208.1]
  26. Apache и HTTPS [208.2]
  27. Кэширующий прокси Squid [208.3]
  28. Веб-сервер и обратный прокси Nginx [208.4]
  29. Файловый сервер Samba [209.1] (вы здесь)
  30. Файловый сервер NFS [209.2]
  31. DHCP-сервер [210.1]
  32. Аутентификация PAM и SSSD [210.2]
  33. Использование LDAP-клиента
  34. Сервер OpenLDAP [210.4]
  35. Почтовый сервер Postfix [211.1]
  36. Управление доставкой почты и Sieve [211.2]
  37. Доступ к почтовым ящикам: Dovecot [211.3]
  38. Linux как маршрутизатор и фильтр [212.1]
  39. FTP-серверы [212.2]
  40. SSH углублённо [212.3]
  41. Безопасность, IDS и VPN [212.4 + 212.5]
Урок 28. Файловый сервер Samba [209.1]

Samba нужен тогда, когда в сети живут Windows-машины (или Linux-клиенты, которым удобнее ходить по SMB), а файлы и принтеры лежат на Linux-сервере. Задача администратора - поднять сервер, который Windows видит как обычный сетевой ресурс, раздать на нём папки с правильными правами и подключить пользователей. В этом уроке разберём протокол SMB/CIFS, структуру smb.conf, базу пользователей Samba, современные уровни безопасности, вступление в домен Active Directory и обратное монтирование шары на Linux через cifs.

Изображение

Как это работает

SMB (Server Message Block) - это сетевой протокол доступа к файлам и принтерам, родной для Windows. CIFS - это старое имя одного из его диалектов (SMB1). Важно понимать актуальное состояние на 2026 год: SMB1/CIFS считается небезопасным и почти везде отключён по умолчанию, и сервер, и клиент договариваются на диалект SMB3 (точнее SMB3.1.1) с шифрованием и подписью. Слово cifs осталось только в названии модуля ядра и утилиты монтирования, к старому протоколу оно отношения уже не имеет.

Серверная часть Samba - это два демона под systemd. Демон smbd обслуживает файлы и принтеры (порт 445), демон nmbd отвечает за старую службу имён NetBIOS и в современных сетях часто не нужен. За разрешение имён сегодня отвечает DNS, а не широковещалки NetBIOS.

Ключевой момент, который путает новичков: учётные записи Samba отдельны от системных. Чтобы пользователь vasya мог зайти на шару, он должен (а) существовать как Unix-аккаунт в /etc/passwd для прав на файлы и (б) иметь запись в базе Samba с отдельным NT-хешем пароля. Эти базы не синхронизируются автоматически - пароль в Samba задаётся своей командой.

Уровень безопасности задаёт параметр security. На 2026 год живых значений два. security = user (это значение по умолчанию) - сервер сам проверяет логин и пароль по своей базе, классический файловый сервер в рабочей группе. security = ads - сервер вступает в домен Active Directory и доверяет аутентификацию контроллеру домена через Kerberos. Старые значения share и server из Samba давно удалены, на экзамене их достаточно знать как историю.

Права на шаре работают в два слоя. Сначала параметры самой Samba (read only, writable, valid users, write list) решают, пустить ли клиента и дать ли ему писать. Затем уже обычные права Unix на каталог и файлы решают, что реально можно сделать. Маски create mask и directory mask накладываются логическим И на права, с которыми Windows пытается создать файл, обрезая лишние биты.

Команды и примеры

Установка. Debian 13 / Ubuntu 24.04:

Код: Выделить всё

apt install samba smbclient cifs-utils
RHEL 10 / Fedora 41+:

Код: Выделить всё

dnf install samba samba-client cifs-utils
Минимальный /etc/samba/smb.conf с одной общей и одной приватной шарой:

Код: Выделить всё

[global]
   workgroup = WORKGROUP
   server string = Files
   security = user
   map to guest = never
   server min protocol = SMB3
   # smb encrypt = required  # принудительное шифрование канала

[public]
   path = /srv/samba/public
   read only = no
   guest ok = no
   valid users = @smbusers
   create mask = 0664
   directory mask = 0775

[private]
   path = /srv/samba/private
   valid users = vasya
   write list = vasya
   browseable = no
Проверка синтаксиса перед перезапуском - обязательна:

Код: Выделить всё

testparm
systemctl restart smbd nmbd
Команда testparm разбирает конфиг, показывает ошибки и выводит итоговые параметры с учётом значений по умолчанию.

Заводим пользователя Samba. Сначала Unix-аккаунт, потом запись в Samba:

Код: Выделить всё

useradd -M -s /usr/sbin/nologin vasya
smbpasswd -a vasya       # задать пароль Samba, ключ -a = добавить
smbpasswd -e vasya       # включить запись (-d отключить)
pdbedit -L -v            # посмотреть базу пользователей Samba
Вступление в домен Active Directory (security = ads). В smb.conf задают realm и security = ads, затем заводят машину в домен:

Код: Выделить всё

net ads join -U Administrator
net ads testjoin        # проверить членство в домене
wbinfo -u               # список доменных пользователей через winbind
Монтирование шары на Linux-клиенте через модуль cifs:

Код: Выделить всё

mount -t cifs //server/public /mnt/pub \
   -o username=vasya,uid=1000,gid=1000,vers=3.1.1
Ключ vers задаёт диалект, uid/gid назначают локального владельца смонтированным файлам. Постоянное монтирование через /etc/fstab с вынесением пароля в защищённый файл:

Код: Выделить всё

//server/public  /mnt/pub  cifs  credentials=/etc/samba/cred,uid=1000,_netdev  0  0
Файл /etc/samba/cred содержит строки username=, password=, domain= и должен иметь права 0600.

Частые грабли
  • Создали Unix-пользователя, но забыли smbpasswd -a - вход отбивается с ошибкой пароля, хотя пароль верный. Samba ищет в своей базе, а не в /etc/shadow.
  • Запись Samba создана, но не включена. Без smbpasswd -e (или с пометкой [D] в pdbedit) пользователь заблокирован.
  • Права на шаре разрешают запись, а Unix-права на каталог - нет. Проверяйте оба слоя: ls -ld каталога и valid users одновременно.
  • Монтирование падает с mount error(112) или Host is down - чаще всего это рассогласование диалектов. На старый сервер добавьте vers=1.0, но лучше поднимите на нём SMB3.
  • Пароль открытым текстом в fstab - все его видят. Только credentials= с файлом 0600.
  • Забыли открыть порт 445 в nftables/firewalld - клиент просто не достучится. На RHEL: firewall-cmd --add-service=samba --permanent.
  • map to guest = bad user тихо пускает чужих как гостя. Если шара приватная, ставьте never.
Мини-лаба
  • Установите пакеты samba и cifs-utils на свой дистрибутив.
  • Создайте каталог /srv/samba/public, группу smbusers и Unix-пользователя без shell, добавьте его в группу.
  • Опишите в smb.conf шару public по примеру выше, прогоните testparm и устраните ошибки.
  • Заведите пользователя в Samba через smbpasswd -a и -e, проверьте базу через pdbedit -L.
  • Откройте порт 445 в фаерволе и перезапустите smbd.
  • С другой Linux-машины (или локально) смонтируйте шару через mount -t cifs с vers=3.1.1 и убедитесь, что можете создать файл.
  • Проверьте маски: создайте файл с клиента и посмотрите ls -l на сервере - права должны совпасть с create mask.
Контрольные вопросы
  • Чем база пользователей Samba отличается от системной и какой командой задаётся пароль Samba?
  • Какие значения параметра security актуальны в 2026 году и чем отличается user от ads?
  • Как взаимодействуют права на уровне шары (valid users, write list) и Unix-права на файлы?
  • Зачем нужны create mask и directory mask и как они применяются к правам?
  • Какой диалект SMB используется по умолчанию и как смонтировать шару со старого сервера, поддерживающего только SMB1?
  • Какие два демона составляют серверную часть Samba и за что отвечает каждый?
👍4 ❤️3 🔥1 😄 🤔3
Аватара пользователя
feebish
Сообщения: 1
Зарегистрирован: 02 июн 2026, 14:22

Re: Файловый сервер Samba [209.1]

Сообщение feebish »

А обязательно держать nmbd запущенным? У меня сеть чисто на DNS, NetBIOS никто не использует - вроде можно отключить и всё работает по \\server по имени из DNS.
👍 ❤️ 🔥 😄 🤔3
Аватара пользователя
oatmeal11
Сообщения: 1
Зарегистрирован: 12 май 2026, 18:41

Re: Файловый сервер Samba [209.1]

Сообщение oatmeal11 »

Поймал mount error(112) на старую NAS-ку, добавил vers=1.0 и завелось. Но в логах ругань на небезопасный протокол - правильно понимаю, что лучше NAS перепрошить под SMB3, чем тянуть SMB1?
👍3 ❤️1 🔥 😄 🤔
Ответить
← Предыдущая глава
Веб-сервер и обратный прокси Nginx [208.4]
Следующая глава →
Файловый сервер NFS [209.2]

Все главы курса «LPIC-2: инженер Linux (201 + 202)»

Поделиться темой: ✈ Telegram VK

Вернуться в «LPIC-2: инженер Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость