linux-labs

Вики / Службы и systemd

Samba (общие папки SMB)

Сервис Ubuntu 24.04 · Samba 4 СлужбыСетьФайлы

Файловые шары для Windows и не только — SMB-сервер, пользователи, монтирование.

Samba реализует протокол SMB/CIFS — общие папки, совместимые с Windows (и с Linux/macOS). Сервер smbd (файлы) + nmbd (имена); конфиг /etc/samba/smb.conf.

В отличие от nfs (мир Linux, по UID/GID), SMB удобнее для смешанных сред и аутентификации по логину/паролю.

systemctl status smbd
ss -tlnp | grep -E ':445|:139'     # слушает ли SMB (см. ss)

/etc/samba/smb.conf — глобальная секция и шары:

[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
sudo apt install samba
sudo smbpasswd -a alice            # завести SMB-пароль (ОТДЕЛЬНО от системного!)
sudo smbpasswd -e alice            # включить пользователя
testparm                           # проверить синтаксис smb.conf
sudo systemctl restart smbd
smbstatus                          # кто подключён, какие файлы открыты, блокировки
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          # явная версия протокола (если старый сервер)

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 для единого владельца.

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

См. также