Настройка samba

Полезные функции

Что делает их особенными?

Размещение собственного NAS требует большего, чем простая установка основного дистрибутива и отладка пары настроек

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

Это особенно важно, потому что дистрибутивы NAS не предлагают графического рабочего стола

В EasyNAS легко запланировать автоматическое резервное копирование добавленных томов. К сожалению, здесь нет некоторых расширенных функций — например, нельзя подключиться к серверу директорий. И хотя дистрибутив поддерживает много разных протоколов и сервисов, вы не можете настроить ни один из них. Однако пользователи могут запустить простой web-сервер, что позволяет рассматривать и скачивать файлы из web-браузера. Старейший и любимейший из дистрибутивов NAS, FreeNAS, легко расширяется плагинами. С малыми усилиями вы быстро настроите его для работы с потоковым вещанием медиа или облачными сервисами резервного копирования. Вы можете использовать его встроенный Update Manager для применения системных заплаток и новых функций. Одна из уникальных функций FreeNAS — скрипт autotune, автоматически оптимизирующий систему в зависимости от наличного оборудования. Например, если том ZFS существует в системе с ограниченным ОЗУ, скрипт autotune автоматически подстроит некоторые значения ZFS sysctl в попытке минимизировать проблемы с памятью ZFS. Когда скрипт autotune изменяет настройки, измененные показатели отображаются в System -> Tunables . Вы также можете запланировать обычные задачи с помощью заданий cron. В качестве дополнительной функции безопасности FreeNAS также поддерживает rsync через соединение SSH. В OpenMediaVault можно распределять квоты диска отдельным пользователям, ограничивая место, на которое пользователи могут претендовать. Вы также можете определить права доступа каждого пользователя для каждой папки с общим доступом. Как и с FreeNAS, обычные задачи поддержки системы, такие как установка обновлений, можно выполнять из web-интерфейса. OpenMediaVault предоставляет почти все функции FreeNAS и другие, но через плагины. Благодаря файловой системе Btrfs, в Rockstor вы можете создавать Snapshots и даже это планировать, что достигается с помощью заданий cron. Это обеспечит безопасность ваших данных, и дистрибутив позволяет идентифицировать те ресурсы общего пользования, моментальные снимки которых вы хотите сделать. Поскольку моментальные снимки инкрементны, у вас должна быть хорошо продуманная политика управления ими, иначе у вас очень быстро закончится свободное место.

Fedora Server

Дистрибутив Fedora Server — специальная версия дистрибутива Fedora, предназначенная для серверов. Также есть редакция Fedora Atomic, которая ориентирована на облачные вычисления.

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

Fedora Server (с версии 28) поставляется с системой Fedora Modularity, которая призвана решить проблемы зависимостей жизненных циклов приложений друг от друга и от версии самой операционной системы.

Особенности:

  • Поддерживается сообществом.
  • Нацеленность на серверное использование.
  • Модульный репозиторий — система Fedora Modularity.
  • Широкое применение на серверах.

Подключение к серверу

Настройка Avahi

Avahi нужен для того чтобы заработало подключение к хосту по имени (этот шаг можно пропустить и в дальнейшем подключаться по IP).

$ yay -S avahi nss-mdns

Так же нужно отредактировать , строчку , добавив до :

Запускаем Avahi демона:

$ sudo systemctl enable --now avahi-daemon

Проверяем:

$ ping -c 3 ubuntu-server.local
PING ubuntu-server.local(ubuntu-server.local (fe80::264b:feff:fe89:ed8f%wlan0)) 56 data bytes
64 bytes from ubuntu-server.local (fe80::264b:feff:fe89:ed8f%wlan0): icmp_seq=1 ttl=64 time=91.8 ms
64 bytes from ubuntu-server.local (fe80::264b:feff:fe89:ed8f%wlan0): icmp_seq=2 ttl=64 time=4.73 ms
64 bytes from ubuntu-server.local (fe80::264b:feff:fe89:ed8f%wlan0): icmp_seq=3 ttl=64 time=1.60 ms

--- ubuntu-server.local ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 1.601/32.701/91.771/41.787 ms

Подлючение по SSH

Генерируем пару RSA-ключей для подключения по SSH (если требуется):

$ ssh-keygen

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

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

Подкоючаемся к серверу:

$ ssh [email protected]

Расширения

Хотите гарнир из плагинов к основному блюду?

Вас расстраивает скудность функций по умолчанию в дистрибутивах из нашего списка? Порадуем вас: об этом волноваться не стоит. За исключением EasyNAS, все дистрибутивы NAS предлагают широкий выбор плагинов. Главное, что для установки этих плагинов вы можете использовать простой web-интерфейс; но будьте бдительны. В отличие от программ установки в настольных дистрибутивах, web-интерфейс не сообщит вам такой информации, как общий объем загрузки для любого плагина. И если вы решите превратить свою установку NAS в сервер потокового вещания медиа, не удивляйтесь, что загрузка сервера Emby займет немало времени.

FreeNAS поддерживает ряд сторонних плагинов, таких как Transmission для bittorrent, btsync для синхронизации, с большим количеством устройств без демонстрации ваших данных посторонним, и OwnCloud для размещения собственного сервера облачных сервисов. В порядке меры по укреплению безопасности все плагины во FreeNAS реализованы внутри собственных изоляторов. Список всех имеющихся плагинов вы найдете в официальной документации.

Обратитесь на официальные форумы NAS4Free за информацией и обсуждением функций поддерживаемых плагинов, именуемых расширениями, процесса установки, оптимальных практик и т.п. Одно из самых популярных расширений NAS4Free — OneButtonlnstaller (OBI), предназначенное служить централизованным менеджером расширений.

OpenMediaVault предлагает несколько официальных и сторонних плагинов. которые вы можете установить и включить в соответствии со своими потребностями и запросами. Список официально поддерживаемых плагинов помещен под System -> Plugins . На странице перечислено более 40 плагинов, разделенных на категории: как Administration , Backup , Downloaders . Filesystems . Network и т.д.

Разрешения Linux для доступа без пароля

Во-первых нужно установить полные права на папку Linux, которая будет
сетевой. Полные права доступа на папку в Linux это разрешение на исполнение
и запись для: владельца, группы и всех остальных. В Linux
широко используется цифровое сокращение для
обозначения прав доступа — полный доступ для папки это 777. Если такие права
не установить на папку, тогда сетевые пользователи либо не смогут войти в
эту папку, либо не смогут в ней создавать новые файлы или папки.

Установить разрешения на файл (папку) в Linux
можно через файловый менеджер
(через свойства папки) или в терминале, программой
chmod
.

Во-вторых.

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

В двух случаях:

  1. если локальный пользователь Linux войдет в
    эту папку через файловый менеджер и создаст в ней новый файл;
  2. если локальный пользователь Linux
    скопирует в эту папку файл из другой своей локальной папки.

В обоих случаях новый файл будет недоступен для редактирования сетевыми
пользователями. Почему это произойдет? Новый файл получит права доступа
Linux 644,
то есть полный доступ только для владельца файла. А если файл будет
скопирован из другой папки, то он сохранит свои права и после копирования.

Что делать для решения этой проблемы?

Есть разные способы решения. Кто-то советует периодически
(например по заданию cron) изменять права всем файлам в
папке на 666 (права полного доступ для всех без исключения). Это работает, но на мой взгляд не
вариант. Я считаю что такое присвоение прав должно происходит автоматически,
без лишних телодвижений.

Другие люди советуют включить ACL на файловой
системе Linux и затем указать
ACL по умолчанию для сетевой папки (со значением 777).

Это работает,
но только наполовину. Если локальный пользователь сам создаст новый файл,
этот файл получит атрибуты 666. Но если локальный пользователь скопирует
файл из другой папки, то файл сохранит свои старые атрибуты.

Однако есть два способа которые полностью решают проблему.

Первый способ, самый простой.

Локальному пользователю, нужно заходить в сетевую папку тоже через сеть!
В этом случае все его операции в папке будут проходить через сервер
Samba. А Самба настроена на полный доступ.

Достоинство этого способа в том, что ничего не нужно делать
дополнительно. Недостатка два:

  1. Скорость файловых операций для локального пользователя будет ниже
    чем если бы он зашел в сетевую папку обычным образом.
  2. Локальный пользователь может забыть и войти в папку обычным образом.

Второй способ — настройка сетевого доступа через bindfs

Использовать bindfs. Для этого нужно установить этот пакет и затем
вручную или автоматически смонтировать сетевую папку через bindfs.

Вот пример автоматического монтирования через fstab:

bindfs#/home/user/lan
/home/user/lan fuse perms=0777 0 0

В примере папка монтируется сама в себя, но можно указать другую точку
монтирования

Важно указать параметр монтирования perms=0777
— это полный доступ на все файлы и папки

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

В этом случае параметры create mask и directory mask в
файле smb.conf уже не нужны.

Работа с ACL в Linux

Для начала установим систему acl, про установку дополнительных пакетов в систему поговорим позже, просто выполните:

# apt install acl

Чтобы посмотреть acl права на файл или каталог используют команду getfacl (её может выполнить любой пользователь без административных прав):

root@deb-11:~# getfacl /home/user1/test/file1.txt
getfacl: Removing leading '/' from absolute path names
# file: home/user1/test/file1.txt
# owner: user1
# group: user1
user::rw-
group::r--
other::r--

Для данного файла acl пока не настроен. Поэтому мы видим стандартные права, где владелец имеет права на чтение и запись, а группа и все остальные только на чтение.

Для установки acl прав используем команду setfacl (выполнять эту команду может только root пользователь, или пользователь с sudo правами):

  • опция -m используется когда нужно модифицировать права;
  • дальше, если мы устанавливаем права для пользователя, то ставим символ u, для группы будем использовать символ g;
  • затем, после двоеточия, имя пользователя;
  • дальше, после двоеточия, права доступа для этого пользователя;
  • и наконец указываем имя файла.

Вот примерное использование setfacl:

# setfacl -m u:пользователь:права_доступа файл
# setfacl -m g:группа:права_доступа файл

Вот как решается описанная в самом начале задача, используя acl:

root@deb-11:~# setfacl -m u:admin:rw-,u:user2:r-- /home/user1/test/file1.txt

root@deb-11:~# getfacl /home/user1/test/file1.txt
getfacl: Removing leading '/' from absolute path names
# file: home/user1/test/file1.txt
# owner: user1
# group: user1
user::rw-
user:admin:rw-
user:user2:r--
group::r--
mask::rw-
other::r--

При этом если мы посмотрим командой ls -l права, то заметим знак “+“, который и указывает что файл имеет дополнительные acl права:

root@deb-11:~# ls -l /home/user1/test/file1.txt
-rw-rw-r--+ 1 user1 user1 0 янв 20 14:38 /home/user1/test/file1.txt

Для группы владельцев и всех остальных также можно устанавливать acl права таким образом:

setfacl -m g:groupname:rwx
setfacl -m o:rwx

Для того чтобы удалить пользователя или группу из acl нужно использовать команду setfacl с опцией -x, например вот так:

root@deb-11:~# setfacl -x u:user2 /home/user1/test/file1.txt

root@deb-11:~# getfacl /home/user1/test/file1.txt
getfacl: Removing leading '/' from absolute path names
# file: home/user1/test/file1.txt
# owner: user1
# group: user1
user::rw-
user:admin:rw-
group::r--
mask::rw-
other::r--

Как видим у пользователя user2 не осталось acl прав к этому файлу. Таким же образом можем удалить группу:

setfacl -x g:groupname

Для того чтобы удалить все acl права с файла используем команду setfacl с опцией -b:

root@deb-11:~# setfacl -b /home/user1/test/file1.txt

root@deb-11:~# getfacl /home/user1/test/file1.txt
getfacl: Removing leading '/' from absolute path names
# file: home/user1/test/file1.txt
# owner: user1
# group: user1
user::rw-
group::r--
other::r--

Что такое SCP?

SCP расшифровывается как Secure Copy («защищенное копирование»). Для этого копирования используется протокол SSH и порт 22. Данные, передаваемые по SCP, шифруются, и злоумышленники не смогут получить к ним доступ. Это делает передачу файлов по SCP очень безопасной.

С помощью SCP можно передавать файлы как с локальной машины на удаленный хост, так и обратно.

Синтаксис SCP

Давайте рассмотрим SCP-синтаксис.

. Здесь могут стоять различные опции — флаги. Вот некоторые из них:

Флаг Описание
-r Рекурсивное копирование директорий.
-q Используется, чтобы спрятать показатель прогресса копирования и всю другую информацию, кроме сообщений об ошибках.
-C Сжатие данных при передаче.
-P Указание SSH-порта на машине, куда пересылаются файлы.
-p Сохраняет начальное время модификации файла.

SOURCE_HOST. Имя пользователя и машина, с которой отправляется файл.

DESTINATION_HOST:]. Имя пользователя и машина, куда отправляется файл.

Примечание. Для передачи файлов по SCP нужно знать логин и пароль соответствующего пользователя на удаленной машине, а также иметь права на запись файлов.

Как передать файлы по SCP с локальной машины на удаленный хост

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

scp source_file.txt [email protected]:/path/to/remote/directory

Здесь source_file.txt — файл, который нужно скопировать. Remote_username — имя пользователя на удаленном хосте 10.13.13.11. После двоеточия указывается путь на удаленной машине, куда нужно поместить файл.

Пример вывода:

[email protected]'s password:
source_file.txt                             100%    0     0.0KB/s   00:00

Теперь файл source_file.txt находится на удаленной машине, в директории по адресу /path/to/remote/directory.

Для копирования директорий используется флаг , как показано ниже.

scp -r /local/directory [email protected]:/path/to/remote/directory

Как передать файлы по SCP с удаленного хоста на локальную машину

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

scp [email protected]:/remote/source_file.txt /path/to/local/directory

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

При передаче файлов будьте предельно внимательны! SCP перезаписывает уже существующие файлы.

Настройка сервера

Настройка Samba-сервера выполняется в несколько этапов. Так как все данные пользователей и машин хранятся в LDAP, вначале неободимо выполнить настройку OpenLDAP-сервера, а затем — настройку LDAP для хранения учётных записей пользователей Linux. Это необходимо для работы Linux-клиентов. После этого можно настроить Samba-сервер.

Настройка Samba

Перед настройкой Samba-сервера настройте LDAP для хранения учётных записей Unix-пользователей. Для этого выполните:

cl-setup unix

 * ПРЕДУПРЕЖДЕНИЕ: Выполнение этой программы изменит конфигурационные файлы и базу данных сервиса LDAP.
 Если вы готовы продолжить выполнение программы, введите 'yes', если нет - 'no': yes

 * Добавлен ldif файл ...                                                                                        
 * Unix сервис сконфигурирован ...                                                                               

Для настройки Samba-сервера выполните:

cl-setup samba

 * ПРЕДУПРЕЖДЕНИЕ: Выполнение этой программы изменит конфигурационные файлы Samba сервиса.
 Если вы готовы продолжить выполнение программы, введите 'yes', если нет - 'no': yes

 * Добавлен ldif файл ...                                                                                        
 * Запускается Samba ...                                                                                         
 * Пользователь client добавлен в Unix сервис
 * Пользователь client добавлен в Samba сервис
 * Пользователь admin добавлен в Unix сервис
 * Пользователь admin добавлен в Samba сервис
 * Samba сервис сконфигурирован ...                                                                              

В качестве параметров вы можете указать netbios и workgroup.

  • — устанавливает имя NetBIOS, под которым будет работать Samba сервер. По умолчанию оно устанавливается равным первому компоненту DNS-имени хоста.
  • — имя домена или рабочей группы NT для компьютеров, которые будут получать доступ к этому серверу.

Задайте пароль администратора (пользователь с логином ):

cl-passwd —smb admin samba

Новый пароль:
Повторите новый пароль:
* Пароль пользователя admin Samba сервиса изменен

Заметка

Пользователь используется только для ввода клиентского компьютера с ОС Windows в домен. Admin не имеет домашней директории.

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

Пример создания администратора домена:

cl-useradd -p —gid «Domain Admins» -c «Администратор домена» d_admin samba

Новый SMB пароль:
Повторите новый SMB пароль:
* Пользователь d_admin добавлен в Unix сервис
* Пользователь d_admin добавлен в Samba сервис

Добавление и удаление пользователей

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

Для примера добавьте пользователя test и задайте ему пароль:

cl-useradd test samba

* Пользователь test добавлен в Unix сервис
* Пользователь test добавлен в Samba сервис

cl-passwd test samba

Новый пароль:
Повторите новый пароль:
* Пароль пользователя Unix сервиса изменен
* Пароль пользователя test Samba сервиса изменен

Подключение Unix-клиентов

Если у вас не настроен DNS

Клиентская машина должна резолвить имя сервера calculate.example.org (). Если у вас не настроен DNS, используйте один из двух вариантов:

  • На клиенте пропишите IP адрес сервера в :
    <IP адрес> calculate.example.org
    
  • На сервере отредактируйте файл , прописав в него IP адрес сервера:
    sr_samba_host = <IP адрес>
    

Для подключения Unix-клиентов укажите пароль для служебного пользователя :

cl-passwd —smb client samba

Новый пароль:
Повторите новый пароль:
* Пароль пользователя client Samba сервиса изменен

На клиентской машине выполните:

cl-client DOMAIN

* Проверка DOMAIN на наличие доменных ресурсов ...                                                              
Пароль для ввода рабочей станции в домен:
* Samba ресурс  подключен
* Применены шаблоны ввода в домен ...
* Компьютер настроен для работы в домене
* Компьютен добавлен в домен DOMAIN

где DOMAIN — сетевое имя или IP-адрес сервера.

Создаём и настраиваем ВМ

В консоли среди сервисов найдите EC2 и перейдите к нему.

Важно выбрать дата-центр, проще говоря, место, где находятся сервера amazon. Выбирать следует в зависимости от вашего местоположения, ведь скорость общения в сети интернет разная, и выбирать следует дата-центр, с которым общение из вашего города будет максимально быстрым. Пришло время создать виртуальную машину

Для этого перейдите на вкладку Launch instance

Пришло время создать виртуальную машину. Для этого перейдите на вкладку Launch instance

Начнём конфигурирование ВМ.

1) Выберем образ операционной системы. Для поднятия серверов очень удобен linux, мы будем использовать дистрибутив CentOS7

2) Теперь определим техническую конфигурацию ВМ. Для бесплатного использования Amazon предлагает конфигурацию t2.micro, маловато для полноценного большого minecraft сервера, но с друзьями поиграть достаточно.

3) Остальные пункты настроек оставляем по умолчанию., но останавливаемся на вкладке Configure Security groups.

Здесь нам необходимо настроить доступ к портам для сервера minecraft.

Для minecraft серверов де-факто стандартом является использование порта 25565. Добавим правило, указывающее, что доступ к вашей ВМ через этот порт допустим.

Переходим к окну завершения создания ВМ, нажав кнопку Review and Launch

Настройка системы и Samba через Web-интерфейс

Для управления системой через веб-интерфейс есть пакет webim, но его в репозитории (если кого-то пугает это страшное слово, то статья на эту тему «Репозитории, пакеты, менеджеры пакетов и зависимости в Linux») нет, поэтому скачаем подготовленный пакет вручную. Для этого выполним команду консоли:

Для установки webim потребуются некоторые зависимые пакеты:

sudo apt-get install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl apt-show-versions

Ну и остается установка:

sudo dpkg —install webmin_1.580_all.deb

Теперь можно заходить в веб-интерфейс по адресу «https://(ip сервера):10000» или «https://(имя сервера):10000»:


Сразу обновим сию радость, нажав на кнопочку «Upgrade Webmin Now». Далее изменим язык интерфейса по пути «Webmin — Change Language and Theme — Rassian (RU UTF-8)» и сохраним конфигурацию:

Теперь попробуем создать с помощью «Webmin» каталог «Torrents» (для будущего торрент-клиента) в ранее созданной папке «Data». Для этого переходим в «Службы -> Файл-сервер Samba». И видим ранее созданные папки:

..Где жмём на «Создание нового файлового ресурса» и заполняем поля:

  • Имя ресурса — Torrent
  • Каталог ресурса — /data/Torrent
  • Права доступа — 777

Далее переходим в «Редактирование файлового ресурса — Управление безопасностью и доступом».

И настраиваем следующие поля:

  • Разрешить запись — Да
  • Гостевой доступ — Да

После чего жмём «Сохранить»:

..И в итоге, на всякий случай перезапускаем сервер Samba:

Далее остается проверить наличие папки и попробовать записать что-либо в ранее созданный каталог..

На этом знакомство с Webmin закончено. Теперь Вы умеете пользоваться как консолью, так и веб-интерфейсом. Остается перейти к послесловию и ждать третьей части статьи либо попробовать закончить работу самостоятельно :)

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
IP-файл
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: