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:
-
На сервере, с которого вы хотите подключиться к серверу Samba, откройте проводник Windows и выберите «Этот компьютер».
-
Нажмите «Сеть» в левой панели, чтобы открыть доступные сетевые ресурсы.
-
Найдите сервер Samba в списке и дважды щелкните на нем, чтобы открыть доступные разделяемые папки.
-
Выберите нужную папку и нажмите «Подключиться», чтобы подключиться к серверу Samba.
-
Введите имя пользователя и пароль для доступа к папке, если это необходимо.
-
После успешного подключения вы сможете просматривать и работать с файлами в разделяемой папке на сервере 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.
Настройка общих папок
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 кликаем по кнопке “Общий доступ”.
В открывшемся окне добавляем пользователя “Все”, а также делегируем права на “Чтение и запись”. Кликаем по кнопке “Поделиться”.
В обновленном окне нажимаем “Готово”.
Настроим папку общего доступа, но для ограниченного круга лиц.
Кликаем правой кнопкой мыши по папке, выбираем “Свойства”.
В открывшемся окне переходим на вкладку “Доступ”. Кликаем по кнопке “Расширенные настройки”.
В новом открывшемся окне, устанавливаем галку “Открыть общий доступ к этой папке”. Затем кликаем по кнопке “Разрешения”.
В открывшемся окне, в поле “Группы или пользователи” выбираем “Все” и нажимаем кнопку “Удалить”.
Таким образом установлен запрет на анонимный доступ к папке.
Окно обновится. Кликаем по кнопке “Добавить”.
В открывшемся окне кликаем по кнопке “Дополнительно”.
Окно изменится в размере. Кликаем по кнопке “Поиск”. Двойным кликом выбираем пользователя, которому необходим доступ к этому каталогу, например, 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, а поле пароля оставляем пустым.
При подключении к 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.
Получилось что-то вроде мини-датацентра у меня дома — он хранит файлы на жёстком диске с бэкапом в облаке, 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 выдает всю информацию о железкеОн пылился на полке, но всё ещё был в рабочем состоянии. Пусть слабенький i5 и всего 12 ГБ оперативки — зато свой собственный, выделенный 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 — за вдохновением — туда 😜).
В итоге найдено такое решение.
-
Создайте файл с командой запуска XFCE при RDP-сессии. Проще всего положить команду в
~/.xsession
для конкретного пользователя. Она укажет xRDP запускать сессию XFCE (xfce4-session) при логине.echo "xfce4-session" > ~/.xsession
-
Отключите переменные окружения, которые мешают запуску. Откройте файл /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.
-
Перезагрузите 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 настраивается элементарно.
-
Установите 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.
-
Перезапустите сервер Samba
sudo systemctl restart smbd
Теперь мой виден в локальной сети. На Windows достаточно открыть проводник и ввести
\\192.168.1.100\PublicShare
— общая папка открывается, можно читать/писать. Никаких флешек и Telegram-файлов, всё по Wi-Fi напрямую на сервер. Роднулькины довольны, да и админу сервера удобно файлы перекидывать между устройствами. -
Дополнительно, чтобы важные данные не хранились только на этом стареньком HDD, настройте резервное копирование в облачное хранилище, например, Я.Диск. Для этого используйте утилиту Yandex.Disk для Linux (она есть в репозиториях) под учёткой своего аккаунта. Смонтируйте Я.Диск в систему и настройте
cron
задачу, которая раз в ночь синхронизирует содержимое общей папки с облаком. Теперь даже если диск ноутбука накроется, копия файлов будет в облаке. Вы спите спокойно и домашний бухгалтер (в лице кого угодно близкого) — тоже.Крутятся Docker-контейнеры — JupyterLab с Anaconda, несколько Python и PostgreSQL
Конечно, главный смысл всего этого затеянного сервера – запускать рабочие окружения – например, Docker-контейнеры с JupyterLab, где крутятся Python-проекты.
-
Установите Docker CE из стандартного репозитория Ubuntu (на самом деле, можно было и snap-версию, но эта статья скорее для консерваторов).
sudo apt install -y
docker.io
docker-compose sudo usermod -aG docker $USER # чтобы не требовался sudo для docker
После команды стоит перелогиниться или выполнить
newgrp docker
, чтобы права применились. -
Docker на Ubuntu стартует как служба. Убедитесь что он запущен.
sudo systemctl status docker
(вывод должнен включать active (running)). -
Далее — дело техники. Стягивайте образы с 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.
-
Первая команда запустит Postgres 15, создаст пользователя
test
с паролемsecret
и откроет порт 5432 для доступа.docker run -d --name pg-db -e POSTGRES_USER=test -e POSTGRES_PASSWORD=secret -p 5432:5432 postgres:15
-
Чтобы 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) до сервера под разработку. Старичок-ноутбук, надеюсь, всё вытянет потихоньку.
Конечно, важно помнить об ограничениях — i5-5200U не станет мощнее просто и вдруг😅. Скорее всего, придётся докупить планку памяти – лишней не будет. А в крайнем случае более современную видеокарту можно будет подключить через Thunderbolt.
Выводы
В итоге получается забавная картина — там, где раньше уныло собирал пыль старый ноутбук, теперь бегает целый зоопарк сервисов. Так можно отказаться от WSL для тяжёлых задач на современном ноутбуке — лёгкой рабочей лошадке — и вынести всё на отдельную проверенную временем машину — и ни капли не пожалеть. Производительность основного ноутбука сохраняется для рабочих задач, а все эксперименты и разработки изолированы на сервере. Плюс, домашние файлы хранятся централизованно, доступны всем своим и бэкапятся в облако.
Самое приятное — это ощущение, что сделал маленький личный “облачный” сервер. Хочешь – разворачивай новую БД, хочешь – подними очередной контейнер с редисом или даже веб-приложение — на железке десятилетней давности.
Так что не спешите выбрасывать или продавать раритет — ему можно дать вторую жизнь в новом амплуа. Возможно, старый ноутбук тоже скучает по работе – превратите его в полезный домашний сервер, это увлекательно и практично. Ну а если по ходу дела встретите трудности – заглядывайте на форумы, читайте мануалы и never give up 👌
Введение
Что умеет 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 можно реализовать следующие наиболее распространенные:
- Давать доступ к дискам Linux Windows-машинам.
- Получать доступ к дискам Windows для машин под Linux.
- Давать доступ к принтерам Linux для Windows-машин.
- Получать доступ к принтерам 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-машине необходимо соблюдение
следующих условий:
- Вам необходимо иметь в файле
/etc/printcap правильные записи, которые должны
соответствовать локальной структуре
директорий (для буферной директории и т.п.) - У вас должен быть скрипт /usr/bin/smbprint.
Он поставляется вместе с исходными
текстами Samba, но не со всеми двоичными
дистрибутивами Samba. - Если вы хотите
преобразовывать 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
Tutorial: How to Install Samba on Windows 10
Samba is a free, open-source software suite that enables file and print sharing between Unix, Linux, and Windows systems. In this tutorial, we will show you how to install Samba on Windows 10.
Prerequisites
Before you start, make sure you have administrative access on your Windows 10 system.
Step 1: Download Samba
To download Samba, go to https://www.samba.org/ and click the Download link. Then, select the version of Samba that is compatible with your Windows 10 architecture (32-bit or 64-bit).
Step 2: Install Samba
- Double-click the Samba executable file that you downloaded in Step 1.
- In the Samba installation wizard, click Next to proceed.
- Accept the license agreement and click Next.
- Choose the destination folder where you want to install Samba and click Next.
- Choose the components that you want to install (we recommend selecting all components) and click Next.
- Configure the Samba Server settings (e.g., global workgroup, security mode, etc.) as per your requirements and click Next.
- Choose a password for the administrative account that you will use to manage the Samba server and click Next.
- Review the installation summary and click Next to start the installation process.
- After the installation is complete, click Finish to close the installer.
Step 3: Configure Samba
- Open the Samba configuration file (smb.conf) located in the installation directory.
- Edit the smb.conf file to configure the necessary settings (e.g., share directories, users and groups, etc.). You can refer to the Samba documentation for more information on configuring smb.conf.
- Save the changes to the smb.conf file.
Step 4: Start Samba
- Press the Windows key + R to open the Run dialog box.
- Type services.msc and click OK to open the Services Manager window.
- Find the Samba service (named «SMB» or «Samba») in the list of services.
- Right-click the Samba service and choose Start.
- Wait for a few seconds until the Samba service starts.
Step 5: Access Samba Shares
- Open the File Explorer on your Windows 10 system.
- In the address bar, type \localhost or \[your-computer-name] and press Enter.
- You will be prompted to enter your Samba username and password. Enter the credentials that you specified in Step 2.
- You should now see a list of shared directories on your Samba server. Double-click the directories to access their contents.
Congratulations! You have successfully installed and configured Samba on Windows 10.
If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!
Alternatively, for the best virtual desktop, try Shells!