С чего начать Первые шаги трек · 15 ступеней
Linux Labs

Samba — общий доступ к файлам по SMB

5 мин Ubuntu 24.04 · Samba 4

SMB-сервер для общих папок, совместимых с Windows; SMB-пароль отдельный от системного, его легко забыть завести.

Шпаргалка

5 команд Версия для печати
  • sudo smbpasswd -a user SMB-пароль (отдельно от системного!)
  • testparm проверить smb.conf
  • smbstatus кто подключён / открытые файлы
  • smbclient -L //host -U user список шар
  • sudo mount -t cifs //host/share /mnt -o credentials=/etc/smbcred,vers=3.0
  • smb.conf: [share] path= / valid users= / read only=no

Обзор

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.
Загрузка…