Архив рубрики: Публикации

Программирование на Go

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

Конечно, сложно охватить программирование go полностью в одной статье, но вы узнаете основы, которые помогут вам в дальнейшем. Но перед тем как перейти к рассмотрению языка, давайте поговорим про историю его развития и структуру. Статья рассчитана в первую очередь на тех, кто уже знает какой-либо Си подобный язык программирования, поэтому новичкам материал может показаться сложным, но им тоже может быть полезно. Я не говорю, что программирование на Go с нуля невозможно, просто для этого нужна более подробная литература.

История развития Go

Язык Go элегантен и прагматичен, но некоторые его особенности имеют смысл только под определенным историческим контекстом. История Go начинается с Си. Во многих отношениях Си стал основой для создания JavaScript, Ruby, Python, C++, C# и Java. Компиляторы или интерпретаторы некоторых из этих языков даже написаны на Си. Влияние Си легко заметить во многих языках. Он был разработан Денисом Ритчи для создания ядра Unix и потом использовался для создания ядра Linux.

Язык Go был создан легендами эпохи Unix и Си. Работая в Google, Роберт Грисемер, Роб Пайк и Кен Томпсон были разочарованы в Си-языках из-за их проблем. Бъярн Страуструп, создатель C++ говорил так: «Си позволяет легко выстрелить себе в ногу, в C++ это сложнее, но если вы все же выстрелите, то взорвете ногу целиком».

Go наследует много хорошего от Си. Ключевые слова и сила синтаксиса, процедурный подход — это сильные стороны обоих языков. С другой стороны, ручное управление памятью и время компиляции — это проблема Си. Go решает эти проблемы с помощью сборки мусора, безопасной работы с памятью и очень быстрой компиляции.

Язык Java выбирают многие крупные компании с большими командами разработчиков. Go перенимает и этот плюс у Java и пытается быть отличным языком для больших групп разработчиков. Язык Go не имеет таких недостатков объективно ориентированного программирования, как наследование. Все реализуется с помощью лаконичного синтаксиса интерфейсов.

Также можно найти определенное сходство с динамическими языками, Go перенимает стиль написания кода у Python, настраиваемость у Ruby и простой параллелизм, вшитый в ядро языка, как у Node.js. Все начиналось, как язык, решающий некоторые проблемы Си и выросло в прекрасный язык программирования общего назначения.

Программирование на Go

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

1. Синтаксис языка Go

Самое главное о чем стоит сказать — это структура программы. Она чем-то похожа на Java и Python. Программа разделяется на так называемые пакеты Package, которые можно рассматривать как альтернативу include или модулей в Python. В дополнение package позволяют настраивать области видимости для переменных. Импортируется пакет в программу с помощью инструкции import:

import имя_пакета

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

var имя_переменной тип

В именах переменных можно использовать русский язык. Но если сразу задать переменной значение, то язык сам определит ее тип:

var имя_переменной := значение

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

var *имя_переменной тип

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

имя_пакета.имя_переменной

имя_пакета.имя_функции

Основные управляющие инструкции очень схожи по своему синтаксису с привычными в Си:

if условие {

действия

}

Цикл for тут точно такой, как и в Си, только без круглых скобок, так выглядит даже проще:

for i := 0; i <= ограничитель; i++ {

действия

}

Функции golang объявляются с помощью директивы func, и в ней можно указать не только параметры, но и возвращаемые переменные:

func имя_функции (принимаемые переменные) (возвращаемые переменные) {

действия

}

Важно заметить, что точка с запятой после строк не ставиться. Вместо ООП классов в Go используются структуры, которые могут иметь поля и методы, а также могут реализовать интерфейсы. Чтобы объявить структуру используется инструкция type:

type имя_структуры struct {

имя_поля тип_поля

}

Кроме полей, структуры могут иметь методы, что позволяет использовать их в качестве классов. Объявление метода немного отличается от функции golang:

func (имя_указателя *тип_структуры) имя_метода() {

действия

}

Создание объектов структур происходит так же, как и обычных переменных, а обращаться к их полям можно через точку:

имя_объекта.имя_метода(параметры)

К полям мы тоже обращаемся через точку:

имя_объекта.имя_поля

Теперь вы знаете основы языка и пришло время перейти ближе к практике. Дальше будет программирование на Go и примеры Golang, минимум теории.

2. Создание Hello World

Напишем нашу первую программу, как принято, это будет программа, которая выводит на экран строчку «Привет мир!». Вы можете установить Go в свою систему или же воспользоваться онлайн сервисом play.golang.org, который позволяет выполнять программы прямо в браузере. Мы  будем работать с онлайн сервисом.

При открытии сайта вы увидите уже готовый код первой программы:

package main

import ( "fmt")



func main() {

fmt.Println("Hello, playground")

}

Как видите, синтаксис почти соответствует тому, что мы рассматривали ранее. В первой строке мы указываем, что этот файл относиться к пакету main, во второй импортируем пакет fmt, отвечающий за стандартные функции ввода и вывода. Скобки здесь нужны чтобы за один раз импортировать несколько пакетов, можно просто добавить имена через запятую.

Дальше объявляется функция main, которая будет выполнена при запуске программы. Каждая программа на Go должна содержать функцию main. В динамических языках выполнение скрипта начинается от верха файла вниз. В Go выполнение начинается с функции main, так называемой точки входа.

Внутри функции main мы вызываем функцию библиотеки fmt, которую импортировали ранее с помощью синтаксиса точки. Метод printLn выводит строчку на экран.

Для языка Go был принят определенный синтаксис. Даже если компилятор не будет выдавать ошибок из-за несоответствия, его лучше соблюдать. Для имен переменных принято использовать верблюжий синтаксис, то есть FooBar или Foobar вместо foo_bar. А также обратите внимание, что Go не терпит никаких символов перед открывающей скобкой. Даже если поставить перевод строки, вы получите ошибку:

Также в Go стандартизированы отступы, хотя здесь нет таких требований, как в Python.

3. Основы языка Go

Рассмотрим работу с переменными и структурами. Это будет полезно начинающим пользователям. Как я уже говорил, язык имеет статическую типизацию. В Python, Ruby или JavaScript нужно выполнять множество проверок на правильность. Go избавляет от этой проблемы. Например, усложним наш предыдущий пример:

В этом примере, за вывод отвечает новая функция — print. Здесь явно указано, что ей нужно передать строку (string). А в функции main мы создаем переменную типа string и передаем ее в print. Если передать что-то другое, получим ошибку. Если, например, вы поменяете тип переменной на int, то получите это:

cannot use "Привет мир!" (type string) as type int in assignment

Также вы получите ошибку, если объявили переменную или импортировали пакет, но не используете его. Существует еще множество вещей, которые можно сделать с помощью Go, одна из них — это структуры. Давайте еще больше усложним нашу программу, создадим структуру site, с полями name и url, которая будет описывать какой-либо сайт:

В структуры будет метод print, который выводит строку «Добро пожаловать…». В методе main мы инициализировали структуру и присвоили ее полям значения, а затем вызвали метод print.

Язык программирования Go имеет еще множество интересных особенностей и возможностей. И до большинства из них мы даже не приблизились. Если вы хотите научиться плавать, вам надо прыгать в воду. Только благодаря практике вы сможете свободно применять этот язык.

Выводы

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

https://www.youtube.com/watch?v=nI8YJSKjOSY



2017-06-18T16:00:32
Программирование

Как создать защищенную паролем папку в Windows без дополнительного программного обеспечения

В данным момент любой знает функцию скрытия файлов в Windows.

Однако, этот способ не является надежным в виду того, что опять же каждый знает, что можно воспользоваться одним щелчком мыши рядом с опцией ” show hidden files “. Поэтому этот способ не считается защищенным.

Сегодняшний пост- все о том, как создать защищенную паролем папку в Windows и скрыть ее от других.

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

Есть огромный список программного обеспечения, которое может решить эту задачу, но можно это сделать не прибегая с стороннему ПО, а с помощью батника [.bat файл].

Шаг: 1 – Изменения настроек Windows

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

Переходим – панель управления -> вид -> показывать скрытые папки, файлы и диски.

Шаг: 2 – Создаем защищенную паролем папку

Просто копируем содержание ниже в блокнот.



<pre>cls

 @ECHO OFF

 title Folder Private

 if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK

 if NOT EXIST Private goto MDLOCKER

 :CONFIRM

 echo Are you sure you want to lock the folder(Y/N)

 set/p "cho=>"

 if %cho%==Y goto LOCK

 if %cho%==y goto LOCK

 if %cho%==n goto END

 if %cho%==N goto END

 echo Invalid choice.

 goto CONFIRM

 :LOCK

 ren Private "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"

 attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"

 echo Folder locked

 goto End

 :UNLOCK

 echo Enter password to unlock folder

 set/p "pass=>"

 if NOT %pass%== your password goto FAIL

 attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"

 ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Private

 echo Folder Unlocked successfully

 goto End

 :FAIL

 echo Invalid password

 goto end

 :MDLOCKER

 md Private

 echo Private created successfully

 goto End

 :End


• введите пароль по собственному выбору в месте, отмеченном  your password в вышеупомянутом коде

• сохраните это как “private.bat”

• теперь один раз щелкните по файлу private.bat, и он создаст новую папку, названную private

Шаг:-3 Блокируем папку

• Нажмите  на private.bat, и система спросит, хотители вы заблокировать свою папку

• впишите y чтобы согласиться и n чтобы отказаться

• теперь ваша папка заблокирована

Шаг:-4 Открываем папку

• снова нажмите на private.bat, и теперь система попросит, чтобы вы ввели свой пароль

• введите пароль, и щелкните на enter

• ваша папка теперь разблокирована



2017-06-13T15:55:05
Медиа

Ошибка 403 forbidden nginx 1.4 6 Ubuntu

Ошибка 403 forbidden nginx означает что вы запросили ресурс у сервера, который он не может отправить, потому что у вас недостаточно прав для его просмотра. Фактически, это даже не ошибка, это сообщение HTTP 4xx, которое всего лишь сообщает, что у вас нет доступа к определенному контенту.

Достаточно часто такие сообщения показывается пользователям, потому что они были заблокированы на сайте или попытались получить доступ к файлу, который доступен только локально. В этой статье мы попытаемся разобраться со случаями, когда появление 403 forbidden nginx 1.4 6 Ubuntu не желательно и представляет из себя ошибку, которую веб-мастер или системный администратор должен решить. Но сначала рассмотрим основные причины почему вы можете видеть это сообщение.

Ошибка 403 Forbidden Nginx

Итак, ошибка 403 forbidden nginx 1.4 6 Ubuntu может возникать в таких случаях:

  • Пользователь заблокирован на сервере с помощью директивы deny в конфигурации nginx;
  • Доступ к данному ресурсу разрешен только с определенного IP адреса;
  • Пользователь пытается получить доступ к папке, отображение содержимого которой запрещено;
  • Nginx не может прочитать содержимое запрашиваемого файла в файловой системе;
  • Файл index не найден в каталоге.

Это основные причины, которые встречаются наиболее часто. Как видите, две последние из них представляют из себя проблему. Рассмотрим как ее решить.

Неверно выставлены права

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

namei -l /var/www/public_html/index.html

Для всех элементов пути должен быть установлен флаг «r», чаще всего лучше подходят права 644, то есть, владелец может все, а группа и остальные только читать. Если права не соответствуют, то вы нашли проблему и осталось только исправить права с помощью chmod. Например:

chmod 644 /var/www/public_html/index.html

Вот так должно быть:

Также обратите внимание на владельца файлов и папок. Если nginx должен иметь возможность выполнять туда запись, то, возможно есть смысл сделать владельцем пользователя nginx или позже получите другую ошибку. Также, если с правами все хорошо, но ошибка не решена попробуйте отключить SELinux, возможно, эта служба мешает Nginx получить доступ к файлам.

Если вы используете PHP и получаете такую ошибку, то еще нужно проверить может ли Nginx получить доступ к сокету обработчика PHP. Желательно, чтобы php-fpm запускался с той же группой, что и nginx, потому что права, по умолчанию, для доступа к сокету 660 (для группы и для владельца). Поэтому проверьте поля listen.owner и listen.group в файле  /etc/php5/fpm/php-fpm.conf.

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

Неверно настроен index

Файл index открывается по умолчанию при запросе папки на сервере, в которой он находится. Если такого файла в папке нет или он настроен неправильно в конфигурационном файле nginx, то программа попытается отобразить содержимое папки, а это по умолчанию запрещено, поэтому вы получите 403 Foribden.

Чтобы решить проблему убедитесь, что файл index.html, index.php или как он у вас называется, находится в нужно папке, в той, которую вы запрашиваете. Проверьте конфигурационный файл и убедитесь, что в нем указана директива Index с правильным именем и расширением файла:

Если в директиве указаны только файлы html, а вы используете php, то уже понятно почему программа не может найти то, что нужно. Просто добавьте имя файла в директиву:

index index.html index.htm index.php;

Точно так же, если вы использовали python скрипт, то нужно добавить его расширение.

Выводы

В этой статье мы рассмотрели почему возникает ошибка 403 forbidden nginx 1.4 6 Ubuntu и пути ее решения. Это наиболее частые причины, с которыми сталкиваются пользователи и попробовав все это, скорее всего, вы решите свою проблему. Если у вас остались вопросы, спрашивайте в комментариях!



2017-06-07T15:36:07
Сервер

Установка Nagios в Ubuntu

Nagios — это один из самых распространенных инструментов мониторинга серверов Linux и Windows с открытым исходным кодом. С помощью него вы сможете следить за выполнением различных приложений и сервисов удаленно, через веб-интерфейс. Nagios также может контролировать маршрутизаторы и другие сетевые устройства.

С помощью Nagios вы можете отслеживать основные параметры сервера, такие как нагрузка на процессор, использование памяти и т д. Все это доступно в веб-интерфейсе, для получения доступа к которому нужно пройти простую аутентификацию. В этой статье мы рассмотрим как выполняется установка Nagios Ubuntu, а также настройка этой программы.

Установка Nagios в Ubuntu

Есть несколько способов установить Nagios Ubuntu 16.04. Вы можете воспользоваться PPA или устанавливать с помощью архива, загруженного на официальном сайте. На данный момент самая последняя версия — 4.3. В PPA доступна только 4.2, поэтому мы рассмотрим ручную установку с помощью архива.

Но перед тем как мы перейдем к установке необходимо обновить систему и установить все необходимые компоненты для сборки программы:

sudo apt update

sudo apt install build-essential apache2 php7.0 openssl perl make php7.0-gd libgd2-xpm-dev libapache2-mod-php7.0 libperl-dev libssl-dev daemon wget apache2-utils unzip

Затем нужно создать группу и пользователя, от имени которых будет запускаться Nagios, а также команды оболочки, выполненные в веб-интерфейсе:

sudo useradd nagios

$ sudo groupadd nagcmd

Добавьте пользователя nagios и пользователя, от имени которого запускается Apache в группу nagcmd:

sudo usermod -a -G nagcmd nagios

$ sudo usermod -a -G nagcmd www-data

 

Затем нам нужно скачать исходные коды nagios. Это можно сделать с помощью команды терминала, но поскольку мы хотим получить самую новую версию, то лучше зайти на официальный сайт и скачать.

Сначала кликните по пункту «Nagios Core», затем пролистайте вниз и нажмите «Download»:

На этом этапе вы можете заполнить информацию о себе, или пропустить, нажав «Skip download»:

Осталось выбрать версию, например, 4.3.2. После того как загрузка будет завершена перейдите в папку с загрузками и распакуйте архив:

cd ~/Загрузки/

$ tar -zxvf /tmp/nagios-4.3.2.tar.gz

Теперь можно переходить к компиляции nagios. Для этого нужно выполнить такие команды:

./configure --with-nagios-group=nagios --with-command-group=nagcmd --with-httpd_conf=/etc/apache2/sites-enabled/

$ make all

$ sudo make install

$ sudo make install-init

$ sudo make install-config

$ sudo make install-commandmode

$ sudo make install-webconf

Настройка Nagios в Ubuntu

Все конфигурационные файлы программы будут размещены установщиком в /usr/local/nagios/etc/. Настройки по умолчанию позволяют запустить Nagios, но нам нужно внести еще несколько изменений. Откройте файл contact.cfg и измените электронный адрес, на который будут приходить оповещения:

sudo vi /usr/local/nagios/etc/objects/contacts.cfg

define contact{

contact_name nagiosadmin ; Краткое имя пользователя

use generic-contact ; Шаблон по умолчанию

alias Nagios Admin ; Полное имя пользователя

email admin@losst.pro ; Ваш Email

}

Для работы веб-интерфейса необходимо создать пароль пользователя nagiosadmin с помощью htpasswd, без него вы просто не сможете войти в интерфейс:

sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Наконец, для корректной работы нужно внести несколько настроек для веб-сервера. Включите модуль cgi:

sudo a2enmod cgi

Перезапустите веб-сервер:

sudo service apache2 restart

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

Теперь распакуйте архив и перейдите в папку с ним:

tar -zxvf /tmp/nagios-plugins-2.1.1.tar.gz

$ cd /tmp/nagios-plugins-2.1.1/

Для компиляции модулей выполните:

./configure --with-nagios-user=nagios --with-nagios-group=nagios

$ make

$ make install

Модули установлены в папку с Nagios, теперь проверьте правильность конфигурации:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Для автоматического запуска создадим Unit файл для systemd:

sudo vi /etc/systemd/system/nagios.service

[Unit]

Description=Nagios

BindTo=network.target

[Install]

WantedBy=multi-user.target

[Service]

User=nagios

Group=nagios

Type=simple

ExecStart=/usr/local/nagios/bin/nagios /usr/local/nagios/etc/nagios.cfg

 

Запуск Nagios

Почти все готово, осталось запустить сервис и начать использовать. Для запуска сервиса наберите:

sudo systemctl stat nagios

Чтобы открыть веб-интерфейс nagios будет достаточно набрать ip адрес и url nagios в браузере. Если вы устанавливали все это на локальном компьютере, то используйте:

http://localhost/nagios

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

Выводы

В этой статье мы рассмотрели как выполняется настройка nagios 4, а также полная установка последней версии в операционной системе Ubuntu. Несмотря на то, что, на первый взгляд, все кажется сложным, процесс достаточно простой. Теперь вы можете осуществлять мониторинг nagios ubuntu 16.04. Надеюсь, эта информация была полезной для вас.

https://youtu.be/nk52SLnjGy0



2017-06-06T14:32:49
Сервер

Установка OpenMediaVault на флешку

OpenMediaVault — открытая масштабируемая система управления сетевым устройством хранения (программный NAS) на основе Debian Linux. Включает в себя программный RAID (0,1,5,6), почтовый клиент, SSH, (S) FTP, CIFS (Samba), NFS, DAAP медиа-сервер, RSYNC, ISCSI, BitTorrent-клиент.

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

Установка OpenMediaVault на флешку

Имеется в виду, что сама система будет работать с отдельной флешки, не затрагивая основные жесткие диски, которые используются для хранения файлов и других задач. В моем случае я взял два HDD объемом 1Тб и сделал из них RAID 1 mirror. У меня получился чистый терабайт в зеркале, а система стоит на отдельной флешке (Мне этот вариант показался очень удобным). Установка и настройка OpenMediaVault:

  1. Скачиваем образ системы со страницы на sourcefoge;
  2. С помощью программы Unetbootin нарезаем образ на флешку и у нас получается загрузочная флешка с системой OpenMediaVault;
  3. Берем ВТОРУЮ флешку (я взял 16гб, можно и меньше), делаем низкоуровневое форматирование программой HDD Low Level Format;
  4. Вставляем обе флешки в компьютер, который будет использоваться для NAS и через BIOS загружаемся с флешки, на которую нарезан образ, начнется установка;
  5. Выбираем «Install», следуем по пунктам. Там ничего особенного, выбираем язык, местоположение, раскладку клавиатуры;
  6. Далее, программа установки попросит выбрать диск, на который необходимо установить систему (на этом этапе будьте внимательны и не перепутайте диск, куда надо ставить). У меня было 4 диска (2 терабайтника — их не трогаем, флешка на 16gb и еще одна флешка на 16gb) Я знаю что одна из флешек называется transcend и она пустая — соответственно ее и выбираем в качестве диска, на который выполняется установка OpenMediaVault;
  7. Если будет ошибка установки (не сможет разметить область), то вернитесь к пункту 5 (необходимо полное форматирование с уничтожением файловой системы на флешке);
  8. После установки системы программа установки начнет установку grub на флешку, которую выбрали ранее и здесь может выскочить очередная ошибка «Не удалось установить GRUB на /dev/sda». Проблема в том, что в моей системе несколько дисков, а dev/sda — это первый терабайтник который будет в RAID, а флешка transcend — /dev/sdc (В вашем случае это может быть dev/sdb или dev/sdd — смотрите внимательно когда выбираете диск, на который ставить систему). GRUB по дефолту пытается установиться не на тот раздел, поэтому сделаем это вручную. Нажимаем кнопку «продолжить».
  9. Возвращаетесь в главное меню установки debian и выбираете пункт «Запуск оболочки»;
  10. В оболочке выполняете следующие команды:

    chroot /target

    $ grub-install /dev/sd[a-z]


    Здесь a-z последняя буква вашей флешки, которую вы выбирали для установки системы. В моем случае я писал:

    grub-install /dev/sdc

    $ update-grub

    $ exit

    $ exit
  11. Вы вернулись в основное меню установки Debian, далее выбираете «Продолжить без установки загрузчика»;
  12. Установка завершается, вас просят вытащить загрузочную флешку, на которую вы изначально резали образ и компьютер перезагружается;
  13. После перезагрузки появляется приглашение ко вводу строки Login. Логиньтесь под root (пароль вы указывали при установке). После того как залогинитесь, вводите команду ifconfig, она подскажет IP адрес, который получила машина. В моем случае это был 192.168.0.244, теперь настройка OpenMediaVault может быть выполнена с помощью любого устройства через веб-интерфейс. Логин веб-морды admin, пароль openmediavault.

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

Дальше настройка SFTP сервера (FTP работающий по 22 порту, т.е. если включен SSH, то и защищенный FTP тоже работает сразу же):

  1. Идем на закладку «Сервисы»«SSH» в веб-морде OpenMediaVault, включаем SSH;
  2. Идем на закладку «Хранилище»«Файловые системы». Создаем раздел формата ext4;
  3. Идем на закладку «Управление правами доступа»«Пользователь». Создаем пользователя, обязательно добавляем его в группы users и ssh;
  4. Идем на закладку «Общие каталоги» и добавляем общую папку. Придумываем имя шаре, указываем том на котором она будет лежать. Путь создется сам исходя из названия. Сохраняем. Здесь же выбираем привилегии и ставим галочку чтение/запись нашего пользователя;
  5. Возвращаемся в раздел «Пользователь» и вкладке «Настройки» включаем домашнюю директорию. Путь будет называться по имени шары. Суть такая: имяШары/имяПользователя — это и будет домашняя папка. Оно там само выберется в выпадающем списке;
  6. Ставим программу CyberDuck и с помощью нее можно подключиться по защищенному ftp соединению к нашему NAS. Пишем IP сервера, логин и пароль и порт 22.

 

Выводы

В этой статье мы разобрали как выполняется настройка и установка OpenMediaVault. По вопросам пишите на ink.dude(at)mail.ru или в комментариях.

 

Update:

Вышла новая стабильная версия OpenMediaVault v3, установка производится абсолютно точно так же, никаких проблем возникнуть не должно.

Поставим плагин omv-extras для установки других плагинов:) Там будет очень много всего интересного, крайне рекомендую. В первую очередь — уменьшение записи данных на флешку, чтобы она дольше прожила

Официальный мануал http://omv-extras.org/joomla/index.php/guides

1. Качаем deb пакет для OMV 3.x http://omv-extras.org/openmediavault-omvextrasorg_latest_all3.deb

2. Идем в веб-морду нашего nas и заходим в левой панели в закладку «Плагины«



3. Нажимаем на кнопку «Загрузить» и указывает тот deb пакет, который загрузили ранее. Ждем, пока загрузится и установится.

4. Ищем его в списке плагинов (будет называться openmediavault-omvextrasorg), отмечаем галочкой и вверху нажимаем «Установить«.

5. Обновите страницу openmediavault и в левой панели в разделе «Система» увидите новую кнопку с картинкой розетки OMV-Extras, заходите туда и подключайте репозиторий который на тесте, второй по списку (перед plex)



6. Возвращаемся во вкладку «Плагины» и теперь там появилось очень много всего интересного, ищем openmediavault-flashmemory, отмечаем галочкой — устанавливаем, обновляем страницу OMV

7. Слева в панели «Хранилище» появилась новая кнопка «Flash memory«, заходим в нее и читаем «Notes», там вручную надо подправить fstab. Ничего криминального там не будет, просто подключитесь по putty с компа на ваш nas по 22 порту под root и сделайте то что указано в инструкции, потом уже включите плагин и в reboot.



2017-06-03T16:53:43
Сервер

Открытые порты Ubuntu

В современных операционных системах не обойтись без взаимодействия программ с внешней средой и интернетом.  Для этого используется специальные механизмы — порты.

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

Что такое порты и зачем они нужны?

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

Но как указать программу, к которой нужно обратиться? Для решения этой проблемы оба протокола UDP и TCP поддерживают систему портов. Порт — это целое число от 1024 до 65535. Все номера до 1024 зарезервированы и используются только определёнными службами, например, 22 — ssh, http — 80, FTP — 21 и так далее.

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

Открытые порты Ubuntu

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

В Linux существует несколько утилит, которые можно использовать, чтобы посмотреть открытые порты. Одни из них полноценные сетевые сканеры, другие — локальные утилиты, отображающие всю доступную информацию. Рассмотрим основные из них.

netstat

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

netstat -ntlp | grep LISTEN

Опция -l сообщает, что нужно посмотреть прослушиваемые порты, -p  показывает имя программы, -t и -u — отображают TCP и UDP порты, а -n показывает ip адреса в числовом виде. Дальше нужно выбрать только те строки, где встречается слово LISTEN, чтобы найти только прослушиваемые порты.

Здесь в первом столбце отображается протокол, затем два столбца — это данные, которые нам ничего полезного не говорят, а за ними уже идут локальный и внешний адреса. Если локальный адрес — 127.0.0.1, то это значит, что сервис доступен только на этом компьютере, а значение 0.0.0.0 или :: означает любой адрес, к таким сервисам могут подключаться из сети. В нашем примере это Apache и systemd-resolvd.

lsof

Утилита lsof тоже предназначена для просмотра открытых соединений. Основная ее функция — просмотр открытых файлов, но с её помощью можно посмотреть открытые порты Ubuntu. Используйте такие параметры:

sudo lsof -nP -i | grep LISTEN

Опции -n и -P указывают, что необходимо отображать не только цифровые имена портов и ip-адреса, но и  имена доменов и сервисов. Опция -i отображает все сетевые подключения, а с помощью grep мы фильтруем только те, которые находятся в состоянии прослушивания.

Представление информации немного отличается, но в общем и целом мы видим всё ту же информацию. Кроме неё, здесь ещё отображается имя пользователя, от которого запущен процесс. Вы можете не ограничиваться фильтрами и посмотреть все доступные соединения:

sudo lsof -nP -i

ss

Команда ss — это улучшенная версия netstat. Точно так, как для замены ifconfig была придумана утилита ip, ss разработали для замены netstat. Команда будет выглядеть следующим образом:

ss -ltupn

Все данные здесь выводятся почти так же, как и в netstat, поэтому вы легко во всём разберётесь. В дополнение к выше перечисленным командам: возможно, вам нужно будет посмотреть на правила брандмауэра iptables, чтобы понять, какие порты закрыты с его помощью:

iptables -L

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

nmap

Сетевой сканер nmap позволяет проверить список портов Ubuntu так, как бы это делал злоумышленник при попытке атаки на вашу систему. Здесь вы будете видеть все порты, которые видны снаружи. Но для сканирования нужно использовать внешний ip-адрес. Не сетевой ip-адрес провайдера, а адрес вашего компьютера, например, в локальной сети чаще всего используется 192.168.1.2. Посмотреть ip вашего сетевого интерфейса можно с помощью команды ifconfig:

ifconfig

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

nmap -sT 192.168.1.3

Также можно выполнить комплексное сканирование всех уязвимостей. Важно отметить, что команда не находит все уязвимости, а проверяет только самые простые. Для активации этого режима используется опция -A:

sudo nmap -A 192.168.1.3

Как пользоваться nmap, читайте в отдельной статье.