В данной статье речь пойдет о создании беспроводной локальной сети для устройств под управлением различных операционных систем Windows, Linux, Android с помощью Samba.
В наше время практически в каждой квартире есть сеть Wi-Fi, а также имеется большое количество разнообразных устройств (ноутбуки, смартфоны, планшеты, Android TV Box). В связи с этим рано или поздно назревает необходимость объединить все доступные для использования устройства в одну домашнюю сеть, чтобы беспрепятственно получить доступ к всевозможным файлам с любого гаджета.
Собственно об этом и пойдет речь в настоящем опусе. Итак, приступим.
Для сетестроительства воспользуемся готовым решением под названием Samba. Это пакет бесплатных программ с открытым исходным кодом, позволяющих подключаться к сетевым дискам, принтерам и прочему оборудованию на различных операциионных системах по собственному протоколу SMB/CIFS.
Программное обеспечение состоит из двух частей - серверной и клиентской. На одно из устройств, которое по определению будет главным, установим Samba server, на все остальные Samba клиент.
Установка серверной части Samba
В своем случае для серверного устройства я выбрал ноутбук, на котором паралельно установлены Windows 7 и Ubuntu Mate 16.04. Ниже подробно рассмотрим процесс установки и настройки Samba для обеих операционных систем.
Настройка samba server под Linux
По умолчанию в Ubuntu - Samba не установлена, поэтому прежде чем двигаться дальше, необходимо это сделать. Как вариант, чтобы не редактировать впоследствии конфигурационный файл Samba через терминал, установим программу Gadmin-Samba, включающую в себя помимо серверных пакетов Samba и графический интерфейс.
Для установки набираем в терминале:
Sudo apt install gadmin-samba
По окончанию установки запускаем Gadmin Samba. Интерфейс приложения не руссифицирован, но разобраться в настройках достаточно просто.
Настроек в программе много, но по большему счету, в нашем случае нас интересует вкладка "users". Переходим в нее и добавляем нового пользователя.
Нажимаем кнопку "New user", в обновившемся окне вводим имя пользователя, придумываем пароль, добавляем в группу (чтобы "не выдумывать велосипед", указываем существующую, а именно "sambausers") и устанавливаем домашнюю директорию для файлов. После этого жмем "Apply".
HD Videobox - новый пользователь
Для применения изменений перезапускаем сервер, кнопка "deactivate" и "activate", соответственно, расположенные в верхнем левом углу окна приложения.
Не забываем, также, установить права доступа на "расшаренные" для совместного доступа папки. Это можно сделать, как через терминал, так и через графический интерфейс проводника файлов наутилус.
Nautilus - изменение прав доступа
Nautilus - разрешение на запись файлов
Настройка samba server под Windows
В случае с Windows все гораздо прозаичней, так как Samba используется в данной операционной системе по умолчанию.
В принципе можно воспользоваться существующей учетной записью или же включить гостевой доступ. Как вариант можно создать еще одну учетную запись, данные которой будут использоваться для сетевого доступа
Для создания новой учетной записи необходимо зайти в "панель управления", выбрать пункт "управление учетных записей пользователей" и создать новый аккаунт с паролем.
Добавление новой учетной записи
При создании нового пользователя необходимо будет выбрать тип учетной записи, придумать имя и пароль.
На последнем этапе необходимо будет установить права для просмотра изменения "расшаренных" папок. Сделать это можно в стандартном проводнике Windows через пункт контекстного меню "свойства", применительно к нужной вам папке.
"Расшаривание" папки
Добавление пользователя и изменение прав папки
После процедуры создания нового пользователя обязательно сделать перевход для текущего сеанса, чтобы изменения вступили в силу.
Установка клиентской части Samba на Android
Для доступа к серверу Samba и, соответственно сетевым дискам, на устройствах под управлением Android рекомендую использовать приложение Root Explorer (ссылка на скачивание полной версии без рекламы в конце статьи).
Samba - программа, которая позволяет обращаться к сетевым дискам на различных операционных системах по протоколу SMB/CIFS. Имеет клиентскую и серверную части. Является свободным программным обеспечением, выпущена под лицензией GPL .Samba работает на большинстве Unix-подобных систем, таких как GNU/Linux, POSIX-совместимых Solaris и Mac OS X Server, на различных вариантах BSD, в OS /2, Windows. Samba включена практически во все дистрибутивы GNU/Linux, в том числе, конечно, и в Ubuntu .
Установка
Чтобы сделать общую папку в Ubuntu Desktop достаточно щёлкнуть правой кнопкой мыши на папке и выбрать пункт меню «Опубликовать папку». Никаких конфигурационных файлов при этом править не надо. Всё описанное ниже относится только к ручной настройке, например, в случае создания файлового сервера.
Для установки достаточно открыть терминал и ввести:
Sudo apt-get install samba
Приложение будет автоматически загружено и установлено.
Настройка
При помощи терминала сделаем резервную копию начального файла конфигурации:
Sudo cp /etc/samba/smb.conf{,.bak}
Теперь можно отредактировать файл настроек /etc/samba/smb.conf, для этого откройте его в любом текстовом редакторе с правами суперпользователя. Например, так:
Sudo nano /etc/samba/smb.conf
Написанное далее вообще говоря всего лишь один конкретный сценарий использования Samba, и в огромном количестве случаев всё настраивается абсолютно не так. Статью необходимо исправить, сделав акцент на возможностях Samba, а не только на применении этой программы в качестве файлохранилища с локальной авторизацией. Пример же с файлохранилищем лучше вынести в отдельную подробную статью.
Пример настройки Samba в качестве автономного файлового сервера с авторизацией:
; Глобальные настройки сервера ; General server settings ; Имя компьютера, которое будет отображаться в сетевом окружении netbios name = main-server server string = ; Рабочая группа клиентов workgroup = WORKGROUP announce version = 5.0 socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192 passdb backend = tdbsam security = user null passwords = true ; Файл для альясов имен юзеров username map = /etc/samba/smbusers name resolve order = hosts wins bcast ; wins support устанавливается в yes, если ваш nmbd(8) в Самба является WINS сервером. Не устанавливайте этот параметр в yes если у вас нет нескольких подсетей и вы не хотите чтобы ваш nmbd работал как WINS сервер. Никогда не устанавливайте этот параметр в yes более чем на одной машине в пределах одной подсети. wins support = no ; Поддержка принтеров printing = CUPS printcap name = CUPS ; Логи log file = /var/log/samba/log.%m syslog = 0 syslog only = no ; Настройка привязки к интерфейсам, на каких слушать, если не указано слушает на все интерфейсах; interfaces = lo, eth0 ; bind interfaces only = true ; ; ; path = /var/lib/samba/printers ; browseable = yes ; guest ok = yes ; read only = yes ; write list = root ; create mask = 0664 ; directory mask = 0775 ; ; ; path = /tmp ; printable = yes ; guest ok = yes ; browseable = no ; ; ;path = /media/cdrom ;browseable = yes ;read only = yes ;guest ok = yes ; Шара жесткого диска; Имя шары, видно у клиентов ; Путь к расшариваемому диску path = /media/sda1 ; Можно ли просматривать browseable = yes read only = no guest ok = no create mask = 0644 directory mask = 0755 ; Привязка к определенному имени пользователя или группе, имена через пробел; force user = user1 user2 ; force group = group1 group2 ; Еще один жесткий диск, по аналогии с тем что выше path = /media/sde1 browseable = yes read only = no guest ok = no create mask = 0644 directory mask = 0755
Теперь надо разобраться с пользователями.
Samba использует пользователей которые уже есть в системе, возьмем для примера имя user, допустим что он уже есть в системе, надо внести его в базу данных SMB и назначить пароль для доступа к общим ресурсам, сделаем это командой:
Smbpasswd -a user
Вам будет предложено ввести пароль, пользователь будет добавлен в базу, теперь необходимо включить этого пользователя.
Smbpasswd -e user
Далее создадим псевдоним для имени пользователя user что бы облегчить себе доступ с Windows машины на которой у нас например пользователь с именем Admin, для этого создадим и отредактируем файл /etc/samba/smbusers:
Sudo touch /etc/samba/smbusers sudo gedit /etc/samba/smbusers
Впишите в файл пару строк
# Unix_name = SMB_name1 SMB_name2 user = Admin
На этом настройка закончена, перезапустите Samba.
Установить самый простой GUI для Samba можно командой:
Sudo apt-get install system-config-samba
Запускается он командой:
Sudo system-config-samba
Все изменения он записывает в конфигурационный файл samba.
Для удалённого администрирования Samba в качестве web-интерфейса для Samba отлично подойдёт
Основной файл настройки Samba - /etc/samba/smb.conf. Изначальный файл конфигурации имеет значительное количество комментариев для документирования различных директив настройки.
Не все возможные опции включены в файле настроек по умолчанию. Смотрите руководство man smb.conf или Сборник ЧаВо по Samba для уточнения деталей.
1. Сначала измените следующие пары ключ/значение в секции файла /etc/samba/smb.conf:
Workgroup = EXAMPLE ... security = user
Параметр security находится значительно ниже в секции и по умолчанию закомментирован. Также замените EXAMPLE на что-то более соответствующее вашему окружению.
2. Создайте новую секцию в конце файла или раскомментируйте один из примеров для каталога, который нужно настроить на общий доступ:
Comment = Ubuntu File Server Share path = /srv/samba/share browsable = yes guest ok = yes read only = no create mask = 0755
comment : короткое описание разделяемого ресурса. Используется для вашего удобства.
path : путь до разделяемого каталога.
Этот пример использует /srv/samba/sharename поскольку, в соответствии со стандартом иерархии файловых систем (FHS), каталог /srv - это место, где должны находится все данные, относящиеся к данному сайту. Технически разделяемый ресурс Samba может быть размещен в любом месте файловой системы, где позволяют файловые ограничения доступа, но следование стандартам рекомендуется.
browsable : позволяет клиентам Windows просматривать содержимое разделяемого каталога с помощью проводника Windows.
guest ok : позволяет клиентам подключаться к разделяемому ресурсу без указания пароля.
read only : определяет доступность ресурса только на чтение или с привилегиями на запись. Привилегии на запись доступны только при указании no , как показано в данном примере. Если значение yes , то доступ к ресурсу будет только на чтение.
create mask : определяет какие права доступа будут установлены для создаваемых новых файлов.
3. Теперь, поскольку Samba настроена, требуется создать каталог и установить на него права доступа. Введите в терминале:
Sudo mkdir -p /srv/samba/share sudo chown nobody.nogroup /srv/samba/share/
параметр -p говорит mkdir создать полное дерево каталога, если оно не существует.
4. Наконец, перезапустите сервисы samba для применения новых настроек:
Sudo restart smbd sudo restart nmbd
Теперь вы можете находить Ubuntu файл сервер с помощью клиента Windows и просматривать его разделяемые каталоги. Если ваш клиент не показывает ваши разделяемые ресурсы автоматически, попробуйте обратиться к вашему серверу по его IP адресу, например, \\192.168.1.1, из окна проводника Windows. Для проверки, что все работает, попробуйте создать каталог внутри вашего разделяемого ресурса из Windows.
Для создания дополнительных разделяемых ресурсов создайте новую секцию в /etc/samba/smb.conf и перезапустите Samba. Просто убедитесь, что разделяемый каталог создан и у него корректные права доступа.
Разделяемый ресурс "" и путь /srv/samba/share - это просто примеры. Установите название ресурса и имя каталога в соответствии с вашим окружением. Хорошей идеей является использование в качестве названия ресурса имени его каталога в файловой системе. Другими словами ресурс можно указать как для каталога /srv/samba/qa.
Иногда нужно очень быстро на сервере настроить файловую шару и открыть на нее доступ. При этом нет необходимости городить какие-то сложные конфигурации, права доступа или что-то еще. Нужен просто оперативный доступ к информации без лишних вопросов.
Мне, к примеру, недавно подобное понадобилось, чтобы открыть доступ к резервным копиям, которые хранились на сервере. Самому разбираться и искать информацию не хотелось, нужно было быстро дать человеку доступ на чтение, чтобы он сам нашел все, что ему нужно.
Я не буду специально оперировать версиями операционных систем. У самбы конфиги одинаковые почти везде, где мне приходилось с ними работать, тем более в самых простых конфигурациях.
Итак, устанавливаем самбу любым подходящим способом для вашей операционной системы. Конфигурации справедливы для 3-й версии самбы. Дальше решаем, что нам нужно:
- доступ по пользователю и паролю,
- доступ по ip адресу,
- доступ всем подряд без ограничений.
В зависимости от этого настройки будут немного разные.
Для доступа по паролю рисуем такой конфиг:
Security = user passdb backend = tdbsam workgroup = MYGROUP server string = Samba path = /mnt/shara valid users = @users force group = users create mask = 0660 directory mask = 0771 writable = yes browseable = yes
# useradd share-user -M -G users -s /sbin/nologin
Импортируем этого пользователя в самбу и задаем пароль:
# smbpasswd -a share-user
И пробуем зайти на шару по адресу:
\\ip-сервера\share
Чтоб организовать доступ в зависимости от ip адреса , делаем такие настройки в smb.conf:
Security = share workgroup = MYGROUP server string = Samba map to guest = bad user path = /mnt/files browsable = yes writable = yes guest ok = yes read only = no hosts allow = 192.168.0.171
В данном случае полный доступ будет у адреса 192.168.0.171. Чтобы добавить всю подсеть, то указать нужно следующее:
Hosts allow = 192.168.0.
Комбинировать можно разные подсети и адреса, разделяя их пробелами. Для того, чтобы отключить доступ каким-то отдельным адресам из разрешенной подсети, можно сделать вот так:
Hosts allow = 192.168.0. except 192.168.0.15
Доступ будет разрешен всей подсети 192.168.0.0/24, кроме адреса 192.168.0.15.
Делаем перезапуск самбы и проверяем.
Если у вас установлена samba 4, то эта конфигурация не заработает и вы получите ошибку:
WARNING: Ignoring invalid value "share" for parameter "security"
Чтобы доступ по ip нормально заработал, вам необходимо внести следующие изменения в приведенный выше конфиг:
Security = user map to guest = Bad Password
Остальные параметры оставляете те же. После этого доступ по ip будет работать и на 4-й версии самбы.
Если доступ будет предоставлен всем без ограничений , то простейшая конфигурация самбы будет такой:
Security = user workgroup = MYGROUP server string = Samba guest account = nobody map to guest = Bad User path = /mnt/files browseable = Yes guest ok = Yes writeable = Yes public = yes
Не забываем сделать права для всех на папку:
# chmod 0777 /mnt/files
Перезапускаем самбу и пробуем зайти. Должно пустить без лишних вопросов.
Вот так буквально за 5 минут можно организовать простейший файловый сервер с помощью samba. А часто сложнее и не надо. Для какой-нибудь файловой помойки подойдет самый последний вариант.
Для более сложных конфигураций у меня есть отдельные статьи:
Онлайн курс по Linux
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Что даст вам этот курс:- Знание архитектуры Linux.
- Освоение современных методов и инструментов анализа и обработки данных.
- Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
- Владение основными рабочими инструментами системного администратора.
- Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
- Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.