Всё о программе Samba

Чтобы решить проблемы, вызванные разобщенностью Microsoft Windows и Linux в корпоративных сетях и добиться «прозрачности» и доступности для администраторов и пользователей одной корпоративной сети к другой, применяется протоколы SMB/CIFS и программа Samba со стороны UNIX/Linux.
Что умеет Samba?
Samba представляет собой программный пакет с открытым исходным кодом, дающий сетевым администраторам возможность гибко и свободно настраивать, конфигурировать и выбирать системы и оборудование, то есть устанавливать на компьютерах UNIX/Linux имитации устройств с Windows. Это упрощает выполнение задач по обмену файлами (как файл-серверам) или задавать параметры печати в качестве принт-серверов.

Принцип программы Samba
Samba обеспечивает свободный доступ к:
- дискам Linux к Windows-компьютерам;
- дискам Windows к оборудованию с ПО Linux;
- принтерам Linux к Windows-компьютерам;
- принтерам Windows к Linux-системам.
Протоколы SMB/CIFS: что это такое, в чем различия
Говоря о программе Samba немаловажно упомянуть о протоколах SMB и CIFS:
- SMB (Server Message Block) – это один из наиболее старых протоколов (был разработан в 1983 году). SMB изначально существовал как клиент-серверный протокол для получения доступа к файлам, каталогам и сетевым ресурсам, а также для обмена информацией по межсистемным процессам. На сегодняшний день основное назначение SMB (версия 3.1.1.) – это установка соединения с устройствами со старыми версиями ОС Microsoft для подключения к серверам и обмена файлами.
- CIFS (Common Internet File System) представляет собой часть протокола SMB и применяется для удаленного подключения нескольких платформ – Windows, Linux или macOS. Отличительная характеристика CIFS – это его универсальность, позволяющая идентифицировать и читать файлы системы NTFS, применяемой в Windows, и HFS из macOS, чтобы совместно использовать эти файлы и принтеры между машинами с Windows и UNIX.
В отличие от SMB, CIFS имеет более широкий функционал – этот протокол способен поддерживать символические и жесткие ссылки, а также файлы больших размеров.
Но сейчас CIFS почти не используется, так как в последних версиях Windows (начиная с версии 8) используются протоколы SMB 2 или SMB 3, которые по сути являются обновленной версией CIFS.
Настройка сети
Первым этапом нужно создать в панели управления все необходимые для этой сети серверы. Затем следует объединение всех машин через панель управления (раздел «Сети») в единую локальную сеть с присвоением каждому серверу локального IP-адреса. После того, как сеть будет создана, нужно провести настройки сетевых адаптеров для каждого сервера.
Настройка сетевого адаптера ОС Centos для Linux проводится так. Подключаемся к виртуальному серверу с правами суперпользователя и выполняем команду:
ifconfig -a
В результате должен отобразиться перечень подключенных интерфейсов:
eth0: flags=4163 mtu 1500
inet 5.200.47.73 netmask 255.255.255.0 broadcast 5.200.47.255
inet6 fe80::250:56ff:fe01:29a9 prefixlen 64 scopeid 0x20
ether 00:50:56:01:29:a9 txqueuelen 1000 (Ethernet)
RX packets 760 bytes 57362 (56.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163 mtu 1500
inet6 fe80::8f6:6de2:ec53:e800 prefixlen 64 scopeid 0x20
ether 00:50:56:01:03:59 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 22 bytes 3580 (3.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1 (Local Loopback)
RX packets 64 bytes 5184 (5.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 64 bytes 5184 (5.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
В настройках сети находим поле MAC, для которого в списке интерфейсов вывелся параметр ether; теперь надо зафиксировать название интерфейса, в этом примере – eth1.
Прежде чем настраивать адаптер в ОС, понадобится уточнить в параметрах сети, была ли выполнена активация для опции DHCP в панели управления рабочей сетью.
Затем перейти в каталог с конфигурационными файлами сетевых интерфейсов:
cd /etc/sysconfig/network-scripts/
Скопировать конфигурационный файл существующего интерфейса, указав имя нового интерфейса:
cp ifcfg-<существующий_интерфейс> ifcfg-<новый_интерфейс>
Далее проверить в настройках сети в панели управления активирована ли опция DHCP. Если активирована, то нужно скопировать файл и отредактировать с помощью текстового редактора и внести исправления, указав собственные значения:
HWADDR=
DEVICE=<имя_интерфейса>
ONBOOT=yes
USERCTL=no
BOOTPROTO=dhcp
check_link_down() {
return 1;
}
Сохраняем изменения.
После всех действий перезапустите сетевые службы сервера, чтобы изменения вступили в силу:
service network restart
Для проверки корректности работы выполните команду ping до другого сервера в частной или публичной сети:
ping 10.0.1.3
Для сетевых интерфейсов Windows настройка будет проводиться по следующей схеме:
- подключаемся к виртуальному серверу по RDP и открываем Network and Sharing Center. Для этого на рабочем столе Windows выбираем и открываем настройки сетевых подключений. В появившемся окне выбираем требуемый интерфейс, не имеющий доступа к сети. Для проверки состояния этого интерфейса откроем его детализацию (кнопка Details). Затем сравниваем значение поля Physical Address со информацией поля MAC в панели управления;
- если при создании сети в панели была активирована опция DHСP, то сетевой адаптер настроится автоматически. Уточнить состояние этой опции можно через свойства сети в панели управления;
- если опция DHCP при создании сети активирована не была, настраивать сеть понадобится вручную. Для этого свойства адаптера открываются через клавишу Properties (выбирается соединение IPv4 и нажимается Properties), затем в появившемся окне в поле IP-address вводится выданный адрес, а в поле Subnet mask – маска подсети. Все значения можно найти в панели в настройках сервера (раздел Сети) или в меню Сеть. После этого все изменения обязательно сохраняются.
Для проверки настроек сетевого адаптера выполняем команду:
ping 10.0.1.1
Чтобы проверить Windows Server 2016, пинг проводится на другой локальный сервер.
Настройка общей папки в Linux и Windows
Linux
Установка и настройка Samba-сервер для Linux состоит из следующих этапов:
1.Обновления информации о репозиториях и для существующих пакетов в системе:
apt-get update && apt-get upgrade
2.Установки пакета Samba:
apt-get install -y samba samba-client
3.Создания резервной копии файла конфигурации:
cp /etc/samba/smb.conf /etc/samba/smb.conf_sample
4.Создания директории для файлов, так чтобы все пользователи имели к ней доступ:
mkdir -p /samba/public
5.Создания каталога для всех пользователей:
mkdir /media/samba/public
6.Изменения прав доступа к каталогу:
cd /samba
chmod -R 0755 public
Важно! Для смены владельца и/или группы пользуемся командой chown
7.Создания директории для ограниченного круга лиц
8.Создания групп пользователей с применением системных инструментов:
groupadd smbgrp
9.Добавления пользователей Samba:
useradd user1
10.Внесения созданных пользователей в группу:
chgrp smbgrp /samba/private
11.Изменения группы, к которой относится приватная директория:
chgrp smbgrp /samba/private
12.Создания с помощью инструментов Samba пароля для добавленного пользователя:
smbpasswd -a user1
13.Редактирования конфигурационного файла samba с помощью текстового редактора:
текстовый редактор /etc/samba/smb.conf
Все строки из файла удаляются, а вместо них вставляются следующие:
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no
[public]
path = /samba/public
guest ok = yes
force user = nobody
browsable = yes
writable = yes
[private]
path = /samba/private
valid users = @smbgrp
guest ok = no
browsable = yes
writable = yes
Сохранения введенных строк с использованием комбинации клавиш Ctrl + X, затем с нажатием Y и Enter.
Названия строк при этом обозначают:
- наименование одной из трех секций конфигурационного файла: global – данная секция отвечает за общие настройки Samba-сервера; public и private – секции, описывающие настройки директорий общего доступа;
- пять параметров в секции global: workgroup – наименование рабочей группы, security – уровень безопасности сервера с авторизацией по паре логин/пароль при значении user, map to guest - способ обработки запросов с отклонением неправильного пароля даже для существующего пользователя (значение bad user), wins support – включение/выключение поддержки WINS, dns proxy – обеспечение проксирования запросов к DNS;
- настройки директорий в секциях: path – полный путь до директории на жестком диске, guest ok – возможность доступа к каталогу без пароля (гостевой), force user – пользователь, ведущий работу с каталогом (для безопасности сервера используется значение nobody) , browsable - демонстрация конкретного каталога на сервере; writable – право пользователя при значении “yes” переименовывать, добавлять, удалять, редактировать файлы и перемещать их в каталоги; valid users – список пользователей с предоставленным доступом к каталогу.
14.Проверку настроек проводим командой:
testparm -s
15.Выполняем перезапуск сервера:
service smbd restart
service nmbd restart
Для настройки межсетевого экрана нужно открыть в правилах TCP-порты 139 и 445, а также UDP-порты 137 и 138 (для подсетей с высоким уровнем доверия). Если нужно указать собственный диапазон адресов, значение после ключа “-s” заменяется:
iptables -A INPUT -p tcp -m tcp --dport 445 -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 139 -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 137 -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 138 -s 10.0.0.0/24 -j ACCEPT
16.После перезагрузки сервера сохранить правила и применять их поможет пакет iptables-persistent. Для его установки вводится команда:
apt-get install iptables-persistent
Далее понадобится подтверждение запоминаний существующих правил iptables и их проверка:
iptables -L
Настройка общей папки в ОС Windows
Настройки общего доступа к папкам public и private в ОС Windows выполняются аналогично с Linux. Чтобы обеспечить беспарольный доступ к каталогу, настроим ограничения защиты в панели управления:
Панель управления → Сеть → Центр управления сетями и общим доступом → Расширенные настройки общего доступа
В обновленном окне надо открыть раздел “Все сети” и выбрать секцию “Общий доступ с парольной защитой”, после чего отключить этот параметр и сохранить изменения. Доступ к самому каталогу открывается так: кликом по папке правой кнопки мыши разворачивается контекстное меню, в котором выполняются действия:
Свойства → Доступ → Расширенная настройка → Открыть общий доступ к этой папке
В поле “Имя общего ресурса” указывается название, отображаемое для пользователей. После этого кликается кнопка “Разрешения”, выбирается “Все” и устанавливается “Полный доступ”, и все это подтверждается.Затем в свойствах папки public выбирается “Общий доступ”, добавляются все пользователи, делегируются права на чтение и запись, и кликаются кнопки “Поделиться” и “Готово”.
Порядок настройки папки общего доступа для ограниченного числа пользователей будет таким:
- выбираем “Свойства” папки, открываем вкладку “Доступ” и разворачиваем “Расширенные настройки”;
- в открывшемся окне выбираем опцию “Открыть общий доступ к этой папке” и нажимаем “Разрешения”;
- выбираем “Все” в поле “Группы или пользователи” и жмем “Удалить” - это закрывает анонимный доступ к папке;
- во вновь появившемся окне выполняем следующие действия: “Добавить” → “Дополнительно” → “Поиск” → выбор пользователя, которому нужно предоставить доступ к каталогу. Точно по такой же схеме можно добавить пользователей в составе группы;
- устанавливаем права доступа (или полного доступа к директории) для выбранных лиц: нажимая “OK” переходим к окну свойств папки, выбираем “Общий доступ”, ищем в поле выбора пользователей и групп и добавляем нужного человека (“Дополнительно” → “Поиск” → установка пользователя двойным кликом);
- проверяем правильность выбора пользователя, кликаем “OK”, задаем все требуемые уровни разрешений, прожимаем “Поделиться” и “Готово”.
Чтобы подключиться к общим папкам из среды Linux, понадобится установить отдельный пакет ПО - smbclient. Для этого вводим команду:
sudo apt-get install smbclient
Для подключения к серверу применяется команда:
smbclient -U<Имя_пользователя><Имя_каталога_на_сервере>
Эту команду не обязательно вводить каждый раз - для этого монтируем общую директорию как сетевой диск через установку пакета cifs-utils:
sudo apt-get install cifs-utils
и применяем шаблон:
mount -t cifs -o username=<Имя_пользователя>,password= //
Важно! При подключении к общепользовательским папкам для Windows-сервера в не защищенных паролями директориях устанавливается имя пользователя “Everyone”, для Linux-сервера - “nobody”.
Подключение к общим папкам из среды Windows проводится по иной схеме. Для этого в проводнике или окне запуска программ (Windows + R), применяется шаблон:
Указанный только один IP-адрес сервера выдает список общих папок.
Если при подключении к Windows-серверу всплывает окно с требованием ввода учетной записи, в строку имени пользователя заносится Everyone, а пароль остается пустым.
Подключение к Linux-серверу из ОС Windows выполняется через шаблон
Как создать общий сетевой ресурс в Samba
Создание общего сетевого ресурса в Samba включает этапы:
–формирования директории, которую надо установить общедоступной:
mkdir /home/
–создания бэкапа для подстраховки:
sudo cp /etc/samba/smb.conf ~
–редактирования файла "/etc/samba/smb.conf":
sudo nano /etc/samba/smb.conf
–добавления в файл следующих сведений:
[
path = /home/
valid users =
read only = no
–после заполнения файла своими данными сохраняем введенные сведения и перезапускаем Samba:
sudo service smbd restart
–затем проверяем директорию smb.conf наличие неточностей:
testparm
–доступ к общему сетевому ресурсу предоставляется так:
sudo apt-get install smbclient
# Просмотр всех общих ресурсов:
smbclient -L //
# Подключение:
smbclient //
Примечание 1: Для подключения к вашему общему сетевому ресурсу задействуйте имя вашего пользователя () и пароль, который располагается в "smb:////"
Стоит запомнить, что "" значение переводится в "[]", иначе говоря, в название общепользовательского ресурса, вписанного вами в "/etc/samba/smb.conf".
Примечание 2: Группа пользователей samba по умолчанию носит название "WORKGROUP".