LinuxRuLinux без лишней теории
Сеть и файлы

Общая папка Samba: настройка в Ubuntu и подключение из Windows 11

Редакция LinuxRu7 мин чтенияИнструкции

Общая папка Samba настраивается за десять минут: ставите пакет samba, описываете каталог в /etc/samba/smb.conf, задаёте пароль командой smbpasswd -a и подключаетесь из Windows 11 по адресу \\IP\имя. Гостевой доступ без пароля в свежей Windows 11 не работает, поэтому сразу делайте вход по паролю.

Общая папка Samba: настройка в Ubuntu и подключение из Windows 11
Фото: Hämmerle S, CC BY-SA 2.5, Wikimedia Commons
Содержание
  1. Установка
  2. Папка и права
  3. smb.conf
  4. Пароли Samba
  5. Подключение из Windows
  6. Клиент Linux
  7. Ошибки
  8. Частые вопросы

Установка Samba в Ubuntu, Debian, Fedora и Arch

Samba реализует протокол SMB, тот самый, через который Windows открывает сетевые папки. Поставив её на Linux-компьютер, вы получаете папку, которая в Проводнике Windows 11 выглядит как обычный сетевой диск. Пакеты и имена служб в разных дистрибутивах немного отличаются:

ДистрибутивУстановкаСлужбаФайрвол
Ubuntu 26.04, Debian 13sudo apt install sambasmbdsudo ufw allow samba
Fedora 44sudo dnf install sambasmbfirewall-cmd --add-service=samba
Arch Linuxsudo pacman -S sambasmbпо настройкам nftables или ufw

В Debian и Ubuntu служба запускается сразу после установки. В Fedora и Arch её нужно включить вручную, а в Arch к тому же нет готового /etc/samba/smb.conf: файл создаётся с нуля, пример лежит в репозитории Samba и приведён в статье Samba на ArchWiki.

# Fedora и Arch
sudo systemctl enable --now smb
# Fedora: открыть порты навсегда
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload

Служба nmbd (в Fedora и Arch nmb) отвечает за старый NetBIOS. Windows 11 по нему компьютеры почти не ищет, так что включать её не обязательно.

Каталог для общего доступа и права Linux

Samba не обходит права файловой системы. Пользователь, пришедший по сети, работает как конкретный пользователь Linux, и если тот не может писать в каталог, запись не пройдёт, что бы ни стояло в smb.conf. Поэтому сначала готовим каталог.

Для одного человека проще всего расшарить папку в своём домашнем каталоге. Для семьи или нескольких компьютеров удобнее отдельный каталог и группа:

sudo groupadd smbshare
sudo usermod -aG smbshare ivan
sudo mkdir -p /srv/share
sudo chgrp smbshare /srv/share
# 2 в начале: новые файлы наследуют группу каталога
sudo chmod 2775 /srv/share

Бит SGID на каталоге (та самая двойка) заставляет новые файлы и папки получать группу smbshare, а не основную группу создателя. Без него через месяц половина файлов окажется недоступна для записи другим участникам. Как читать такие права и что значат цифры, описано в статье про права доступа chmod и chown.

SELinux в Fedora

В Fedora мало выставить права: SELinux не пустит smbd в каталог без нужной метки. Присвойте её постоянно:

sudo semanage fcontext -a -t samba_share_t "/srv/share(/.*)?"
sudo restorecon -Rv /srv/share
# если расшариваете домашние каталоги
sudo setsebool -P samba_enable_home_dirs on

Описание общего ресурса в smb.conf

Основной файл настроек /etc/samba/smb.conf. Перед правкой сделайте копию: sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.orig. Секция [global] задаёт общие параметры, каждая следующая секция в квадратных скобках описывает одну общую папку. Имя в скобках и будет именем ресурса в сети.

[global]
   workgroup = WORKGROUP
   server string = Домашний сервер
   server min protocol = SMB2
   map to guest = never

[share]
   comment = Общая папка
   path = /srv/share
   browseable = yes
   read only = no
   valid users = @smbshare
   force group = smbshare
   create mask = 0664
   directory mask = 2775
  • valid users = @smbshare пускает только членов группы. Можно перечислить и отдельных пользователей через пробел.
  • read only = no разрешает запись. Для папки только на чтение оставьте yes, а писать разрешите избранным через write list.
  • create mask и directory mask задают права для новых файлов и каталогов, force group подстраховывает SGID.
  • server min protocol = SMB2 отключает древний SMB1, который Windows 11 всё равно не использует.

После каждой правки проверяйте синтаксис и перезапускайте службу:

testparm
sudo systemctl restart smbd   # в Fedora и Arch: smb

testparm покажет опечатки в именах параметров и выведет итоговую конфигурацию без комментариев. Полный перечень параметров есть в man smb.conf.

Ещё два типовых ресурса

Медиатека для телевизора и всех домашних, куда пишет только один человек:

[media]
   path = /srv/media
   read only = yes
   valid users = @smbshare
   write list = ivan

Личные домашние каталоги. Специальная секция [homes] отдаёт каждому пользователю Samba его собственный /home/имя, и чужие каталоги он не увидит:

[homes]
   browseable = no
   read only = no
   valid users = %S

В Ubuntu такая секция уже есть в стандартном файле, но закомментирована.

Пользователи и пароли Samba

У Samba своя база паролей, отдельная от системной. Пользователь должен существовать в Linux, но пароль для сети задаётся отдельно, и его можно сделать другим, чем пароль входа в систему.

# добавить пользователя в базу Samba и задать пароль
sudo smbpasswd -a ivan
# включить учётную запись, если она отключена
sudo smbpasswd -e ivan
# список пользователей Samba
sudo pdbedit -L

Если общей папкой пользуются люди без своего входа в этот компьютер, заведите им системного пользователя без оболочки и домашнего каталога. Войти в систему он не сможет, а к общей папке подключится:

sudo useradd -M -s /usr/sbin/nologin -G smbshare masha
sudo smbpasswd -a masha

Подробно об учётных записях, группах и sudo в статье пользователи и sudo в Linux.

Не делайте гостевую папку без пароля, даже для дома. Windows 11 начиная с версии 24H2 по умолчанию требует подпись SMB и отключает небезопасный гостевой вход в редакциях Pro и выше, так что гостевой ресурс просто не откроется. Отдельный пользователь Samba с паролем решает эту проблему без правки политик Windows.

Подключение к папке из Windows 11

Узнайте адрес Linux-компьютера командой ip -br a. Дальше в Windows 11 есть три пути.

  1. Проводник. В адресной строке введите \\192.168.1.10\share и нажмите Enter. Windows спросит логин и пароль Samba, отметьте Запомнить учётные данные.
  2. Сетевой диск. В Проводнике откройте Этот компьютер, меню с тремя точками, Подключить сетевой диск. Выберите букву, укажите тот же путь и галочку Восстанавливать подключение при входе.
  3. Командная строка. Удобно для скриптов:
    net use Z: \\192.168.1.10\share /user:ivan /persistent:yes
    # отключить и забыть
    net use Z: /delete

Подпись SMB, которую требует Windows 11, Samba поддерживает без дополнительной настройки. Если в своей сети вы хотите обязательную подпись и со стороны сервера, в [global] добавьте server signing = mandatory.

Чтобы компьютер появился в разделе Сеть

Windows 10 и 11 ищут соседей по протоколу WS-Discovery, который Samba сама не анонсирует. За это отвечает отдельная служба wsdd. В свежих Debian и Ubuntu она ставится пакетом wsdd-server, в более старых выпусках пакет называется wsdd, в Fedora и Arch это wsdd. Ей нужны порты UDP 3702 и TCP 5357. В Windows профиль сети должен быть Частным, иначе обнаружение выключено. Подключение по адресу работает и без wsdd.

Доступ к папке с другого Linux

В файловых менеджерах GNOME Files и Dolphin достаточно ввести в адресной строке smb://192.168.1.10/share. Для проверки из терминала есть smbclient:

# какие ресурсы отдаёт сервер
smbclient -L //192.168.1.10 -U ivan
# интерактивная сессия, как ftp
smbclient //192.168.1.10/share -U ivan

Если папка нужна постоянно и сразу после загрузки, смонтируйте её через cifs в fstab с файлом учётных данных. Готовая строка и объяснение опций есть в статье про монтирование дисков и fstab.

Частые ошибки и как их разбирать

Начинайте с журнала сервера, он почти всегда говорит, на каком этапе отказ: journalctl -u smbd -e (в Fedora и Arch -u smb). Подробные журналы по клиентам лежат в /var/log/samba/.

NT_STATUS_LOGON_FAILURE или повторный запрос пароля

Пользователя нет в базе Samba или пароль другой. Проверьте sudo pdbedit -L и при необходимости заново выполните smbpasswd -a. Windows при этом могла запомнить старый пароль: удалите запись в Диспетчере учётных данных (раздел Учётные данные Windows) или выполните net use * /delete и войдите заново.

NT_STATUS_ACCESS_DENIED при записи

Вход прошёл, но права Linux не дают писать. Проверьте ls -ld /srv/share, членство в группе командой id ivan и параметр read only. В Fedora посмотрите отказы SELinux: sudo ausearch -m avc -ts recent.

Ошибка 0x80070035, сетевой путь не найден

Windows не достучалась до сервера. Проверьте, что служба запущена (systemctl status smbd), что файрвол пропускает порт TCP 445, и попробуйте адрес вместо имени компьютера. Если по адресу работает, а по имени нет, дело в разрешении имён, а не в Samba.

Нужен доступ из другой сети

Не открывайте порт 445 в интернет. Для доступа к домашней папке снаружи поднимите VPN, например по инструкции WireGuard для домашней сети, и подключайтесь по внутреннему адресу.

Частые вопросы

Почему Windows 11 не открывает гостевую папку Samba?

С версии 24H2 Windows 11 Pro и старшие редакции по умолчанию требуют подпись SMB и запрещают небезопасный гостевой вход. Создайте пользователя Samba с паролем и подключайтесь под ним.

Пароль Samba и пароль входа в Linux одно и то же?

Нет. Пользователь должен существовать в системе, но пароль для Samba задаётся отдельно командой smbpasswd -a и может отличаться от системного.

Почему компьютер с Linux не виден в разделе Сеть?

Windows ищет соседей через WS-Discovery. Установите службу wsdd (пакет wsdd-server или wsdd в зависимости от дистрибутива) и сделайте профиль сети в Windows частным. Подключение по IP работает и без этого.

Как дать доступ только на чтение?

В секции ресурса поставьте read only = yes. Если нескольким людям нужна запись, перечислите их в параметре write list.

Нужно ли включать SMB1 ради старого устройства?

Только если без этого никак, и лучше на отдельном ресурсе. SMB1 устарел и небезопасен, Windows 11 его не использует, поэтому для обычных компьютеров оставьте server min protocol = SMB2.

Документация и источники

Читайте также

Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.