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Код: Выделить всё
dnf install samba samba-client cifs-utilsКод: Выделить всё
[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Заводим пользователя Samba. Сначала Unix-аккаунт, потом запись в Samba:
Код: Выделить всё
useradd -M -s /usr/sbin/nologin vasya
smbpasswd -a vasya # задать пароль Samba, ключ -a = добавить
smbpasswd -e vasya # включить запись (-d отключить)
pdbedit -L -v # посмотреть базу пользователей SambaКод: Выделить всё
net ads join -U Administrator
net ads testjoin # проверить членство в домене
wbinfo -u # список доменных пользователей через winbindКод: Выделить всё
mount -t cifs //server/public /mnt/pub \
-o username=vasya,uid=1000,gid=1000,vers=3.1.1Код: Выделить всё
//server/public /mnt/pub cifs credentials=/etc/samba/cred,uid=1000,_netdev 0 0Частые грабли
- Создали 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 и за что отвечает каждый?