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

Что такое 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 и установку пакетов.
Шаг 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.conftestparm покажет итоговую конфигурацию и укажет на возможные ошибки.
Шаг 3. Создание ресурсов Samba на уровне системы
Нужно: создать папку, системную группу и пользователя, назначить права и, при необходимости, задать пароль Samba.
1) Создание общей папки
cd ~
mkdir -p sambashareИли, для системного расположения:
sudo mkdir -p /srv/samba/sambashare2) Создание системной группы и пользователя 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 smbusersmbpasswd попросит ввести пароль и добавит учётную запись для доступа по 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Если используете брандмауэр 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). Если используется гость — может подключиться без пароля.
На Ubuntu (Nautilus и другие файловые менеджеры)
Файловый менеджер → Другие места → Подключиться к серверу:
smb://ipадресилиимяхоста/sambashare
Выберите Registered User (Зарегистрированный пользователь) или Anonymous (Анонимно) в зависимости от настроек.
На macOS
Finder → Go → Connect to Server (Подключиться к серверу) → smb://ipадресилиимяхоста/sambashare
В списке сетевых компьютеров ресурс может отображаться автоматически при включённом NetBIOS/bonjour/SMB-обнаружении.
Отладка и типичные проблемы
- smb.conf не применяется — используйте testparm и смотрите вывод sudo systemctl status smbd.
- Не вижу шары в Windows — проверьте: подключение (ping), брандмауэр на сервере и на клиенте, netbios/SMB discovery, включён ли сервис smbd/nmbd.
- Ошибки прав доступа — проверьте владельца/группу и маски (ls -l и namei -om путь).
- Логи Samba: /var/log/samba/ (smbd.log, log.smbd и т.д.). Увеличьте уровень логирования в smb.conf при необходимости.
- Используйте smbclient для тестов с сервера:
smbclient -L localhost -U smbuser
smbclient //localhost/sambashare -U smbuser- Проверка портов:
ss -tuln | grep -E ":445|:139"
sudo ufw status verbose- 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 и проверка доступности шара.
Восстановление и откат изменений
- Если нужно быстро вернуть предыдущую конфигурацию:
sudo cp /etc/samba/smb.conf.backup-YYYY-MM-DD /etc/samba/smb.conf
sudo systemctl restart smbd- Если права изменены ошибочно, восстановите владельца и права:
sudo chown -R smbuser:smbgroup /path/to/sambashare
sudo chmod -R 775 /path/to/sambashare- Если требуется временно отключить шар — закомментируйте секцию в 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 остаётся надежным решением для смешанных сред — главное правильно настроить права и контролировать доступ.»
Похожие материалы
Chromebook не заряжается выше 1% — что делать
Добавление сторонних устройств в SmartThings
Как создать стереопару HomePod — пошагово
Как добавить порт USB‑C к ноутбуку
Tamper Protection в Windows 10: включение и отключение