Гид по технологиям

Как настроить общую сетевую папку в Ubuntu с помощью Samba

7 min read Linux Обновлено 13 Dec 2025
Samba на Ubuntu: быстро настроить общую папку
Samba на Ubuntu: быстро настроить общую папку

люди разговаривают за ноутбуками, обмениваются файлами по сети

Что такое Samba?

Samba — это свободная реализация протоколов SMB/CIFS (протокол файлового обмена, изначально разработанный Microsoft/IBM), которая позволяет Linux/Unix-системам совместно использовать файлы и принтеры с устройствами Windows и macOS. Коротко: Samba делает вашу папку доступной в локальной сети по знакомым адресам вида \HOST\sharename или smb://host/sharename.

Краткое определение: SMB — сетевой протокол для обмена файлами и ресурсами по TCP/IP.

Основная идея и варианты использования

  • Локальное семейное хранилище для документов и мультимедиа.
  • Общая рабочая папка для команды на офисной сети.
  • Обмен файлами между Linux-сервером и Windows/macOS-клиентами.

Важно: Samba управляет доступом отдельно от файловых прав Linux. Правильно настраивайте владельца, группу и права доступа на уровне файловой системы, а затем — соответствующие параметры в smb.conf.

Шаг 1. Установка Samba

Инструкции рассчитаны на Ubuntu 20.04 (подойдут Ubuntu 16.04 и более новые). Обновите индексы пакетов и установите Samba:

sudo apt update
sudo apt install samba

Проверьте версию установленного демона:

smbd --version

Ожидаемый результат — строка с версией smbd (обычно Samba 4.x на современных релизах). Если команда не найдена — проверьте вывод apt и установку пакетов.

вывод версии samba в терминале

Шаг 2. Настройка Samba (smb.conf)

Главный файл конфигурации Samba находится в /etc/samba/smb.conf. Сделайте резервную копию перед изменениями:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup-$(date +%F)

Откройте файл в редакторе (можно использовать vim, nano, micro):

sudo vim /etc/samba/smb.conf

Ниже — пример секции, которую можно добавить в конец файла. Объяснения параметров даны после блока.

[sambashare]
   comment = Сетевая общая папка Samba на Ubuntu
   path = /home/your_username/sambashare
   force user = smbuser
   force group = smbgroup
   create mask = 0664
   force create mode = 0664
   directory mask = 0775
   force directory mode = 0775
   public = yes
   read only = no

Замените path на вашу домашнюю папку, например /home/alex/sambashare или /srv/samba/sambashare, в зависимости от политики размещения данных.

Пояснения (кратко):

  • section [sambashare] — имя расшаренной службы, видимое в сети.
  • comment — описание, видно в списке шар.
  • path — путь на локальном диске.
  • force user / force group — принудительное соотнесение действий Samba к указанному системному пользователю/группе.
  • create mask / force create mode — маски прав для создаваемых файлов (0664: rw-rw-r–).
  • directory mask / force directory mode — маски прав для директорий (0775: rwxrwxr-x).
  • public = yes — делает ресурс общедоступным; при этом компромисс в безопасности — подумайте, действительно ли нужен гостевой доступ.
  • read only = no — разрешает запись.

Полезная команда для проверки синтаксиса smb.conf:

testparm /etc/samba/smb.conf

testparm покажет итоговую конфигурацию и укажет на возможные ошибки.

Шаг 3. Создание ресурсов Samba на уровне системы

Нужно: создать папку, системную группу и пользователя, назначить права и, при необходимости, задать пароль Samba.

1) Создание общей папки

cd ~
mkdir -p sambashare

Или, для системного расположения:

sudo mkdir -p /srv/samba/sambashare

2) Создание системной группы и пользователя Samba

Создаём системную группу:

sudo groupadd --system smbgroup

Создаём системного пользователя (без домашней папки и с запретом входа):

sudo useradd --system --no-create-home --group smbgroup -s /usr/sbin/nologin smbuser

Примечание: shell /usr/sbin/nologin (на некоторых системах /bin/false) запрещает интерактивную авторизацию. Это нормально для сервисных пользователей.

3) Установка пароля Samba (если вы хотите аутентификацию по пользователю)

Если вы планируете использовать вход как зарегистрированный пользователь, добавьте Samba-пароль для системного пользователя (он же Linux-пользователь):

sudo smbpasswd -a smbuser

smbpasswd попросит ввести пароль и добавит учётную запись для доступа по SMB. Пароль Samba может отличаться от пароля Unix-пользователя.

Если вы используете только гостевой доступ (public = yes), этот шаг можно пропустить, но стоит понимать риски.

4) Назначение владельца и прав

Назначьте владельца и группу на папку и предоставьте группе права на запись:

sudo chown -R smbuser:smbgroup ~/sambashare
sudo chmod -R g+w ~/sambashare

Если папка в /srv:

sudo chown -R smbuser:smbgroup /srv/samba/sambashare
sudo chmod -R g+w /srv/samba/sambashare

Проверяйте права командой ls -l.

Шаг 4. Перезапуск службы и проверка

Перезапустите демон и проверьте статус:

sudo systemctl restart smbd
sudo systemctl status smbd

статус службы samba на ubuntu

Если используете брандмауэр UFW, откройте порты для Samba или включите профиль Samba:

sudo ufw allow 'Samba'
sudo ufw status numbered

Порты, которые использует SMB/CIFS: 137/udp, 138/udp, 139/tcp, 445/tcp. Открывайте только при необходимости и только в пределах доверенной сети.

Шаг 5. Доступ к общей папке с разных ОС

На Windows

В Проводнике в адресной строке введите:

\ipадресилиимяхоста\sambashare

Например: \192.168.1.10\sambashare

Если включена аутентификация — система попросит имя пользователя и пароль (используйте smbuser и пароль, заданный через smbpasswd). Если используется гость — может подключиться без пароля.

доступ к общей папке в проводнике Windows

ввод учётных данных для доступа к общей папке

На Ubuntu (Nautilus и другие файловые менеджеры)

Файловый менеджер → Другие места → Подключиться к серверу:

smb://ipадресилиимяхоста/sambashare

Выберите Registered User (Зарегистрированный пользователь) или Anonymous (Анонимно) в зависимости от настроек.

подключение к серверу samba в файловом менеджере

вход как зарегистрированный или анонимный пользователь

На macOS

Finder → Go → Connect to Server (Подключиться к серверу) → smb://ipадресилиимяхоста/sambashare

В списке сетевых компьютеров ресурс может отображаться автоматически при включённом NetBIOS/bonjour/SMB-обнаружении.

отображение samba-шары в macOS Finder

Отладка и типичные проблемы

  1. smb.conf не применяется — используйте testparm и смотрите вывод sudo systemctl status smbd.
  2. Не вижу шары в Windows — проверьте: подключение (ping), брандмауэр на сервере и на клиенте, netbios/SMB discovery, включён ли сервис smbd/nmbd.
  3. Ошибки прав доступа — проверьте владельца/группу и маски (ls -l и namei -om путь).
  4. Логи Samba: /var/log/samba/ (smbd.log, log.smbd и т.д.). Увеличьте уровень логирования в smb.conf при необходимости.
  5. Используйте smbclient для тестов с сервера:
smbclient -L localhost -U smbuser
smbclient //localhost/sambashare -U smbuser
  1. Проверка портов:
ss -tuln | grep -E ":445|:139"
sudo ufw status verbose
  1. SELinux/AppArmor: на Ubuntu активен AppArmor — при нестандартных путях (например, /srv) может понадобиться профиль AppArmor или перемещение папки в стандартные директории.

Безопасность и рекомендации

  • Если шар доступен в небезопасной сети, отключите guest/public доступ и используйте безопасность уровня user.
  • Ограничьте доступ по IP на уровне UFW: sudo ufw allow from 192.168.1.0/24 to any app Samba
  • Регулярно обновляйте пакеты: sudo apt update && sudo apt upgrade
  • Для критичных данных рассмотрите использование SMB over VPN или SFTP вместо гостевого SMB.

Альтернативные подходы

  • SFTP (SSH) — проще в настройке с точки зрения безопасности, работает через SSH и не требует Samba.
  • NFS — лучше для Unix-only окружений (имеет более тонкие POSIX-права), но неудобен для Windows/macOS.
  • Nextcloud/OwnCloud — добавит веб-интерфейс, версии файлов и синхронизацию.

Роли и чек-листы

Чек-лист для системного администратора:

  • Сделана резервная копия /etc/samba/smb.conf
  • Создан системный пользователь и группа для Samba
  • Папка создана и права назначены (owner/group/mode)
  • smbpasswd добавлен для пользователей, если нужен доступ по учётной записи
  • Проверен testparm, служба перезапущена
  • Открыты порты в UFW только для доверенной подсети
  • Проверены подключения с Windows/macOS/Linux

Чек-лист для пользователя ПК:

  • Получил IP или имя сервера и имя общей папки
  • Прописал адрес в файловом менеджере или Проводнике
  • Ввел учётные данные или подключился анонимно
  • Проверил возможность чтения/записи файлов

Критерии приёмки

  • Клиент Windows видит шар и может прочитать/записать файл при включённой опции записи.
  • Клиент Ubuntu подключается по smb:// и монтирует шар.
  • На сервере нет ошибок в /var/log/samba/ после операций записи.
  • Права владельца/группы соответствуют ожиданиям (ls -l показывает smbuser:smbgroup).

Тесты и сценарии приёмки

  • Тест 1: Подключение с Windows (учётные данные). Ожидается: доступ к файлам, создание нового файла.
  • Тест 2: Подключение с Ubuntu (анонимно). Ожидается: доступ к файлам, если public=yes.
  • Тест 3: Попытка записи файлом от пользователя не из smbgroup. Ожидается: отказ при отсутствии прав.
  • Тест 4: Перезапуск службы smbd и проверка доступности шара.

Восстановление и откат изменений

  1. Если нужно быстро вернуть предыдущую конфигурацию:
sudo cp /etc/samba/smb.conf.backup-YYYY-MM-DD /etc/samba/smb.conf
sudo systemctl restart smbd
  1. Если права изменены ошибочно, восстановите владельца и права:
sudo chown -R smbuser:smbgroup /path/to/sambashare
sudo chmod -R 775 /path/to/sambashare
  1. Если требуется временно отключить шар — закомментируйте секцию в smb.conf и перезапустите smbd.

Совместимость и миграция

  • Samba совместима с Windows 7/8/10/11 и macOS (через SMB). Старые версии Windows могут требовать включения NetBIOS/SMB1 — избегайте SMB1 по соображениям безопасности.
  • При миграции с NFS на SMB учтите отличие в модели прав: NFS опирается на UID/GID, SMB использует сопоставление Unix-пользователя и SMB-учётных записей.

Небольшая методика выбора режима (диаграмма)

flowchart TD
  A[Нужна общая папка?] --> B{Только Linux?}
  B -- Да --> C[NFS или Samba]
  B -- Нет --> D[Samba]
  C --> E{Нужны расширенные права POSIX?}
  E -- Да --> F[NFS]
  E -- Нет --> D
  D --> G[Выбрать security = user, настроить smbpasswd]

Часто задаваемые вопросы

Как дать доступ нескольким пользователям с разными паролями?

Добавьте соответствующих системных пользователей в систему (useradd), затем для каждого выполните sudo smbpasswd -a username. Настройте секцию share с valid users = user1, user2 или оставьте security = user и управляйте правами через файловую систему.

Нужно ли создавать системного пользователя с shell?

Нет. Сервисному пользователю обычно ставят /usr/sbin/nologin или /bin/false, чтобы запретить интерактивный логин. Это нормально, если он нужен только для файловой службы.

Как запретить анонимный доступ (guest)?

В smb.conf установите guest ok = no или public = no и используйте security = user. Перезапустите smbd.

Краткое резюме

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

Важное: всегда продумывайте безопасность — ограничьте доступ по сети, используйте аутентификацию и избегайте SMB1.


Эксперт: «Samba остаётся надежным решением для смешанных сред — главное правильно настроить права и контролировать доступ.»

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Chromebook не заряжается выше 1% — что делать
Руководство

Chromebook не заряжается выше 1% — что делать

Добавление сторонних устройств в SmartThings
Умный дом

Добавление сторонних устройств в SmartThings

Как создать стереопару HomePod — пошагово
Руководство

Как создать стереопару HomePod — пошагово

Как добавить порт USB‑C к ноутбуку
Ноутбуки

Как добавить порт USB‑C к ноутбуку

Tamper Protection в Windows 10: включение и отключение
Безопасность

Tamper Protection в Windows 10: включение и отключение

Как удалить папку Windows.old и освободить место
Windows

Как удалить папку Windows.old и освободить место