В офисе несколько компьютеров с Windows, а файлы нужно хранить централизованно. Можно, конечно, использовать расшаренную папку на одном из компьютеров, но тогда этот компьютер должен быть постоянно включён, а доступы настраивать вручную на каждой машине сложно. К тому же, производительность страдает, а безопасность оставляет желать лучшего.
Хочется выделить отдельный сервер, который будет надёжным, быстрым и не требовательным к ресурсам. Windows Server лицензируется, требует мощного железа и капризен в настройке. А если взять старый компьютер и установить на него Linux? Можно быстро, бесплатно и с отличной производительностью. Но как сделать так, чтобы Windows-клиенты видели этот сервер в сети, открывали общие папки и работали с ними как с обычными сетевыми дисками?
Эта статья чем-то похожа на быструю настройку samba которая была уже описана в блоге, но в этой статье мы будем работать с фаерволом, и в статья быстрая настройка samba подходит больше для расшаривания папки у себя на Пк с линуксом а не для сервера.
Немного о Самбе
Samba это свободная реализация протоколов SMB/CIFS, которая позволяет Linux-серверу выступать в роли файлового сервера для Windows-клиентов, а также принт-сервера и даже контроллера домена. Samba умеет:
- предоставлять общие папки, доступные через «Сетевое окружение»;
- аутентифицировать пользователей (можно использовать локальных Linux-пользователей или отдельную базу Samba);
- разграничивать права доступа на уровне папок и файлов;
- работать с доменами Windows (при необходимости).
Мы настроим Samba на Ubuntu Server (инструкции подойдут и для Debian, CentOS, Astra Linux с небольшими изменениями) как простой файловый сервер для небольшого офиса. Создадим общую папку, настроим доступ по логину и паролю, а также покажем, как монтировать эту папку на Windows-клиентах.
Пошаговая инструкция
Шаг 1. Установка Samba
Подключитесь к серверу по SSH и выполните обновление пакетов, затем установите Samba:
Ubuntu/Debian:
sudo apt update
sudo apt install samba -y
CentOS/RHEL:
sudo yum install samba samba-client -y
После установки служба Samba запустится автоматически. Проверьте статус:
sudo systemctl status smbd
Если не запущена, запустите и добавьте в автозагрузку:
sudo systemctl start smbd
sudo systemctl enable smbd
Шаг 2. Создание общей папки
Создадим директорию, которая будет доступна по сети. Например, для общего отдела:
sudo mkdir -p /srv/samba/share
sudo chmod 777 /srv/samba/share
chmod 777 даёт полный доступ всем, но мы ограничим доступ на уровне Samba. Если нужно более тонкое управление правами, можно создать отдельную группу.
Шаг 3. Добавление пользователей Samba
Samba использует собственный файл паролей, отдельный от системных. Поэтому для каждого пользователя нужно создать запись в Samba. Удобно использовать системных пользователей (они уже есть), но для Samba нужно задать отдельный пароль.
Создадим системного пользователя, если его нет:
sudo useradd -m -s /bin/bash sambauser
sudo passwd sambauser # задаём пароль для входа в систему (если нужно)
Теперь добавим этого пользователя в базу Samba с тем же паролем (или другим):
sudo smbpasswd -a sambauser
Будет запрошен пароль можно задать тот же, что и системный, или другой. Для доступа к общим папкам Samba будет использовать именно этот пароль.
Если нужно добавить несколько пользователей, повторяем команду для каждого.
Шаг 4. Настройка Samba (редактирование конфигурации)
Основной конфигурационный файл Samba — /etc/samba/smb.conf. Сделаем его резервную копию:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
Отредактируем файл:
sudo nano /etc/samba/smb.conf
В конец файла добавим описание нашей общей папки:
[share]
comment = Общая папка отдела
path = /srv/samba/share
browseable = yes
read only = no
guest ok = no
valid users = sambauser, andrey
create mask = 0660
directory mask = 0770
Пояснения параметров:
-
[share]— имя общего ресурса, которое увидят клиенты. -
comment— описание. -
path— путь к папке на сервере. -
browseable— показывать ресурс в списке общих папок. -
read only = no— разрешить запись. -
guest ok = no— запретить гостевой доступ (требовать аутентификацию). -
valid users— список пользователей, которым разрешён доступ. -
create maskиdirectory mask— маски прав на создаваемые файлы и папки (обеспечивают, чтобы новые файлы имели нужные права).
Проверьте, что глобальные настройки (в начале файла) задают правильную рабочую группу. Для Windows-сети часто используется workgroup = WORKGROUP. Если в вашей сети используется домен, укажите соответствующий.
Шаг 5. Проверка конфигурации и перезапуск Samba
Проверьте синтаксис конфигурации:
testparm
Если ошибок нет, перезапустите службу:
sudo systemctl restart smbd
Также рекомендуется перезапустить службу nmbd (для NetBIOS-имён):
sudo systemctl restart nmbd
Шаг 6. Настройка брандмауэра
Samba использует несколько портов: 137-139 (UDP/TCP) и 445 (TCP). Откройте их в брандмауэре.
Для Ubuntu с ufw:
sudo ufw allow samba
или конкретнее:
sudo ufw allow 139/tcp
sudo ufw allow 445/tcp
sudo ufw allow 137/udp
sudo ufw allow 138/udp
Для CentOS с firewalld:
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
Шаг 7. Подключение с Windows-клиента
Теперь с любого компьютера в той же сети можно подключиться к общей папке.
- Откройте Проводник.
- В адресной строке введите:
\\IP-адрес-сервера\share(например,\\192.168.1.100\share). - Если Samba настроена с аутентификацией, появится окно входа. Введите имя пользователя (
sambauser) и пароль, который задавали черезsmbpasswd. - Если всё правильно, откроется папка. Можно создавать, копировать, удалять файлы (в зависимости от прав).
Если хотите подключить папку как сетевой диск, выберите Подключить сетевой диск в проводнике и укажите путь.
Шаг 8. Настройка прав доступа на уровне файловой системы
Samba использует права файловой системы Linux. Даже если в конфигурации Samba разрешена запись, файловая система может запрещать. Убедитесь, что пользователь Samba имеет права на запись в папку.
Мы создали папку с правами 777, но это небезопасно. Лучше создать группу, добавить в неё пользователей, и назначить права для группы.
Пример:
# Создаём группу
sudo groupadd smbgroup
# Добавляем пользователей в группу
sudo usermod -aG smbgroup sambauser
sudo usermod -aG smbgroup andrey
# Меняем владельца папки на группу
sudo chown -R root:smbgroup /srv/samba/share
# Устанавливаем права: владелец и группа имеют полный доступ, остальные - ничего
sudo chmod 770 /srv/samba/share
Теперь только пользователи из группы smbgroup могут читать и писать в эту папку.
Шаг 9. Автоматическое монтирование сетевой папки на Windows (опционально)
Чтобы сетевая папка подключалась автоматически при входе в систему на Windows-клиенте, можно использовать скрипт или настроить подключение через групповые политики (если есть домен). Для одиночного компьютера проще настроить вручную:
- Откройте Проводник.
- Нажмите Подключить сетевой диск.
- Укажите букву диска и путь
\\сервер\share. - Отметьте Восстанавливать при входе в систему.
- Если нужно автоматически вводить пароль, можно сохранить учётные данные (но это менее безопасно).
Шаг 10. Устранение распространённых проблем
| Проблема | Возможная причина | Решение |
|---|---|---|
| Не видно сервер в сети | Брандмауэр блокирует порты или служба nmbd не работает | Проверьте порты, перезапустите nmbd, убедитесь, что сервер и клиент в одной рабочей группе |
| Ошибка «Доступ запрещён» | Неверный логин/пароль, пользователь не в списке valid users | Проверьте пароль через smbpasswd, убедитесь, что пользователь добавлен в valid users |
| Папка открывается, но не пишет | Права файловой системы запрещают запись | Проверьте права на папку: ls -ld /srv/samba/share |
| Медленная работа | Проблемы с DNS или NetBIOS | Лучше подключаться по IP-адресу, проверить настройки сети |
Расширенные возможности
- Samba как контроллер домена позволяет заменить Windows Server DC в небольших сетях.
- Домашние каталоги пользователей можно автоматически расшарить домашнюю папку каждого пользователя.
- Интеграция с LDAP для централизованного хранения учётных записей.
- Настройка журналирования — для отслеживания доступа и ошибок.
Samba это инструмент, который превращает любой Linux-сервер в полноценный файловый сервер для Windows-среды. Настройка проста, не требует лицензий и отлично работает даже на скромном оборудовании. Освоив базовую конфигурацию, вы сможете гибко управлять общими ресурсами, разграничивать доступ и обеспечить централизованное хранение файлов в офисе.
Ниже конфиг файл который может стать для Вас как отправная точка, в него можно добавлять секции для папок и другие настройки по вашему желанию.
# /etc/samba/smb.conf
# Базовая конфигурация Samba для файлового сервера в сети с Windows
[global]
# Имя сервера в сети (будет отображаться в сетевом окружении)
netbios name = SERVER
# Рабочая группа (должна совпадать с группой Windows-клиентов)
workgroup = WORKGROUP
# Описание сервера
server string = Samba File Server
# Безопасность: требуем аутентификацию пользователей
security = user
# Хранить пароли в файле /etc/samba/smbpasswd
passdb backend = tdbsam
# Маски прав для новых файлов и папок (пользователь может писать)
create mask = 0644
directory mask = 0755
# Включаем поддержку широковещательных запросов NetBIOS
name resolve order = bcast host lmhosts wins
# Логи (полезно для отладки)
log file = /var/log/samba/log.%m
max log size = 1000
# Отключаем поддержку старых протоколов SMB (безопасность)
server min protocol = SMB2
client min protocol = SMB2
# Если сервер используется как PDC (контроллер домена) – дополнительные настройки
# domain master = no
# local master = yes
# preferred master = yes
# os level = 65
# Общая папка для отдела (доступ по паролю)
[share]
comment = Общая папка отдела
path = /srv/samba/share
browseable = yes
read only = no
guest ok = no
valid users = sambauser, andrey
# Права на создаваемые внутри папки файлы
create mask = 0660
directory mask = 0770
force group = smbgroup
force create mode = 0660
force directory mode = 0770
# Гостевая папка для публичных файлов (доступ без логина)
[public]
comment = Публичные файлы
path = /srv/samba/public
browseable = yes
read only = yes
guest ok = yes
# Разрешить гостям только чтение
writeable = no
# Домашние каталоги пользователей (автоматически расшаривает каждый домашний каталог)
[homes]
comment = Домашние папки
browseable = no
read only = no
create mask = 0700
directory mask = 0700
valid users = %S







