Samba сервер для windows

Samba — это бесплатное программное обеспечение, которое обеспечивает взаимодействие между системами Linux/Unix и Windows, позволяя создавать файловые и печатные серверы. Установка сервера Samba на Windows Server 2019 полезна, когда необходимо предоставить доступ к файлам и папкам на сервере с другого сервера на Windows Server 2019. В этой статье мы предоставим шаги по установке сервера Samba на Windows Server 2019 через Server Manager и подключению к нему с другого сервера на Windows Server 2019.

Шаг 1: Установка сервера Samba на Windows Server 2019

Чтобы установить сервер Samba на Windows Server 2019, выполните следующие действия:

Запустите Server Manager и нажмите «Добавить роли и компоненты».

Нажмите «Далее» до страницы «Роли сервера».

Выберите «Сервисы файлов и хранилищ» и нажмите «Далее».

Выберите «Сервисы файлов и iSCSI» и нажмите «Далее».

Если они не выбраны, выберите «Сервер для NFS» и «Поддержка SMB 1.0/CIFS для обмена файлами» и нажмите «Далее».

Нажмите «Установить», чтобы установить выбранные роли и компоненты.

После завершения установки перезагрузите сервер.

Шаг 2: Настройка сервера Samba на Windows Server 2019

​​​​​​​

После установки сервера Samba выполните следующие действия для его настройки:

Откройте Server Manager и выберите «File and Storage Services».

Выберите «SMB Server» и в окне настройки выберите «Create a fale share, start  the new SMB share» и введите имя разделяемой папки.

Выберите SMB hare — Quick

Укажите папку, которую вы хотите разделить.

Нажмите «Далее» и выберите имя папки.

Проверьте настройки и нажмите «Создать».

Перезагрузите сервер.

Шаг 3: Подключение к серверу Samba с другого сервера на Windows Server 2019

После установки и настройки сервера Samba на Windows Server 2019 выполните следующие действия, чтобы подключиться к нему с другого сервера на Windows Server 2019:

  1. На сервере, с которого вы хотите подключиться к серверу Samba, откройте проводник Windows и выберите «Этот компьютер».

  2. Нажмите «Сеть» в левой панели, чтобы открыть доступные сетевые ресурсы.

  3. Найдите сервер Samba в списке и дважды щелкните на нем, чтобы открыть доступные разделяемые папки.

  4. Выберите нужную папку и нажмите «Подключиться», чтобы подключиться к серверу Samba.

  5. Введите имя пользователя и пароль для доступа к папке, если это необходимо.

  6. После успешного подключения вы сможете просматривать и работать с файлами в разделяемой папке на сервере Samba.

В заключение, установка сервера Samba на Windows Server 2019 через Server Manager и подключение к нему с другого сервера на Windows Server 2019 может показаться сложной задачей для новичков, но выполнение приведенных выше шагов поможет вам успешно установить и настроить сервер Samba, чтобы подключиться к нему с другого сервера и использовать его в качестве файлового и печатного сервера в вашей сети.

Также предлагаем рассмотреть другие полезные статьи:

  • Как попасть в phpMyAdmin из популярных панелей управления сервером
  • Как поднять OpenSSH на Windows 2012
  • Как поднять Samba сервер на Linux и подключиться к нему из Windows Server 2019

Пожалуй нет ни одного офиса, в котором не применялись бы общие ресурсы локальной сети, будь то папки или принтеры. Крупные и средние компании используют возможности Active Directory, компании поменьше — используют штатные средства ОС Windows или Samba, но на серверах под управлением ОС Linux. Рассмотрим все случаи.

Как настроить Samba?

  • Что такое Samba?
  • Как настроить общую папку
  • Как настроить общую папку в Linux
  • Как настроить общую папку в Windows
  • Как подключиться к общей папке
  • Как подключиться к общей папке Linux
  • Как подключиться к общей папке Windows
  • Как создать общий сетевой ресурс в Samba

Что такое Samba?

Samba — серверное приложение, реализующее доступ клиентских терминалов к папкам, принтерам и дискам про протоколу SMB/CIFS.

Описание структуры Samba

Настройка общих папок

Linux

Установка и настройка Samba-сервер для Ubuntu выполняется следующими этапами.

Обновляем информацию о репозиториях и устанавливаем обновления для существующих пакетов в системе:

apt-get update && apt-get upgrade

Устанавливаем пакет Samba:

apt-get install -y samba samba-client

Создадим резервную копию файла конфигурации:

cp /etc/samba/smb.conf /etc/samba/smb.conf_sample

Создадим директории для файлов, например в каталоге /media:

mkdir /media/samba

Важно! По умолчанию, директория /media располагается в корне системы /, для нее редко создается свой раздел. По этой причине возможно переполнение корневого раздела. Во избежание этой неприятной ситуации, рекомендуем монтировать отдельный жесткий диск в /media/samba.

Создаем каталог для всех пользователей:

mkdir /media/samba/public

Изменим права доступа к каталогу:

chmod -R 0755 /media/samba/public

Также следует воспользоваться командой chown для смены владельца и/или группы.

Создаем директорию для ограниченного круга лиц:

mkdir /media/samba/private

С помощью системных инструментов создадим группу пользователей:

groupadd smbgrp

Добавляем пользователей Samba:

useradd user1

Созданных пользователей добавляем в группу:

usermod -aG smbgrp user1

Изменим группу, которой принадлежит приватная директория:

chgrp smbgrp /media/samba/private

С помощью инструментов Samba создадим пароль для добавленного пользователя:

smbpasswd -a user1

С помощью текстового редактора, например, nano, редактируем конфигурационный файл samba:

nano /etc/samba/smb.conf

Удаляем все строки из файла. Вставляем следующие:

[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no
[public]
path = /media/samba/public
guest ok = yes
force user = nobody
browsable = yes
writable = yes
[private]
path = /media/samba/private
valid users = @smbgrp
guest ok = no
browsable = yes
writable = yes

Сохраняем используя сочетание Ctrl + X, затем нажимаем Y и Enter.

Объясним значения строк. конфигурационный файл состоит из трех секций:

global — данная секция отвечает за общие настройки Samba-сервера;

public и private — секции описания настроек директорий общего доступа.

В секции global присутствуют пять параметров:

  • workgroup — рабочая группа. Для упрощения работы пользователей WORKGROUP указывается, как группа по умолчанию. Если в вашей сети имя рабочей группы изменено, то следует изменить это значение и для Samba;
  • security — уровень безопасности сервера. Значение user означает авторизацию по паре логин/пароль;
  • map to guest — параметр определяет способ обработки запросов. Значение bad user означает, что запросы с неправильным паролем будут отклонены, даже если такое имя пользователя существует;
  • wins support — включить или выключить поддержку WINS;
  • dns proxy — возможность проксирования запросов к DNS.

Настройки директорий выполняются в соответствующих секциях:

path — полный путь до директории на жестком диске;

guest ok — возможность доступа к каталогу без пароля (гостевой);

browsable — показывать ли каталог (“шару”) на сервере среди прочих. Если параметр установлен как “no”, то доступ будет возможен по полному пути, например ip-addresshidden_directory;

force user — пользователь от которого ведется работа с каталогом. Для повышения безопасности сервера, обычно используют nobody. Главное, не использовать пользователя root — это небезопасно.

writable — установка значения как “yes” позволяет пользователю выполнять действия над файлами внутри каталога — переименование, добавление, удаление, перемещение в подкаталог и копирование;

valid users — список пользователей у которых есть доступ к каталогу. Если пользователей несколько, их имена указываются через запятую. Если необходим доступ для пользователей принадлежащих группе, перед именем группы устанавливается символ ”at” @ (“собака”).

Важно! Имя директории общего доступа, отображаемое пользователям, равно имени секции в которой оно описано.

Проверяем настройки с помощью команды:

testparm -s

Перезапускаем сервер:

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

Для сохранения правил и применения их после перезагрузки сервера следует воспользоваться пакетом iptables-persistent. Установим его:

apt-get install iptables-persistent

Входе установки пакета, программа предложит запомнить существующие правила iptables. Подтверждаем это действие.

Для проверки существующих правил используем:

iptables -L

Windows

По аналогии с Linux, настроим общий доступ к папкам public и private, но в ОС Windows.

Для создания общего доступа к каталогу без парольной защиты, необходимо настроить ограничения защиты в панели управления. Для этого открываем:

Панель управления → Сеть → Центр управления сетями и общим доступом → Расширенные настройки общего доступа.

В обновленном окне открываем раздел “Все сети” и ищем секцию “Общий доступ с парольной защитой”. Устанавливаем параметр в положение “Отключить общий доступ с парольной защитой”. Для сохранения значений параметра кликаем по кнопке “Сохранить изменения”.

Отключаем общий доступ с парольной защитой

Теперь откроем доступ к самому каталогу. Кликаем по папке правой кнопкой мыши, в контекстном меню выбираем “Свойства”. Открываем вкладку “Доступ” и кликаем по “Расширенная настройка”.

Выбираем расширенную настройку

В открывшемся окне расширенных настроек общего доступа отмечаем галочкой “Открыть общий доступ к этой папке”, в поле “Имя общего ресурса” указываем название, которое будет отображено пользователям. Кликаем по кнопке “Разрешения”.

В открывшемся окне, в группах пользователей выбираем “Все”, а в разрешениях для группы, устанавливаем галку “Полный доступ”. Нажимаем “OK” в этом и остальных окнах.

Выбираем саму группу и разрешения для группы

В окне свойств папки public кликаем по кнопке “Общий доступ”.

Общий доступ к файлам в Samba | Serverspace

В открывшемся окне добавляем пользователя “Все”, а также делегируем права на “Чтение и запись”. Кликаем по кнопке “Поделиться”.

Выбираем права и делимся ими с пользователями

В обновленном окне нажимаем “Готово”.

Нажимаем готово

Настроим папку общего доступа, но для ограниченного круга лиц.

Кликаем правой кнопкой мыши по папке, выбираем “Свойства”.

В открывшемся окне переходим на вкладку “Доступ”. Кликаем по кнопке “Расширенные настройки”.

В новом открывшемся окне, устанавливаем галку “Открыть общий доступ к этой папке”. Затем кликаем по кнопке “Разрешения”.

Открываем общий доступ к этой папке

В открывшемся окне, в поле “Группы или пользователи” выбираем “Все” и нажимаем кнопку “Удалить”.

Удаляем пользователя

Таким образом установлен запрет на анонимный доступ к папке.

Окно обновится. Кликаем по кнопке “Добавить”.

В открывшемся окне кликаем по кнопке “Дополнительно”.

Выбираем дополнительные параметры

Окно изменится в размере. Кликаем по кнопке “Поиск”. Двойным кликом выбираем пользователя, которому необходим доступ к этому каталогу, например, buhgalter.

Добавляем пользователя которому нужен доступ к этому каталогу

В открывшемся окне, при желании, можем добавить еще одного пользователя через “Дополнительно” — “Поиск”. Аналогичным образом можно добавить группу пользователей, например, “Администраторы”, при этом следует понимать, что доступ будет предоставлен всем пользователям из этой группы.

При желании добовляем еще одного пользователя

Установим права доступа для пользователя “buhgalter”. Если требуется полный доступ к директории, устанавливаем галку в соответствующем месте.

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

Нажимая кнопки “OK” возвращаемся к окну свойств папки, в котором кликаем по кнопке “Общий доступ”.

Возвращаемся обратно и выбираем общий доступ

В данном окне необходимо найти и добавить пользователя “бухгалтер”.

Ищем нашего пользователя и добавляем его

В окне выбора пользователей и групп кликаем по кнопке “Дополнительно”.

Выбираем дополнительные параметры

Окно снова изменит свои размеры. Кликаем по кнопке “Поиск”. В найденном ниже списке пользователей и групп выбираем искомого пользователя. Выбираем его двойным кликом.

Выбираем пользователей

В оставшемся окне проверяем правильно ли указан пользователи и нажимаем кнопку “OK”.

Проверяем выбранного пользователя

Устанавливаем требуемый уровень разрешений для пользователя и кликаем по кнопке “Поделиться”.

Добавляем права и делимся ими

Кликаем по кнопке “Готово”.

Теперь папка общего доступа доступна

Подключение к общим папкам

Из Linux

Для подключения к общим папкам из среды Linux требуется установка отдельного программного обеспечения — smbclient. Установим:

sudo apt-get install smbclient

Для подключения к серверу используется следующий формат комангды:

smbclient -U <Имя_пользователя> <IP-адрес><Имя_каталога_на_сервере>

Пример:

smbclient -U buhgalter 10.0.0.1public

Для того, Чтобы не вводить эту команду каждый раз, можно настроить монтирование общей директории как сетевого диска. Для этого установим пакет cifs-utils:

sudo apt-get install cifs-utils

Монтирование выполняется по следующему шаблону:

mount -t cifs -o username=<Имя_пользователя>,password= //<IP-адрес>/<Общий каталог> <Точка монтирования>

Пример:

mount -t cifs -o username=Everyone,password= //10.0.0.1/public /media

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

Из Windows

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

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

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

Список общих папок

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

Для подключения к общей папке выбираем Everyone и пустое поле для пароля

При подключении к Linux-серверу из ОС Windows, следует использовать указанный ранее шаблон:

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

или просто адрес сервера:

<IP-адрес>

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

Создайте директорию, которую в хотите сделать общей:

mkdir /home/<user_name>/<folder_name></folder_name></user_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</user_name></folder_name></user_name></folder_name>

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

Перезапустим 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></user></folder_name></host_ip_or_name></user></folder_name></host_ip_or_name>

Note 1: Чтобы подключиться к вашему общему сетевому ресурсу используйте имя вашего пользователя () и пароль, который находится «smb:////»
Учтите, что «» значение передается в «[]»,
другими словами, имя общего ресурса, которое вы ввели в «/etc/samba/smb.conf».
Note 2: Группа пользователей samba по умолчанию это — «WORKGROUP».

Уровень сложностиСредний

Время на прочтение10 мин

Количество просмотров17K

Привет, Хабр! Хочу поделиться личным опытом превращения старенького ноутбука ASUS X552CL (i5-5200U, 12 ГБ RAM, SSD + HDD), выпущенный 12 лет назад, в полноценный домашний сервер под Linux Ubuntu Server 24.04.5 LTS.

Поднять файлопомойку с рабочим стеком на Linux — это тоже прогресс 🧠📁⚙️

Поднять файлопомойку с рабочим стеком на Linux — это тоже прогресс 🧠📁⚙️

Получилось что-то вроде мини-датацентра у меня дома — он хранит файлы на жёстком диске с бэкапом в облаке, Docker-контейнеры крутит для дата-аналитики и даже имеет легковесный интерфейс XFCE, при этом есть потенциал к росту до терминала для управления умным домом. Расскажу, почему было решено отказаться от WSL на рабочем ноутбуке Huawei, как настроить удалённый доступ через xRDP (чтобы не было чёрного экрана), запустить там Docker, сборку Superset и JupyterLab с Anaconda (с разными версиями Python), прикрутить Samba-шару для домашнего использования и организовать бэкап в облачное хранилище. В этой статье будет немного технических деталей, чуть-чуть шуток и парочка мемов с советскими плакатами.

Зачем отдельный сервер вместо WSL на основном ноутбуке?

Началось всё с раздражения от багов на основном рабочем ноутбуке после запуска WSL (Windows Subsystem for Linux) — Windows стал ощутимо подтормаживать после запуска ресурсоёмких задач в Docker-контейнерах. Стало проблематично активно пользоваться Python, JupyterLab, Superset в сборке — для pet-проектов и быстрых аналитических MVP. В какой-то момент параллельная работа Windows-приложений и WSL с нагрузкой стала слишком тяжелой для нового бойца — вентиляторы воют, батарея тает на глазах, да и вообще неприятно, когда основная система проседает из-за бекграунд-задач. И вот в бой вступил старичок — лежавший в пыли несколько лет, но проверенный временем ASUS X552CL — рабочая лошадка для типовых прикладных задач.

Мне пришла в голову простая мысль «а если взять отдельную машину под все эти linux-сервисы?» И тут вспомнился мой старый добрый ASUS X552CL 2013 года выпуска.

 По команде neofetch терминал Ubuntu  выдает всю информацию о железке

По команде neofetch терминал Ubuntu выдает всю информацию о железке

Он пылился на полке, но всё ещё был в рабочем состоянии. Пусть слабенький i5 и всего 12 ГБ оперативки — зато свой собственный, выделенный Linux, который не жалко нагружать по полной. Решено — поднимаю домашний сервер.

Задумал связать все рабочие устройства на Linux😎🛠️

Задумал связать все рабочие устройства на Linux😎🛠️

Помимо разгрузки основного ПК, отдельный сервер даёт ещё плюсы, например, можно не беспокоиться, что внеплановая перезагрузка Windows (привет, обновления) убьёт длительный расчёт в Jupyter с выгрузкой в Superset через SQL Lab. Плюс, весь нужный софт можно настроить один раз под себя в Linux-среде и запускать как угодно долго. Короче говоря, WSL — это хорошо, но выделенный Linux-сервер — лучше (по крайней мере, для моих задач).

Установка Ubuntu Server 24.04 с XFCE — почему минимализм рулит?

На старый ноут поставьте свежайший Ubuntu Server 24.04.5 LTS (без графической оболочки, только терминал). Почему серверная версия? Потому что она изначально более легковесная, там ничего лишнего, только базовая система без окружения рабочего стола. Как раз то, что надо для слабого железа. Установка проходит штатно (с USB флешки, используя текстовый установщик Ubuntu Server). Достаточно загрузить дистрибутив (3 ГБ) на флешку через Rufus (Windows) или balenaEtcher (Windows/Linux/macOS). Во время установки ОС загрузить дополнительные драйверы для видеокарты и установить всю ОС на SSD, установщик разобьёт диск на подразделы автоматически.

По командеdf -h терминал покажет разделение SSD/HDD после установки

Во время установки ОС и после советую оставить проводное интернет-соединение Ethernet, так установщику будет легче обновить компоненты и найти новые драйверы, а стабильное соединение не уронит все развёрнутые инструменты в будущем. После установки добавьте XFCE — легковесную графическую оболочку, чтобы при желании можно было подключаться по Remote Desktop и иметь привычный графический интерфейс. Обновите систему и поставьте сам XFCE.

sudo apt update && sudo apt upgrade -y
sudo apt install -y xfce4 xfce4-goodies

Почему XFCE, а не что-то другое? XFCE славится скромным аппетитом к ресурсам и неприхотливостью. Запускать на старом ноуте полный GNOME или KDE будет слишком жирно, а XFCE — в самый раз. К тому же, работать с сервером по SSH и через веб-интерфейсы (типа JupyterLab) лучше на постоянно поднятых localhost без необходимости поднимать их снова после перезапуска системы. Но иногда удобнее покликать мышкой в удалённом рабочем столе — например, настроить ту же Samba через файловый менеджер или показать что-то приятелю на экране.

Пакет xfce4-goodies ставит дополнительные полезные штуки для XFCE (плагины, утилиты — пусть будут). После этого установите xRDP для RDP-доступа.

sudo apt install -y xrdp
sudo systemctl enable --now xrdp

Теперь самое интересное — настройка xRDP с XFCE и борьба с чёрным экраном. Если попробовать подключиться по умолчанию, то велик шанс увидеть просто чёрный экран вместо рабочего стола — беда всего Windows — чёрный и синий экраны. Пришлось немного погуглить форумы (спасибо dmosk.ru и официальным мануалам на manpages.ubuntu.com — за вдохновением — туда 😜).

 Открытые данные — топливо для пингвинотопливных ракет GNU/Linux 🚀🐧

Открытые данные — топливо для пингвинотопливных ракет GNU/Linux 🚀🐧

В итоге найдено такое решение.

  1. Создайте файл с командой запуска XFCE при RDP-сессии. Проще всего положить команду в ~/.xsession для конкретного пользователя. Она укажет xRDP запускать сессию XFCE (xfce4-session) при логине.

    echo "xfce4-session" > ~/.xsession

  2. Отключите переменные окружения, которые мешают запуску. Откройте файл /etc/xrdp/startwm.sh командой sudo nano /etc/xrdp/startwm.sh от имени администратора и добавьте две строки перед запуском Xsession. Вставьте в начало файла (или перед строкой test -x /etc/X11/Xsession && exec /etc/X11/Xsession) команды.

    unset DBUS_SESSION_BUS_ADDRESS
    unset XDG_RUNTIME_DIR

    Сохраните файл Ctrl+O → Enter → Ctrl+X.

  3. Перезагрузите xRDP.

    sudo systemctl restart xrdp

После этих настроек удалённый рабочий стол будет работать штатно. Подключайтесь с Windows через стандартный клиент RDP (запускается через PowerShell по команде mstsc). Важно! В окне входа xRDP выбирайте сессию Xorg, а не Xvnc или что-то другое. Зачастую вариант Xorg прекрасно запускает XFCE-сессию. Если выбрать не тот тип сессии, опять можете получить пустой (чёрный, синий) экран. Также убедитесь, что в данный момент тот же пользователь не залогинен локально на ноутбуке — xRDP не любит одновременный локальный и удалённый вход под одним пользователем.

Чтобы подключиться с винды, нужно ввести IP-адрес своего домашнего сервера в локальной сети. Узнать его легко по выводу команды ip a в терминале Linux Ubuntu.

Пример вывода по команде ip a.$ ip a
2: wlp4sds0: ...
inet 192.168.1.100/28 brd 192.168.1.255 scope global dynamic noprefixroute wlp3sds0
...

В выводе ищем свой интерфейс (Ethernet или Wi-Fi, у меня wlp3sds0 для Wi-Fi) и смотрим после inet. Вот, в примере вывода, 192.168.1.100 — это и есть локальный IP сервера. Вбиваем этот IP в Windows в «Подключение к удалённому рабочему столу», вводим учётные данные Ubuntu-пользователя – и вуаля, получаем рабочий стол XFCE. Теперь старенький ноутбук радостно показывает свой экран в окошке RDP.

Кстати, производительность XFCE через RDP оказалась вполне сносной. Основная же работа всё равно идёт через терминал и Docker, о чём далее.

Samba — это и танец, и общая папка для себя и близких с бэкапом на облаке

После настройки базовой системы сразу возникает запрос от Домашнего Заказчика 😊

— А можно ли сделать общую папку, куда можно скидывать файлы со своего компа?                                                              —  Да без проблем!

— А можно ли сделать общую папку, куда можно скидывать файлы со своего компа? — Да без проблем!

Решено поднять Samba-сервер на Ubuntu, чтобы Windows-устройства в сети видели ноутбук как файловое хранилище. Благо на Ubuntu Samba настраивается элементарно.

  1. Установите Samba и создайте папку на втором диске (HDD) для шаринга.

    sudo apt install -y samba sudo mkdir -p /mnt/storage/share sudo chown -R nobody:nogroup /mnt/storage/share sudo chmod -R 0777 /mnt/storage/PublicShare

    Проще выбрать простейший вариант — общий ресурс без авторизации (guest access). В локальной домашней сети безопасность не критична, зато все домашние устройства подключаются без лишних логинов. Откройте конфиг Samba (sudo nano /etc/samba/smb.conf) и добавьте в самый конец файла запись.

    [PublicShare]
    path = /mnt/storage/PublicShare
    browseable = yes
    guest ok = yes
    read only = no
    force user = nobody

    Сохраните файл Ctrl+O → Enter → Ctrl+X.

  2. Перезапустите сервер Samba

    sudo systemctl restart smbd

    Теперь мой виден в локальной сети. На Windows достаточно открыть проводник и ввести \\192.168.1.100\PublicShare — общая папка открывается, можно читать/писать. Никаких флешек и Telegram-файлов, всё по Wi-Fi напрямую на сервер. Роднулькины довольны, да и админу сервера удобно файлы перекидывать между устройствами.

  3. Дополнительно, чтобы важные данные не хранились только на этом стареньком HDD, настройте резервное копирование в облачное хранилище, например, Я.Диск. Для этого используйте утилиту Yandex.Disk для Linux (она есть в репозиториях) под учёткой своего аккаунта. Смонтируйте Я.Диск в систему и настройте cron задачу, которая раз в ночь синхронизирует содержимое общей папки с облаком. Теперь даже если диск ноутбука накроется, копия файлов будет в облаке. Вы спите спокойно и домашний бухгалтер (в лице кого угодно близкого) — тоже.

    Крутятся Docker-контейнеры — JupyterLab с Anaconda, несколько Python и PostgreSQL

    Конечно, главный смысл всего этого затеянного сервера – запускать рабочие окружения – например, Docker-контейнеры с JupyterLab, где крутятся Python-проекты.

    1. Установите Docker CE из стандартного репозитория Ubuntu (на самом деле, можно было и snap-версию, но эта статья скорее для консерваторов).

      sudo apt install -y docker.io docker-compose sudo usermod -aG docker $USER # чтобы не требовался sudo для docker

      После команды стоит перелогиниться или выполнить newgrp docker, чтобы права применились.

    2. Docker на Ubuntu стартует как служба. Убедитесь что он запущен.

      sudo systemctl status docker (вывод должнен включать active (running)).

    3. Далее — дело техники. Стягивайте образы с JupyterLab. Можно иметь окружения сразу с двумя версиями Python (скажем, для разных проектов требуется 3.10 и 3.11). Чтобы не мучаться с установкой нескольких версий на сам сервер, берите готовые образы Jupyter с нужными Python внутри. Нашёл официальные образы jupyter/base-notebook с тегами под Python 3.10 и 3.11 – самое то, плюс там уже предустановлен JupyterLab и conda (Anaconda). Запустите оба контейнера.

      docker run -d -p 8888:8888 --name jupyter-py310 jupyter/base-notebook:python-3.10.10

      docker run -d -p 8889:8888 --name jupyter-py311 jupyter/base-notebook:python-3.11.5

      Оба контейнера запускаются в фоне (-d), первый мапит порт 8888, второй – 8889 на хосте (чтобы одновременно могли работать). Через пару минут образы скачались и сервисы JupyterLab внутри поднялись. Проверяю командой docker ps – оба контейнера Up. Отлично! Теперь можно заходить в браузере на адрес сервера с указанными портами: http://192.168.1.4:8888 для Python 3.10 (и :8889 для 3.11). JupyterLab спросит токен – его можно увидеть через docker logs jupyter-py310 (в выводе логов Jupyter есть URL с токеном). Ввожу токен – и попадаю в знакомый интерфейс JupyterLab, только теперь он крутится на моём домашнем сервере.

      Замечу, что эти образы содержат Anaconda (то есть пакетный менеджер conda и куча библиотек уже внутри). Это удобно, потому что сразу есть и NumPy, Pandas, SciPy и т.д. Если чего-то не хватает, можно добить через pip или conda внутри контейнера. С точки зрения Windows-ноутбука – никакой нагрузки, всё считается и обрабатывается на своём сервере с ОС Linux Ubuntu, а вы получаете картинку через браузер без утечки данных с локали.

А как же данные и базы? Для проектов в аналитике может быть нужен PostgreSQL. Его на сервере также лучше не вручную разворачивать, а запустить в Docker-контейнере для удобства связки с остальными инструментами. Заодно есть возможность взаимодействия контейнеров.

Поднимем PostgreSQL.

  1. Первая команда запустит Postgres 15, создаст пользователя test с паролем secret и откроет порт 5432 для доступа.

    docker run -d --name pg-db -e POSTGRES_USER=test -e POSTGRES_PASSWORD=secret -p 5432:5432 postgres:15

  2. Чтобы Jupyter (который в контейнере) смог достучаться до Postgres, их нужно либо в одну сеть поместить, либо коннектиться по IP хоста. Для удобства создайте общую докер-сеть и подключите сервисы к ней.

    docker network create dev-net
    docker network connect dev-net jupyter-py310
    docker network connect dev-net jupyter-py311
    docker network connect dev-net pg-db

Теперь внутри контейнера Jupyter можно обращаться к хосту pg-db (Docker имена резолвятся в этой сети) на порт 5432. Например, в ноутбуке psycopg2.connect(host=»pg-db», port=5432, user=»test», password=»secret») — и всё работает. Конечно, можно было и просто на хостовой машине установить Postgres, но где наша не пропадала — контейнеризация рулит, все сервисы изолированы и управляются централизованно.

Отдельно отмечу испытание для ноутбука на i5 с 12 ГБ RAM в части запуска одновременно нескольких таких контейнеров (2 Jupyter + Postgres). К удивлению, даже старичок справляется. Когда не пользуетесь каким-то из сервисов, их можно останавливать командой docker stop ... и освобождать ресурсы. В этом прелесть Docker — окружения поднимаются и глушатся по требованию, а не висят всё время в памяти и не тормозят остальные процессы. В итоге старенький ASUS превращается… превращается в маленький личный сервер для разработки — можно с любого компьютера подключиться к JupyterLab и Postgers через браузер и заниматься своими аналитическими проектами в связке с Superset.

Терминал умного дома в будущем

Сейчас ресурc используется как сервер-файлопомойка и удалённый терминал для аналитикии. Но на этом не стоит останавливаться. В планах – прокачать его до центра управления умным домом. Благо он всегда включён и в сети, грех не воспользоваться.

  • Установить Home Assistant – следить за датчиками, управлять лампочками, розетками, да хоть умный чайник с компьютерного кресла поставить перед кофе-брейком и дождаться, пока закипит;

  • Поднять MQTT-брокер (например, Mosquitto) для обмена сообщениями между IoT-устройствами;

  • Подключить USB-донглы для Zigbee/Z-Wave, чтобы сервер мог общаться с датчиками и девайсами напрямую;

  • Реализовать систему видеонаблюдения. Те же IP-камеры могут записывать на HDD, а смотреть можно через веб-интерфейс — Home Assistant или ZoneMinder/Frigate;

  • Да и вообще, идей масса — от собственного медиа-сервера (Plex или Jellyfin) до сервера под разработку. Старичок-ноутбук, надеюсь, всё вытянет потихоньку.

 Макет веб-интерфейса   Home Assistant

Макет веб-интерфейса Home Assistant

Конечно, важно помнить об ограничениях — i5-5200U не станет мощнее просто и вдруг😅. Скорее всего, придётся докупить планку памяти – лишней не будет. А в крайнем случае более современную видеокарту можно будет подключить через Thunderbolt.

Выводы

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

 Схема архитектуры домашнего сервера, от Docker-контейнеров до будущего терминала умного дома, — на старом ASUS

Схема архитектуры домашнего сервера, от Docker-контейнеров до будущего терминала умного дома, — на старом ASUS

Самое приятное — это ощущение, что сделал маленький личный “облачный” сервер. Хочешь – разворачивай новую БД, хочешь – подними очередной контейнер с редисом или даже веб-приложение — на железке десятилетней давности.

Так что не спешите выбрасывать или продавать раритет — ему можно дать вторую жизнь в новом амплуа. Возможно, старый ноутбук тоже скучает по работе – превратите его в полезный домашний сервер, это увлекательно и практично. Ну а если по ходу дела встретите трудности – заглядывайте на форумы, читайте мануалы и never give up 👌

Все способы:

  • Шаг 1: Активация компонента
  • Шаг 2: Проверка и настройка
    • Вариант 1: Клиент
    • Вариант 2: Сервер
  • Шаг 3: Подключение
  • Вопросы и ответы: 2

Шаг 1: Активация компонента

По умолчанию компонент, отвечающий за работу службы Samba (SMB), отключен в Windows 10, поэтому перед настройкой его следует активировать. Делается это в специальном меню «Панели управления». Достаточно будет открыть окно «Компоненты Windows» и установить отметку напротив пункта «Поддержка общего доступа к файлам SMB 1.0/CIFS». В завершение следует перезапустить компьютер, чтобы внесенные изменения зарегистрировались в системе. При надобности обратитесь за помощью к тематической статье на нашем сайте — в ней автор описал эту процедуру более подробно. Там же вы сможете найти альтернативные методы выполнения поставленной задачи. Для ознакомления с темой перейдите по ссылке ниже.

Подробнее: Как включить SMBv1 в Windows 10

настройка smb в windows 10_01

Шаг 2: Проверка и настройка

После того как компонент «Поддержка общего доступа к файлам SMB 1.0/CIFS» будет включен, необходимо проверить его работу и выполнить запуск. Для клиентской и серверной части эти действия выполняются по-разному. Подробнее о них будет рассказано дальше по тексту.

Вариант 1: Клиент

Если вы собираетесь настроить клиентскую часть SMB, запустите оболочку «Windows PowerShell» от имени администратора и выполните несколько команд. Делается это следующим образом:

  1. Запустите оболочку любым доступным способом. Например, сделать это можно посредством поиска по системе. Установите курсор в соответствующее поле на панели задач, введите запрос «Windows PowerShell» и в результате щелкните по пункту «Запуск от имени администратора».
    настройка smb в windows 10_02

    Читайте также: Как открыть Windows PowerShell в Windows 10

  2. При появлении диалогового окна контроля учетных записей щелкните по кнопке «Да», чтобы разрешить запуск оболочки.
  3. настройка smb в windows 10_03

  4. В появившееся окно «Windows PowerShell» вставьте команду sc.exe qc lanmanworkstation и нажмите Enter для ее выполнения.

    В результате появится информация, касающаяся клиентской части службы SMB. Здесь вам необходимо обратить внимание на строку «Зависимости». Важно, чтобы в списке была указана службы под названием «MRxSmb20». Если она есть, значит, все нормально и клиент Samba настроен правильно.

  5. настройка smb в windows 10_04

  6. Если в списке «MRxSmb20» отсутствует, следует вручную включить эту службу. Сделать это можно посредством редактирования системного реестра или путем ввода специальных команд в «Windows PowerShell». Во втором случае воспользуйтесь приведенными ниже командами. Поочередно вставьте их в консоль и нажмите по клавише Enter для выполнения.

    sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
    sc.exe config mrxsmb10 start= auto

    настройка smb в windows 10_05

    Если после ввода команд на экране появлялось сообщение «[SC] ChangeServiceConfig: успех», значит, вы все выполнили верно и клиентская часть Samba полностью настроена.

Вариант 2: Сервер

Серверная часть SMB настраивается похожим образом, но прежде следует проверить ее статус посредством специальной команды, приведенной ниже. Откройте «Windows PowerShell» от имени администратора, как это было показано ранее, а затем выполните команду.

PowerShell Get-SmbServerConfiguration | Select EnableSMB1Protocol

настройка smb в windows 10_06

Наличие в столбце «EnableSMB1Protocol» значения «True» означает, что сервер настроен корректно и готов к работе. В противном случае вам необходимо выполнить настройку вручную. Для этого сделайте следующие действия:

  1. Впишите в «Windows PowerShell» команду Set-SmbServerConfiguration -EnableSMB1Protocol $true и нажмите Enter, чтобы ее выполнить.
    настройка smb в windows 10_07

    При появлении запроса подтверждения впишите символ «Y» (без кавычек) и нажмите по клавише Enter. Это нужно для завершения выполнения команды.

  2. После этого окно консоли вы можете закрыть, оставшиеся действия выполняются в «Редакторе реестра». Откройте его через системный поиск или утилиту «Выполнить», вызываемую сочетанием клавиш Win + R. Вставьте в поле «Открыть» команду regedit и кликните по кнопке «ОК».
    настройка smb в windows 10_08

    При появлении диалогового окна контроля учетных записей кликните по кнопке «Да», чтобы разрешить запуск «Редактора реестра».

  3. В появившемся окне приложения воспользуйтесь древовидной структурой каталогов в левой части интерфейса, чтобы перейти по указанному далее пути. Вы также можете сделать это намного быстрее — вставив адрес в адресную строку, находящуюся сверху. Просто скопируйте путь и вставьте его туда, а для перехода нажмите по клавише Enter.

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

  4. настройка smb в windows 10_10

  5. Находясь в целевой директории, найдите в ней параметр под названием «SMB1» и откройте его свойства. Для этого щелкните по нему правой кнопкой мыши и из появившегося контекстного меню выберите пункт «Изменить».
  6. настройка smb в windows 10_11

  7. В поле «Значение» введите цифру «1» (без кавычек) и нажмите по кнопке «ОК», чтобы сохранить внесенные изменения.

    Как только все описанные действия будут выполнены, настройку серверной части службы Samba можно считать оконченной.

Шаг 3: Подключение

Теперь, когда служба SMB настроена, можно непосредственно пробовать подключаться к серверу. Делается это стандартным способом через меню сетевого диска. Открыть его вы можете через файловый менеджер «Проводник». По итогу вам нужно будет присвоить букву новому диску, ввести адрес сервера Samba и нажать на «Готово». Подробнее об этом рассказывается в другой статье на нашем сайте. Ознакомиться с ее содержанием вы можете посредством следующей ссылки.

Подробнее: Как подключить сетевой диск в Windows 10

настройка smb в windows 10_13

Читайте также: Что делать, если не удается подключить сетевой диск в Windows 10

Наша группа в TelegramПолезные советы и помощь

Введение

Что умеет Samba

Инсталляция и тестирование Samba

Где взять

Конфигурирование Samba

Запуск демонов

Простой тест

Основная настройка smb.conf

Используем текстовый интерфейс

Используем SWAT

Детальная настройка

   Файловый сервер под Linux

   Доступ к дискам Windows из Linux

Заключение

Введение

В общей структуре
корпоративных сетей Microsoft Windows и Linux
зачастую существуют как разобщенные миры.
Попытки обеспечить «прозрачный»
доступ сетевых клиентов Windows к ресурсам UNIX зачастую порождают
множество проблем. Одним из способов,
позволяющих их решить, является
использование в UNIX/Linux
протокола Server Message Block (SMB — Samba),
который иногда также называется протоколом
Session Message Block (SMB), протоколом NetBIOS или
протоколом LanManager. Этот протокол не является
разработкой Microsoft,
однако он хорошо адаптирован
для использования в сетях на основе Windows. Хотя эта статья и посвящена Linux,
тем не менее Samba может работать на
большинстве UNIX-подобных
операционных систем. И еще одно замечание: в данной
статье мы рассмотрим пакет SMB
с точки зрения малого предприятия, которому
нужен локальный файл- или принт-сервер, либо
домашнего пользователя, имеющего
несколько компьютеров и желающего,
чтобы машины совместно использовали
ресурсы. Поэтому даже начинающий
администратор UNIX/Linux может принять эту статью как
руководство к действию.

Что умеет Samba

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

Протокол SMB используется Microsoft Windows 2000, NT и 95/98 для организации
доступа к дискам и принтерам. Используя набор утилит Samba от Andrew Tridgell
(Andrew.Tridgell@anu.edu.au),
UNIX-машины (включая Linux) могут организовывать доступ к дискам и принтерам
для Windows-машин. Утилиты smbfs, написанные Paal-Kr. Engstad (pke@engstad.ingok.hitos.no)
и Volker Lendecke (lendecke@namu01.gwdg.de),
дают возможность машинам с UNIX монтировать SMB-ресурсы, доступные на машинах
с Windows или Samba.

C помощью Samba можно реализовать следующие наиболее распространенные:

  1. Давать доступ к дискам Linux Windows-машинам.
  2. Получать доступ к дискам Windows для машин под Linux.
  3. Давать доступ к принтерам Linux для Windows-машин.
  4. Получать доступ к принтерам Windows из Linux-систем.

Далее в статье будет
дано подробное описание того, как это все
реализовать.

Инсталляция и тестирование Samba

Инсталляцию, как известно, следует начинать с подробного изучения документации.
Правда, большинство системных администраторов пренебрегают этим правилом, руководствуясь
другим: «Если уже ничего не помогает, почитайте документацию». В общем, советуем
начать инсталляцию Samba с простой команды: $ man samba (рис.
1).

А также c чтения документации, доступной на сайте http://www.samba.org/.
Следует отметить, что для использования Samba ваша машина должна находиться
в одиночном Ethernet-сегменте локальной сети, при этом используя протокол TCP/IP.
Samba не будет работать при использовании других сетевых протоколов. Это, в
принципе, легко, поскольку Linux и Windows 95/98/NT поставляются с поддержкой
TCP/IP. Однако если вы используете машины с Windows 3.x, то вам необходимо добавить
поддержку TCP/IP.

Где взять

Для того чтобы получить исходные тексты последней версии Samba, свяжитесь с
сайтом http://www.samba.org/
и выберите ближайший к вам сервер-зеркало: ftp://ftp.samba.org/. Пакет Samba
входит в состав дистрибутивов ряда UNIX/Linux-систем, например Rad Hat или Suse
Linux. Внимательно изучите документацию вашего Linux, и, вполне возможно, что
вам будет достаточно только вставить CD и инсталлировать пакеты Samba. В этом
случае вы можете продолжать чтение статьи со следующей главы.

После получения
данного пакета извлекаем все то, что
находится под «грифом» *.tar.gz,
например, в директорию /tmp
(причем для этого не обязательно быть root’ом
:), то есть:

$ tar -zxvf samba-latest.tar.gz  

Если у вас не возникло
никаких проблем при извлечении данного
пакета, вы обнаружите новую директорию,
например samba-latest,
и в ней извлеченные файлы. Перейдите в нее,
загляните в файлы «README» и «Manifest»
— инструкция по инсталляции находится в
последнем файле и выглядит примерно так:

$ ./configure  
$ make  
$ su  
# make install  

Теперь надо обратить
внимание на то, где находятся ваши файлы
конфигурации. Большинство дистрибутивов Samba
по умолчанию помещает их в директорию /etc,
а себя — в директорию /usr/local/samba.

Конфигурирование Samba

Основная информация о
конфигурации Samba
находится в файле smb.conf.
С этим файлом следует обращаться осторожно.
Если вы планируете каким-либо образом
изменить работающую версию, обязательно
сделайте копию.

Для того чтобы первый
раз запустить сервер, необходимо иметь
рабочую версию файла smb.conf. Перейдите в директорию, в
которой должен находиться ваш
конфигурационный файл. Скорее всего это
будет /etc или
/usr/local/samba/lib.
Сделайте копию данного файла, например smb.old,
— это возможно при наличии прав root.
Теперь, когда у вас есть «чистый» файл,
можно ввести самую простую конфигурацию, то
есть набрать следующие строки:

#Basic Samba configuration file (smb.conf)  
[global]  
workgroup = PTO  
netbios name = GALKA  

Ниже мы разберемся,
что означают эти строки в файле
конфигурации, но сначала временно
отвлечемся от него и перейдем к демонам SMB.

Запуск демонов

Имеется два демона SMB: /usr/sbin/smbd
и /usr/sbin/nmbd. Вы можете запустить демоны Samba из
inetd или как автономный процесс. Samba будет
отвечать чуть быстрее в случае, если она
запущена как автономный процесс.

Иногда
бывает необходимо проверить наличие в
файле /etc/services примерно таких строк:

netbios-ns            137/tcp                      nbns  
netbios-ns            137/udp                      nbns  
netbios-dgm           138/tcp                      nbdgm  
netbios-dgm           138/udp                      nbdgm  
netbios-ssn           139/tcp                      nbssn  

Убедитесь, что все они
не закомментированы. В зависимости от
вашего дистрибутива вам, вероятно, даже
понадобится добавить их в этот файл. Samba не сможет привязаться к
соответствующим портам, до тех пор пока
этих строк не будет в файле /etc/services.

Для запуска демонов из
inetd поместите следующие строки в
конфигурационный файл inetd, /etc/inetd.conf:

# SAMBA NetBIOS services (for PC file and print sharing)  
    netbios-ssn            stream            tcp            nowait               root            /usr/sbin/smbd smbd  
    netbios-ns             dgram             udp            wait                 root            /usr/sbin/nmbd nmbd  

Затем перезапустите
демон inetd, выполнив команду:

kill -HUP 1 `cat /var/run/inetd.pid`  

Для запуска демонов из
системных стартовых скриптов поместите
следующий скрипт в файл /etc/rc.d/init.d/smb (для
дистрибутива RedHat) или /etc/rc.d
(для дистрибутива Suse
Linux) и
создайте на него символические ссылки с
именами вида /etc/rc.d/rcX.d/S91smb
(запускает сервисы SMB в
многопользовательском режиме), /etc/rc.d/rcX.d/K91smb (убивает сервисы SMB при
выключении), /etc/rc.d/rc6.d/K91smb (убивает сервисы SMB
при перезагрузке), где X
— номер загрузочного уровня системы,
обычно это цифра 2 или 3.

#! /bin/sh  
. /etc/rc.config  
# Determine the base and follow a runlevel link name.  
base=${0##*/}  
link=${base#*[SK][0-9][0-9]}  
# Force execution if not called by a runlevel directory.  
test $link = $base && START_SMB=yes  
test "$START_SMB" = "yes" || exit 0  
# The echo return value for success (defined in /etc/rc.config).  
return=$rc_done  
case "$1" in  
    start)  
        echo -n "Starting SMB services:"  
        startproc /usr/sbin/nmbd -D || return=$rc_failed  
        startproc /usr/sbin/smbd -D || return=$rc_failed  
        echo -e "$return"  
        ;;  
    startd)  
        echo -n "Starting SMB services:"  
        startproc /usr/sbin/nmbd -D -d 10 || return=$rc_failed  
        startproc /usr/sbin/smbd -D -d 10 || return=$rc_failed  
        echo -e "$return"  
        ;;  
    stop)  
        echo -n "Shutting down SMB services:"  
        killproc -TERM /usr/sbin/nmbd || return=$rc_failed  
        killproc -TERM /usr/sbin/smbd || return=$rc_failed  
        echo -e "$return"  
        ;;  
    restart|reload)  
            $0 stop  &&  $0 start  ||  return=$rc_failed  
            ;;  
    status)  
            echo -n "Checking for service smb: "  
            checkproc /usr/sbin/nmbd && echo -n "OK " || echo -n "No process "  
            checkproc /usr/sbin/smbd && echo "OK " || echo "No process"  
            ;;  
    *)  
        echo "Usage: $0 {start|stop|restart|reload|status}"  
        exit 1  
esac  
# Inform the caller not only verbosely and set an exit status.  
test "$return" = "$rc_done" || exit 1  
exit 0  

Если при старте Samba вы
получаете сообщение, в котором говорится,
что демон не может подключиться к порту 139,
то скорее всего у вас уже есть запущенные
процессы Samba, которые не были завершены.
Посмотрите список процессов (используя
команду ‘ps ax | grep mbd’) для того, чтобы
определить, есть ли еще запущенные сервисы
Samba. Если же демоны отказываются
запускаться по каким-либо другим причинам,
то вероятнее всего этот скрипт не подходит
к вашему UNIX/Linux
и вам придется еще раз покопаться в
документации, что-то в нем поправить, а
может быть, и переписать.

Простой тест

Будем надеяться на
лучшее и считать, что Samba
при запуске не выдала никаких сообщений об
ошибках. А для того, чтобы проверить,
работает ли это реально, надо набрать в
командной строке:

# smbclient -L localhost  

Выполняющаяся программа попросит вас ввести пароль. Здесь можете просто нажать
Enter. Вот какие строчки должны появиться на мониторе (рис.
2).

Основная настройка smb.conf

Очевидно, что в описанной
выше конфигурации Samba
может функционировать, но практически не
может ничего делать. Ниже будут рассмотрены
более полезные и сложные примеры. Но
сначала надо разобраться в директивах smb.conf.

Каждый раздел файла
начинается с заголовка раздела, такого как [global], 
[homes], [printers]
и т.п.

Секция [global] определяет некоторые переменные,
которые Samba будет использовать для
определения доступа ко всем ресурсам.
Раздел [homes] позволяет удаленным
пользователям иметь доступ к своим (и
только своим) домашним директориям на
локальной Linux-машине. Так что если
пользователи Windows попытаются подключиться
к этому разделу со своих Windows-машин, то они
будут соединены собственными домашними
директориями. Заметим, что для
этого они должны быть зарегистрированы
на Linux-машине.

Используем текстовый интерфейс

Многие системные
администраторы при инсталляции Linux
ограничиваются только текстовым
интерфейсом, не устанавливая графический (X
Windows).
Это положительно сказывается на
безопасности и быстродействии системы, но
делает недоступными утилиты вроде SWAT,
работе с которой посвящена нижеследующая
часть этой статьи.

Простой файл smb.conf,
приведенный ниже, позволяет удаленным
пользователям иметь доступ к своим
домашним директориям на локальной машине и
помещать информацию во временную
директорию. Пользователи Windows могут увидеть
эти ресурсы, подключив сетевые диски, при
этом естественно — машина с Linux должна
иметь выход в локальную сеть. 
Заметим, что будут приведены
дополнительные записи для этого файла,
чтобы дать доступ к большему количеству
ресурсов.

; /etc/smb.conf  
;  
; Убедитесь и перезапустите сервер после внесения изменений в этот  
; файл, например:  
; /etc/rc.d/smb stop  
; /etc/rc.d/smb start  
[global]  
; Раскомментируйте эту строку, если вы хотите дать доступ пользователю "гость"  
; guest account = nobody  
   log file = /var/log/samba-log.%m  
   lock directory = /var/lock/samba  
   share modes = yes  
[homes]  
   comment = Home Directories  
   browseable = no  
   read only = no  
   create mode = 0750  

Написав новый файл
smb.conf, полезно проверить его правильность.
Для этого можно использовать утилиту ‘testparm’
(предварительно заглянув на справочную
страницу testparm); если testparm сообщает об
отсутствии проблем, то smbd правильно
загрузит файл настроек.

Имейте в виду: если ваш
сервер Samba имеет больше одного Ethernet-интерфейса,
то smbd может подключиться к неправильному.
Чтобы заставить ее подключаться к нужному,
можно добавить в раздел [global] файла /etc/smb.conf
следующую строку:

interfaces = 192.168.1.1/24  

Теперь можно
запускать Sambа.
При этом необходимо учитывать, что чем
больше сервисов настроено на вашем сервере,
тем более он оказывается уязвим.

Если говорить о
безопасности SAMBA, то следует учесть, что она
использует порты 137-139. Есть смысл просто
заблокировать их из TCP и UDP. В случае если у
вас стоит ядро версии 2.0 (это можно легко
узнать, набрав в консоли uname -a), то для
фильтрации используйте ipfwadm,
а если ядро версии 2.1 или 2.2, — то ipchains.

Вот как
это делается с помощью ipfwadm:

# Добавляем нижеприведенные записи  
в /etc/rc.local:   
ipfwadm -I -P tcp -a deny -S any/0 137:139 -W eth0   
ipfwadm -I -P udp -a deny -S any/0 137:139 -W eth0  
ipfwadm -O -P tcp -a deny -S any/0 137:139 -W eth0  
ipfwadm -O -P udp -a deny -S any/0 137:139 -W eth0  

Это запретит (deny) все
входящие и исходящие TCP- и UDP-пакеты для
портов 137-139 на интерфейсе eth0. Для получения
более подробной информации рекомендуем
почитать man ipfwadm.

При наличии ядер 2.1-2.2
вы сможете сделать это с помощью ipchains:

# Добавляем нижеприведенные записи в /etc/rc.local:   
ipchains -A input -p tcp -j DENY --destination-port 137:139 -i eth0  
ipchains -A input -p udp -j DENY --destination-port 137:139 -i eth0  
ipchains -A output -p tcp -j DENY --destination-port 137:139 -i eth0  
ipchains -A output -p udp -j DENY --destination-port 137:139 -i eth0  

Как видите, здесь нет
ничего нового и сложного. Как ipfwadm, так и
ipchains выполняют одинаковые функции, 
только для разных версий ядер.

Однако если вам не
нравится редактировать конфигурационные
файлы вручную и на вашем Linux-сервере установлен графический
интерфейс, то вы можете упростить настройку
smb.conf,
воспользовавшись Samba Web Administration Tool (SWAT).

Используем SWAT

Для использования SWAT
проверим два конфигурационных файла: services (/etc/services)
и inetd.conf (/etc/inetd.conf).

По умолчанию SWAT
запускается с 901-го порта, но при желании это
можно изменить. Итак, проверяем
вышеуказанные конфигурационные файлы:

>/etc/service  
swat 901/tcp                 # в данном случае SWAT-service  используется через inetd  

Если эта строка
присутствует в /etc/service, то все нормально.
Если строки нет, добавьте ее в конец файла.
Данная строка говорит нам о том, что SWAT
запускается на 901-м порте.

Теперь в файл inetd.conf (/etc/inetd.conf)
добавляем следующую строку:

swat                stream           tcp                nowait.400                     root                /usr/sbin/swat swat  

Затем перезапустим inetd:

# killall -HUP inetd  

Далее в браузере
набираем:

http://192.168.0.1:901  

В случае если все
настроено правильно, вы увидите форму, в
которой нужно ввести имя пользователя (username)
и пароль (password). Здесь введите имя и пароль
пользователя «root».

Итак, SWAT запущен.
Теперь можно ознакомиться с его работой.
Как вы видите, SWAT — это программа с
прекрасным интерфейсом, которая создает
конфигурационный файл /etc/smb.conf.

Детальная настройка

Файловый сервер под Linux

Как показано выше, 
организация доступа к дискам Linux для
пользователей Windows с помощью файла smb.conf
является довольно простым делом. Однако Samba
позволит вам в большой степени
контролировать этот процесс. Приведем
несколько примеров.

Для
организации доступа для всех добавьте в smb.conf
следующие строчки:

[public]  
   comment = Public Stuff  
   path = /home/public  
   public = yes  
   writable = yes  
   printable = no  

Вы получили
возможность запустить Samba
и просмотреть доступные ресурсы с
компьютера под управлением Windows. Однако все может оказаться не
так-то просто. Начиная с Windows NT 4 в
операционных системах Microsoft, в том числе и в
среде Windows 98 (начиная с NT
Service
Pack 3),
происходит передача закодированных
паролей по сети.  Вы
непременно столкнетесь с этой проблемой,
если версия пакета Samba, установленная на
вашем UNIX/Linux-сервере, ниже 2.0.5а и не
поддерживает закодированные пароли.

В случае несоответствия
типов паролей между клиентом и сервером при
попытках подключиться к ресурсу в окне
диалога будет указано примерно следующее: «You
are not authorized to access that account
from
this
machine».

Подобную проблему
можно решить двумя путями. Во-первых, можно
настроить Samba-сервер для использования
шифрованных паролей.  Во-вторых,
заставить Windows работать с нешифрованными
паролями SMB. Если это Windows
98, то последовательность ваших действий
должна быть такова: используя редактор registry
(regedit), создайте ключ registry:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP  

Добавьте значение
типа DWORD:

Имя значения: EnablePlainTextPassword
Данные: 0x01.

Для Windows NT
эта же последовательность действий
выглядит так:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rdr\Parameters  

Добавьте значение
типа DWORD:

Имя значения: EnablePlainTextPassword
Значение: 0x01.

После того как вы
сделали эти изменения, перезагрузите
машину с Windows
и попытайтесь подключить сетевой диск к
серверу Samba.
Это должно работать, поскольку сервер Samba
использует пароли в нешифрованном виде.

Однако следует иметь в
виду, что передача по сети незашифрованных
паролей всегда наносит ощутимый удар по
системе безопасности, поэтому, если есть
возможность, лучше настроить Sambа
для использования шифрованных паролей. Для
этого в раздел [global] файла /etc/smb.conf добавьте
следующие строки:

encrypt passwords = yes  
smb passwd file = /etc/smbpasswd  

При использовании
вашими клиентами и вашим сервером
шифрованных паролей вы не сможете
просмотреть списки доступных ресурсов до
тех пор, пока начальное соединение не будет
сделано с правильными параметрами входа.
Для того чтобы сделать первоначальное
соединение, в диалоговом окне Windows File Manager
или Explorer введите вручную имя ресурса в
форме \\hostname\sharename.
Подключитесь к серверу посредством
правильных для данного сервера имени и
пароля.

Если вы подозреваете,
что ваш сервис имен NetBIOS неправильно
настроен (возможно, потому, что вы получаете
сообщение об ошибке «host not found (машина не
найдена)» при попытке подключения),
попытайтесь использовать IP-адрес сервера: \\host ip address\sharename.

Если вы хотите видеть Samba-директорию
в качестве сетевого диска, то вам следует
сделать на Windows-машинах следующие настройки.

Сначала удостоверимся, что свойства сети настроены так, как нам надо. Для этого
заходим в свойства сети (щелкаем правой клавишей мыши на значке рабочего стола
«Сетевое окружение» (Network Neighborhood) и выбираем «Свойства»). Далее заходим
на закладку «Компьютер» (Identification). В поле «Имя компьютера»
(Computer name) прописываем Galka, в закладке «Рабочая группа» (Workgroup)
— PTO, а в закладке «Описание компьютера» (Computer Description) можете прописать
что угодно (рис. 3).

Дальше переходите на
закладку «Управление доступом» (Access Control) и
поставьте флажок в поле «На уровне ресурсов»
(Share-level access control).

Теперь переходите в
самую первую закладку «Конфигурация» (Configuration)
и нажмите на кнопке «Доступ к файлам и
принтерам» (File and print sharing). В появившемся
окне необходимо поставить флажки в поле «Файлы
этого компьютера можно сделать общими» (I want
to be able to give others access to my files) и «Принтеры этого
компьютера можно сделать общими» (I want to be able
to allow others to print to my printer(s)).

И наконец, мы указываем Windows, что Samba является сервером WINS и именно
он будет browse master’ом. Для этого переходим в свойства TCP/IP-протокола (рис.
4). В появившемся окне выбираем «Конфигурация WINS» (WINS Configuration).
Ставим флажок в поле «Включить распознавание WINS» (Enable WINS Resolution).
В появившемся поле «Основной сервер WINS» (WINS Server Search Order) прописываем
IP-адрес сервера (Samba) — 192.168.0.1 и нажимаем «Добавить» (Add) или просто
[Enter]. Переходим на закладку «Дополнительно» (Advanced) и нажимаем на «Browse
Master» в левом окне, а в правом устанавливаем значение «Disabled». Вот и все.
Теперь остается только несколько раз нажать кнопку «ОК» и перезагрузить Windows.

В Windows NT экраны свойств
сети немного
различаются (показаны на рисунках), но
главная концепция построения остается той
же.

После перезагрузки
Windows смело жмите на «Сетевое окружение» (Network
Neighborhood) и вы сможете увидеть Samba-сервер,
а также свою домашнюю директорию на Linux-сервере.
Теперь вы можете просто подключить данные
ресурсы как сетевые диски и присвоить им drive
letters.

Немного усложним
конфигурацию:
сделаем директорию /home/public
доступной для чтения всеми, но разрешим
помещать в нее информацию только людям из
группы ADMINS.
Для этого изменим запись следующим образом:

[public]  
   comment = Public Stuff  
   path = /home/public  
   public = yes  
   writable = yes  
   printable = no  
   write list = @ADMINS  

Можно привести еще
много разных примеров настроек файлового
сервера Samba,
но будет лучше, если вы заглянете в
документацию Samba
или в справочные страницы и разберете их
самостоятельно.

Доступ к дискам Windows из Linux

Вряд ли начинающие
пользователи Linux OS смогут быстро
разобраться с системой доступа к Linux-файлам
из-под Windows, и наоборот. Но не все так сложно.
Доступ к Linux-ресурсам из под Windows был кратко
описан выше, а доступ к Windows-ресурсам из под
Linux мы сейчас рассмотрим.

Программа клиента SMB
для UNIX/Linux-машин включена в дистрибутив Samba.
Она обеспечивает ftp-подобный
интерфейс командной строки. Вы можете
использовать эту утилиту для переноса
файлов между «сервером» под управлением Windows
и клиентом под Linux.

Для того чтобы увидеть,
какие ресурсы доступны на данной машине,
выполните команду:

/usr/sbin/smbclient -L host  

где host — это имя
машины, которую вы хотите видеть. Эта
команда вернет список имен сервисов — то
есть имен дисков или принтеров, к
которым может быть получен доступ. До тех
пор пока SMB-сервер не будет настроен без
управления доступом, он будет запрашивать у
вас пароль. Введите в ответ на запрос пароль
для пользователя «гость (guest)» или ваш
персональный пароль на этой машине.

Для использования
клиента выполните следующую команду:

/usr/sbin/smbclient service <password>  

где service — имя машины и сервиса.
Например, если вы пытаетесь обратиться к
директории, которая доступна под именем public
на машине, названной galka,
то имя сервиса должно звучать как \\galka\public.

Вы получите
приглашение smbclient:

Server time is Wen May 22 15:58:44 2001  
Timezone is UTC+10.0  
Domain=[WORKGROUP] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0]  
smb: \>  

Команды для
использования Samba
аналогичны командам ftp,
но если вы не умеете пользоваться ни тем ни
другим, напечатайте h, чтобы получить помощь.

Вы, конечно, можете
использовать smbclient для тестирования, однако
очень скоро вам это надоест. Для работы вам
вероятнее всего понадобится пакет smbfs. Smbfs
поставляется с двумя простыми утилитами —
smbmount и smbumount. Они работают подобно mount и umount
для SMB-ресурсов. Например,

smbmount//computer_name/catalog/Mountpoint -U user_name 

В итоге вы получите «подмонтированный»
ресурс с возможностью обращения к нему
привычными методами проводника.

Принт-сервер под Linux

Для организации
доступа к Linux-принтеру
с Windows-машин вам необходимо убедиться, что
принтер работает под Linux. Если вы можете
печатать под Linux, то организация доступа к
принтеру будет очень проста.

Добавьте настройку
принтера в ваш файл smb.conf:

[global]  
   printing = bsd  
   printcap name = /etc/printcap  
   load printers = yes  
   log file = /var/log/samba-log.%m  
   lock directory = /var/lock/samba  
[print]  
   comment = All Printers  
   security = server  
   path = /var/spool/lpd/lp  
   browseable = no  
   printable = yes  
   public = yes  
   writable = no  
   create mode = 0700  
[ljet]  
   security = server  
   path = /var/spool/lpd/lp  
   printer name = lp  
   writable = yes  
   public = yes  
   printable = yes  
   print command = lpr -r -h -P %p %s  

Убедитесь, что путь к
принтеру (в нашем случае для [ljet])
соответствует буферной директории,
указанной в файле /etc/printcap, то есть проверьте наличие
строк:

printcap name = /etc/printcap  
load printers = yes  

Эти строки
контролируют, должны ли все принтеры,
перечисленные в /etc/printcap, быть загружены по
умолчанию. В этом случае нет нужды в
настройке каждого принтера в отдельности.
Раздел [printers] указывает настройки для
принтеров, которые вы хотите определить
явно. Если используемая вами подсистема
печати не работает подобным образом (BSD), то
вам необходимо настроить фальшивый файл
printcap (либо использовать ‘print command’, см. ниже).
Для получения дополнительной информации о
системе printcap см. Printing-HOWTO.

Доступ к принтеру Windows с машин, работающих под Linux

Для доступа к принтеру
на Windows-машине необходимо соблюдение
следующих условий:

  1. Вам необходимо иметь в файле
    /etc/printcap правильные записи, которые должны
    соответствовать локальной структуре
    директорий (для буферной директории и т.п.)

  2. У вас должен быть скрипт /usr/bin/smbprint.
    Он поставляется вместе с исходными
    текстами Samba, но не со всеми двоичными
    дистрибутивами Samba.

  3. Если вы хотите
    преобразовывать ASCII-файлы в PostScript,
    вы должны иметь программу nenscript или ее
    эквивалент. Программа nenscript —
    это конвертор PostScript,
    который
    обычно устанавливается в директорию /usr/bin.

Запись в приведенном
ниже файле /etc/printcap
сделана для принтера HP 5MP на сервере Windows NT.
Используются следующие поля файла /etc/printcap:

        cm — комментарий;  
        lp — имя устройства, открываемого для вывода;  
        sd — директория спула принтера (на локальной машине);  
        af — файл учета пользования принтером;  
        mx — максимальный размер файла (ноль — без ограничений);  
        if — имя входного фильтра (скрипта).  

Фрагмент
файла /etc/printcap:

# /etc/printcap
#
# //galka/oreilly via smbprint
#
lp:\
        :cm=HP 5MP Postscript OReilly on galka:\
        :lp=/dev/lp1:\
        :sd=/var/spool/lpd/lp:\
        :af=/var/spool/lpd/lp/acct:\
        :mx#0:\
        :if=/usr/bin/smbprint:

Убедитесь, что
буферные директории и директория,
применяемая для учета пользования,
существуют и имеют право на запись.
Убедитесь, что строка «if» содержит
правильный путь к скрипту smbprint (дан
ниже) и что записи указывают на правильное
устройство вывода (специальный файл /dev).

Далее идет сам скрипт smbprint. Он
обычно находится в директории /usr/bin и
написан Andrew Tridgell.

#!/bin/sh –x
#
# Debugging log file, change to /dev/null if you like.
#
logfile=/tmp/smb-print.log
# logfile=/dev/null
#
# The last parameter to the filter is the accounting file name.
#
spool_dir=/var/spool/lpd/lp
config_file=$spool_dir/.config
# Should read the following variables set in the config file:
#   server
#   service
#   password
#   user
eval `cat $config_file`
#
# Some debugging help, change the >> to > if you want to same space.
#
echo "server $server, service $service" >> $logfile
(
# NOTE You may wish to add the line `echo translate' if you want automatic
# CR/LF translation when printing.
        echo translate
        echo "print -"
        cat
) 
| /usr/bin/smbclient "\\\\$server\\$service" $password -U $user -N -P >> $logfile

Большинство
дистрибутивов Linux поставляется с
программой nenscript
для преобразования ASCII-документов в PostScript.

Заключение

Еще совсем недавно
возможности Samba ограничивались лишь
перечисленными выше. Однако можно с
уверенностью говорить о том, что новая
версия Samba 2.2 догоняет Windows 2000 по
функциональным возможностям и содержит
дополнительные усовершенствования. Один из
ведущих разработчиков Samba Джереми Эллисон
(Jeremy Allison) называет ее «важным обновлением»,
которое поможет системам Samba легче
внедряться в сети Microsoft. ПО обеспечивает
экономию не только потому, что не нужно
платить за серверную ОС, но и потому, что не
приходится оплачивать «клиентские»
лицензии за все компьютеры, которые
используют сервер.

О новых возможностях
Samba 2.2. читайте в нашей статье «Samba
2.2 — что
нового» .

КомпьютерПресс 10’2001

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Программа для скриншотов с экрана windows 10 lightshot
  • Как сделать windows hello
  • Что означает windows 10 pro clean
  • Цифровой выход не подключено windows 10
  • Allusersprofile desktop windows 10