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

Что умеет Samba?

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

Принцип программы Samba

Принцип программы 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=<mac_из_панели_управления> NAME=<имя_интерфейса>
DEVICE=<имя_интерфейса>
ONB OOT=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= //<IP-адрес>/<Общий каталог> <Точка монтирования>

Важно! При подключении к общепользовательским папкам для Windows-сервера в не защищенных паролями директориях устанавливается имя пользователя “Everyone”, для Linux-сервера - “nobody”.

Подключение к общим папкам из среды Windows проводится по иной схеме. Для этого в проводнике или окне запуска программ (Windows + R), применяется шаблон:

<IP-адрес><имя_папки>

Указанный только один IP-адрес сервера выдает список общих папок.

Если при подключении к Windows-серверу всплывает окно с требованием ввода учетной записи, в строку имени пользователя заносится Everyone, а пароль остается пустым.

Подключение к Linux-серверу из ОС Windows выполняется через шаблон <IP-адрес><имя_папки> или через адрес сервера.

Как создать общий сетевой ресурс в Samba

Создание общего сетевого ресурса в Samba включает этапы:

–формирования директории, которую надо установить общедоступной:

mkdir /home/<user_name>/<folder_name>

–создания бэкапа для подстраховки:

sudo cp /etc/samba/smb.conf ~

–редактирования файла "/etc/samba/smb.conf":

sudo nano /etc/samba/smb.conf

–добавления в файл следующих сведений:

[<folder_name>]
path = /home/<user_name>/<folder_name>
valid users = <user_name>
read only = no

–после заполнения файла своими данными сохраняем введенные сведения и перезапускаем Samba:

sudo service smbd restart

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

testparm

–доступ к общему сетевому ресурсу предоставляется так:

sudo apt-get install smbclient
# Просмотр всех общих ресурсов:
smbclient -L //<host_ip_or_name>/<folder_name> -U <user>
# Подключение:
smbclient //<host_ip_or_name>/<folder_name> -U <user>

Примечание 1: Для подключения к вашему общему сетевому ресурсу задействуйте имя вашего пользователя () и пароль, который располагается в "smb:////"

Стоит запомнить, что "" значение переводится в "[]", иначе говоря, в название общепользовательского ресурса, вписанного вами в "/etc/samba/smb.conf".

Примечание 2: Группа пользователей samba по умолчанию носит название "WORKGROUP".