Samba реализует протокол SMB/CIFS — общие папки, совместимые с Windows
(и с Linux/macOS). Сервер smbd (файлы) + nmbd (имена); конфиг /etc/samba/smb.conf.
В отличие от nfs (мир Linux, по UID/GID), SMB удобнее для смешанных сред и
аутентификации по логину/паролю.
bash
systemctl status smbd
ss -tlnp | grep -E ':445|:139' # слушает ли SMB (см. ss)
Конфигурация
Весь сервер настраивается одним файлом /etc/samba/smb.conf: глобальная секция
[global] и по секции на каждую шару. После любой правки — testparm
(проверка синтаксиса) и sudo systemctl restart smbd; reload для смены шар
без разрыва текущих подключений недостаточно, если менялась секция [global].
ini
[global]
workgroup = WORKGROUP
server string = files
map to guest = bad user
[share]
path = /srv/share
read only = no
valid users = alice @smbusers
create mask = 0664
directory mask = 0775
Ключевые директивы: path — каталог на диске; valid users — кто может
подключиться (имя или @группа); read only — запрет записи по умолчанию;
create mask/directory mask — права новых файлов и каталогов; map to
guest = bad user в [global] пускает неизвестных пользователей гостем — без
этой строки анонимный доступ закрыт.
Рецепты
2
Сервер
bash
sudo apt install samba
sudo smbpasswd -a alice # завести SMB-пароль (ОТДЕЛЬНО от системного!)
sudo smbpasswd -e alice # включить пользователя
testparm # проверить синтаксис smb.conf
sudo systemctl restart smbd
smbstatus # кто подключён, какие файлы открыты, блокировки
Клиент (Linux)
bash
smbclient -L //10.0.0.1 -U alice # список шар
smbclient //10.0.0.1/share -U alice # интерактивно (ftp-подобно: get/put)
sudo apt install cifs-utils
sudo mount -t cifs //10.0.0.1/share /mnt/s -o username=alice,uid=1000,gid=1000
# постоянно — креды в файле (не светить пароль в fstab):# /etc/smbcred: username=alice / password=...# /etc/fstab: //10.0.0.1/share /mnt/s cifs credentials=/etc/smbcred,_netdev,nofail 0 0
sudo mount -t cifs ... -o vers=3.0 # явная версия протокола (если старый сервер)
Неполадки
5
СимптомПричина и решение
NT_STATUS_LOGON_FAILURE
Неверный SMB-пароль/пользователь. SMB-пароль задаётся отдельно smbpasswd -a (это
не системный пароль). Юзер должен существовать в системе (users-groups).
NT_STATUS_ACCESS_DENIED
Системные права на каталог (path) или valid users/read only в smb.conf.
Проверь и permissions, и секцию шары (smbstatus/testparm).
Не видно сервера/шары
Порт SMB 445/tcp закрыт (firewall) или служба не запущена. testparm для
конфига; systemctl status smbd. Проверь доступность: nc-zv host 445.
Mount: «host is down» / protocol negotiation failed
Несовпадение версии SMB. Добавь -o vers=3.0 (или 2.1). Очень старый SMBv1 в
новых ядрах отключён — не используй.
Кириллица/права в именах файлов
unix charset = UTF-8; права новых файлов — create mask/directory mask,
force user/force group для единого владельца.
Опасно
map to guest = bad user вместе с valid users, где перечислена не вся
нужная группа, открывает шару анонимным пользователям сети — на проде эту
строку не ставь без явной причины. read only = no для шары с
create mask = 0777 даёт любому подключившемуся право менять чужие файлы;
задавай маски по минимально нужным правам, а не копируй пример как есть.
См. также
nfs — Сетевые каталоги по NFS — экспорт на сервере, монтирование на клиенте, права.
firewall — Фильтрация трафика — простой ufw и низкоуровневый nftables.
users-groups — Учётные записи, группы, членство; useradd/usermod, /etc/passwd и /etc/group.