NETGEAR ReadyNAS Pro. Установка дополнительных модулей и программ::Журнал СА 3.2010
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Архив номеров
Контакты
   

  Опросы
  Статьи

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

 Читать далее...

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

 Читать далее...

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

 Читать далее...

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

 Читать далее...

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9887
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 8103
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 8201
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5195
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 5873
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

Друзья сайта  

 NETGEAR ReadyNAS Pro. Установка дополнительных модулей и программ

Архив номеров / 2010 / Выпуск №3 (88) / NETGEAR ReadyNAS Pro. Установка дополнительных модулей и программ

Рубрика: Администрирование /  Хранение данных

Алексей Бережной АЛЕКСЕЙ БЕРЕЖНОЙ, системный администратор. Главные направления деятельности: виртуализация и гетерогенные сети. Еще одно увлечение помимо написания статей – популяризация бесплатного ПО

NETGEAR ReadyNAS Pro
Установка дополнительных модулей и программ

Раздвигаем рамки функциональности обычной конфигурации сетевых хранилищ за счет использования доступа по SSH в режиме командной строки

В номере «СА» за декабрь 2009 года [1] шла речь о некоторых функциях, позволяющих более полно использовать сетевые хранилища ReadyNas Pro от NETGEAR. Обновление прошивки, смена типа RAID, тонкая настройка прав – все это, конечно, здорово. Но иногда необходимо несколько больше, чем заложено в штатные функции сетевого хранилища.

В статье в июле 2009 года [2] я указывал, что в качестве основы для программного обеспечения ReadyNas Pro (оно называется RAIDiator) использовался Linux Debian. И значит, есть возможность значительно расширить функциональность данных сетевых хранилищ за счет использования программного обеспечения, предназначенного для Linux-платформ.

Внимание! Установка дополнительных расширений производится «на свой страх и риск», без каких-либо гарантий со стороны производителя. (И автора, кстати, тоже. Хотя все описанные в этой статье процедуры у меня завершились весьма успешно.) В случае возникновения серьезных сбоев компания NETGEAR может отказать в предоставлении гарантийного обслуживания. Также перед выполнением нижеописанных действий крайне необходимо выполнить полное резервирование данных и настроек хранилища на другой ресурс (или съемный носитель). Даже если вы «гуру» в области UNIX-платформ, резервная копия (а лучше две) никогда не помешает.

После такого грозного предупреждения возникает резонный вопрос: «А зачем, собственно это нужно? Не проще ли использовать хранилище как есть, с заводскими функциями?» Естественно, при ответе на вопрос, стоит ли игра свеч, нужно руководствоваться принципом «Можно ли без этого обойтись?». Но бывают случаи, когда новая функция действительно необходима. Например, вам нужно проверять содержимое хранилища на вирусы в автономном режиме. Или управлять им с помощью SSH. Или создавать архивные копии в сжатом виде посредством небезызвестной связки tar+gzip. Существует еще много задач, которыми можно «нагрузить» ReadyNAS. Например, некоторые энтузиасты превращают сетевое хранилище в полноценный веб-сервер.

Следует сразу оговориться, что для использования описываемых в данной статье технологий необходимо хорошее знание основ работы в UNIX-системах, в частности Debian Linux. Иначе можно запросто остаться у разбитого корыта, то есть с неработоспособным устройством, лишенным гарантийного обслуживания. Хотя и в этом случае существует «запасной парашют» – возврат к заводским установкам (cм. мою статью [1]). С данным в этом случае придется распрощаться, но хранилищу вернется работоспособность. Также при этом обновляется показатель «был ли включен доступ через SSH», и у вас появляется шанс не потерять гарантию (поддержку).

Если вы имеете опыт общения с UNIX-like платформами и не боитесь разбираться со сложными ситуациями, для которых нет готовых рецептов, – тогда, возможно, стоит рискнуть, чтобы еще лучше приспособить хранилище под свои нужды.

Еще один принцип, на который мне хочется обратить внимание: «Для хорошего художника главное – вовремя остановиться». Если вы установили и настроили программное обеспечение, которое было действительно необходимо, и оно работает, не следует больше ничего предпринимать. Просто закройте сессию. Дополнительные эксперименты с настройками из чистого любопытства ни к чему хорошему, как правило, не приводят.

Установка дополнительных расширений

В данном случае мы установим модуль EnableRootSSH, чтобы получить возможность удаленного управления хранилищем по SSH и добраться непосредственно до самой операционной системы. Далее мы сможем устанавливать программные пакеты для Debian и выполнять команды непосредственно из Linux-оболочки (shell).

Перед установкой данный модуль необходимо скачать по адресу: http://www.readynas.com/download/addons/x86/4.2/EnableRootSSH_1.0-x86.bin (на момент написания статьи была доступна версия 1.0).

Установка производится посредством FrontView (веб-интерфейс управления) сетевым хранилищем) из меню «Система -> Обновления» вкладка «Локальный». Нажав на кнопку «Обзор», находим на диске наш предварительно скачанный установочный бинарник EnableRootSSH и загружаем его в хранилище (см. рис. 1).

Рисунок 1. Установка EnableRootSSH

Рисунок 1. Установка EnableRootSSH

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

После того как устанавливаемый вами модуль будет загружен и проверен, система выведет окно, подтверждающее корректность модуля, и разрешит выполнить обновление системы (см. рис. 2).

Рисунок 2. Запрос на обновление системы

Рисунок 2. Запрос на обновление системы

Далее появляется сообщение «Для продолжения обновления, пожалуйста, перезагрузите NAS)». После загрузки системы можно проверить возможность входа в систему:

berezhnoy@linux-1zti:~>ssh root@10.0.0.86

The authenticity of host "10.0.0.86 (10.0.0.86)" can"t be established.
RSA key fingerprint is 2c:88:b8:1d:ff:9e:5a:d8:3f:ab:66:38:19:cd:3d:5e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added "10.0.0.86" (RSA) to the list of known hosts.
root@10.0.0.86"s password:
Last login: Mon Sep 21 06:48:01 2009 from linux-6922.vai.lan on pts/0 
Linux nas-EA-17-91 2.6.25 #1 SMP Thu Sep 4 15:24:58 PDT 2008 i686 GNU/Linux

Внимание! Пароль для SSH будет тот же, что и у пользователя admin, который действовал на момент установки EnableRootSSH. Далее вы можете изменять отдельно пароль для root (например, командой passwd) и отдельно пароль пользователя admin из веб-интерфейса FrontView.

Установка дополнительных пакетов для Linux Debian

Прежде чем выполнять какие-либо работы, определимся с конечной целью. Допустим, в конечном итоге мы хотим видеть наше хранилище с установленным антивирусом ClamAV и настроенной системой сканирования два раза в сутки при помощи скриптов. Вирусы, «живущие» на рабочих станциях под управлением Windows, не смогут навредить сетевому хранилищу на UNIX-like операционной системе. Но это не отменяет необходимости антивирусной проверки содержимого общих каталогов, которые могут стать источником размножения malware.

Проводим синхронизацию индексов пакетов с источником

Установка пакетов с Linux Debian при помощи менеджера пакетов apt-get. Особенность установки в данной версии заключается в том, что, если мы просто введем команду:

apt-get install clamav

то будет установлена устаревшая версия ClamAV 0.90, не способная работать в данной конфигурации.

Чтобы инсталляция прошла гладко и в итоге была установлена работоспособная версия ClamAV, обратимся к страничке с документацией по установке этого пакета: http://www.clamav.net/download/packages/packages-linux.

Из описания становится понятно, что установки пакета необходимо добавить в файл описаний репозиториев /etc/apt/sources.list дополнительную строку, указывающую на репозиторий с обновленной рабочей версией.

Выполняем резервное копирование sources.list (на всякий случай):

#cp /etc/apt/sources.list /etc/apt/sources.list.old

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

#echo deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free >> /etc/apt/sources.list

В итоге в файл должно быть записано следующее:

# cat /etc/apt/sources.list

#deb http://www.backports.org/debian etch-backports main
deb http://ftp.debian.org/debian etch main
deb http://security.debian.org/debian-security etch/updates main
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free

Выполним синхронизацию файлов описаний пакетов, указанных в /etc/apt/sources.list с их источниками. Другими словами, обновить локальный кэш пакетов, выполнив команду:

nas-EA-17-91:~# apt-get update

В ответ система выдаст следующую информацию:

Get:1 http://volatile.debian.org etch/volatile Release.gpg [189B]
Get:2 http://ftp.debian.org etch Release.gpg [1032B]
Get:3 http://volatile.debian.org etch/volatile Release [40.7kB]
Get:4 http://ftp.debian.org etch Release [67.8kB]
Get:5 http://security.debian.org etch/updates Release.gpg [835B]
Get:6 http://security.debian.org etch/updates Release [37.6kB]
Ign http://ftp.debian.org etch Release
Get:7 http://volatile.debian.org etch/volatile/main Packages [6775B]
Get:8 http://ftp.debian.org etch/main Packages [5620kB]
Get:9 http://volatile.debian.org etch/volatile/contrib Packages [513B]
Get:10 http://volatile.debian.org etch/volatile/non-free Packages [20B]
Ign http://security.debian.org etch/updates Release
Get:11 http://security.debian.org etch/updates/main Packages [460kB]
Fetched 6236kB in 2s (2527kB/s)
Reading package lists... Done
W: GPG error: http://ftp.debian.org etch Release: The following signatures couldn"t
be verified because the public key is not available: NO_PUBKEY 9AA38DCD55BE302B
W: GPG error: http://security.debian.org etch/updates Release: The following
signatures couldn"t be verified because the public key is not available:
NO_PUBKEY 9AA38DCD55BE302B
W: You may want to run apt-get update to correct these problems

Обратите внимание на ошибку the public key is not available при подключении к репозиториям http://ftp.debian.org etch и http://security.debian.org etch. Дело в том, что для подключения этого репозитория необходимо для начала получить gpg-ключ. Чтобы это сделать, сначала импортируем ключ с данным ID с сервера сертификатов. Адрес сервера wwwkeys.eu.pgp.net указывается посредством директивы –keyserver:

# gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 9AA38DCD55BE302B

Ответ системы:

gpg: directory `/root/.gnupg" created
gpg: can"t open `/gnupg/options.skel": No such file or directory
gpg: keyring `/root/.gnupg/secring.gpg" created
gpg: keyring `/root/.gnupg/pubring.gpg" created
gpg: requesting key 55BE302B from hkp server wwwkeys.eu.pgp.net
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 55BE302B: public key "Debian Archive Automatic Signing Key (5.0/lenny) " imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:        imported: 1 (RSA: 1)

Импортируем полученный ключик в менеджер пакетов:

# gpg --armor --export 9AA38DCD55BE302B | apt-key add -

Ответ системы:

OK

Теперь с чистой совестью снова вводим:

# apt-get update

И получаем информацию о том, что синхронизация прошла без ошибок:

Get:1 http://ftp.debian.org etch Release.gpg [1032B]
Get:2 http://security.debian.org etch/updates Release.gpg [835B]
Hit http://ftp.debian.org etch Release
Hit http://security.debian.org etch/updates Release
Get:3 http://volatile.debian.org etch/volatile Release.gpg [189B]
Ign http://ftp.debian.org etch/main Packages/DiffIndex
Ign http://security.debian.org etch/updates/main Packages/DiffIndex
Hit http://volatile.debian.org etch/volatile Release
Hit http://ftp.debian.org etch/main Packages
Hit http://security.debian.org etch/updates/main Packages
Ign http://volatile.debian.org etch/volatile/main Packages/DiffIndex
Ign http://volatile.debian.org etch/volatile/contrib Packages/DiffIndex
Ign http://volatile.debian.org etch/volatile/non-free Packages/DiffIndex
Hit http://volatile.debian.org etch/volatile/main Packages
Hit http://volatile.debian.org etch/volatile/contrib Packages
Hit http://volatile.debian.org etch/volatile/non-free Packages
Fetched 1868B in 0s (3647B/s)
Reading package lists... Done

Для удобства дальнейшего редактирования и манипулирования файлами установим файловый менеджер Midnight Commander, заодно проверим работу установщика пакетов.

# apt-get install mc

Установка ClamAV

# gpg --armor --export 9AA38DCD55BE302B | apt-key add -

Ответ системы:

Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
 clamav-base clamav-freshclam libclamav6
Suggested packages:
 clamav-docs libclamunrar6
The following NEW packages will be installed:
 clamav clamav-base clamav-freshclam libclamav6
0 upgraded, 4 newly installed, 0 to remove and 39 not upgraded.
Need to get 23.4MB of archives.

Далее программа-инсталлятор задаст вам несколько вопросов:

After unpacking 24.8MB of additional disk space will be used.
Do you want to continue [Y/n]?

«После распаковки будет использовано 24,8 Мб дополнительного дискового пространства. Вы хотите продолжить?»

После чего система выдаст сообщения об успешном скачивании и установке пакетов:

Get:1 http://volatile.debian.org etch/volatile/main libclamav6 0.95.2+dfsg-0volatile1 [579kB]
Get:2 http://volatile.debian.org etch/volatile/main clamav-base 0.95.2+dfsg-0volatile1 [22.3MB]
Get:3 http://volatile.debian.org etch/volatile/main clamav-freshclam 0.95.2+dfsg-0volatile1 [278kB]
Get:4 http://volatile.debian.org etch/volatile/main clamav 0.95.2+dfsg-0volatile1 [268kB]
Fetched 23.4MB in 4s (5268kB/s) 

debconf: delaying package configuration, since apt-utils is not installed
Selecting previously deselected package libclamav6.
(Reading database ... 16978 files and directories currently installed.)
Unpacking libclamav6 (from .../libclamav6_0.95.2+dfsg-0volatile1_i386.deb) ...
Selecting previously deselected package clamav-base.
Unpacking clamav-base (from .../clamav-base_0.95.2+dfsg-0volatile1_all.deb) ...

Selecting previously deselected package clamav-freshclam.
Unpacking clamav-freshclam (from .../clamav-freshclam_0.95.2+dfsg-0volatile1_i386.deb) ... 
Selecting previously deselected package clamav.

Unpacking clamav (from .../clamav_0.95.2+dfsg-0volatile1_i386.deb) ...
Setting up libclamav6 (0.95.2+dfsg-0volatile1) ...

Setting up clamav-base (0.95.2+dfsg-0volatile1) ...

Setting up clamav-freshclam (0.95.2+dfsg-0volatile1) ...
Starting ClamAV virus database updater: freshclam.

Setting up clamav (0.95.2+dfsg-0volatile1) ...

Собственно, и вся установка. Обратите внимание на номер версии 0.95.2 (на момент написания статьи). Это то, что нужно.

Окончательная настройка ClamAV

В случае с обычным файл-сервером можно без каких-либо дополнительных настроек переходить к написанию скриптов для проверки. Но в сетевых хранилищах операционная система устанавливается на встроенный flash-носитель, имеющий ограниченное количество циклов перезаписей. Поэтому необходимо перенести перезаписываемые файлы (такие как: журналы отчетов о работе программ, антивирусные базы и т.д.) на дисковую подсистему, благо места у нас там, как говорится, хоть танцуй.

Первоначально создадим каталог для хранения часто обновляемых файлов. Дисковая подсистема по умолчанию примонтирована в каталог /c. Уточнить это можно командой mount без параметров:

# mount

Результат выполнения:

/dev/md0 on / type ext3 (rw,noatime)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw)
tmpfs on /ramfs type ramfs (rw)
tmpfs on /USB type tmpfs (rw,size=16k)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/c/c on /c type ext3 (rw,noatime,acl,user_xattr,usrquota,grpquota)

Поэтому создаем «служебный» каталог /c/system/ и в нем каталог /c/system/clamav:

# mkdir -p /c/system/clamav

Для доступа меняем владельца каталога /c/system/clamav и его права для обеспечения доступа нашего антивируса:

# chown clamav:clamav /c/system/clamav
# chmod 770 /c/system/clamav

Теперь необходимо подредактировать файлы конфигурации, чтобы система сохраняла свои файлы по новому адресу.

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

# cp /etc/clamav/freshclam.conf /etc/clamav/freshclam.conf.old
# cp /etc/clamav/clamd.conf /etc/clamav/clamd.conf.old

Начнем с freshclam.conf, отвечающего за обновление антивирусной базы.

Находим в файле следующие строки:

UpdateLogFile /var/log/clamav/freshclam.log
DatabaseDirectory /var/lib/clamav/
PidFile /var/run/clamav/freshclam.pid

и изменяем их соответственно на:

UpdateLogFile /c/system/clamav/freshclam.log
DatabaseDirectory /c/system/clamav/
PidFile /c/system/clamav/freshclam.pid

Аналогичные изменения производим в основном конфигурационном файле clamd.conf. Значения:

LocalSocket /var/run/clamav/clamd.ctl
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /var/lib/clamav
LogFile /var/log/clamav/clamav.log

меняем на:

LocalSocket /c/system/clamav/clamd.ctl
PidFile /c/system/clamav/clamd.pid
DatabaseDirectory /c/system/clamav
LogFile /c/system/clamav/clamav.log

Запускаем антивирусное обновление:

# freshclam

Результат:

ClamAV update process started at Wed Sep 23 05:36:21 2009
Downloading main.cvd [100%]
main.cvd updated (version: 51, sigs: 545035, f-level: 42, builder: sven)
Downloading daily.cvd [100%]
daily.cvd updated (version: 9825, sigs: 79288, f-level: 43, builder: ccordes)
Database updated (624323 signatures) from db.local.clamav.net (IP: 194.186.47.19)
WARNING: Clamd was NOT notified: Can"t connect to clamd through /c/system/clamav/clamd.ctl
connect(): No such file or director

Последние три строчки системного сообщения появились из-за того, что демон clamd не запущен. В настоящий момент нам это и не нужно, так как дальше будет настроен запуск антивирусного сканера по расписанию.

Скрипты для антивирусной проверки

Допустим, мы хотим организовать антивирусную проверку дважды в день. В проверке нуждаются каталоги: Users, Document и Public.

Пусть наш файл называется /opt/everydayscan.sh. Рассмотрим его содержимое. Ниже приводится содержимое скрипта с дополнительными комментариями:

//Создаем импровизированный log-файл для скрипта и пишем в него комментарий ClamAV VIRUS BASE UPDATES.
//Данный файл будет перезаписываться каждый раз, когда запускается проверка

echo ClamAV VIRUS BASE UPDATES > /c/system/everydayscan.log 
//Обновляем ClamAV, результаты вывода добавляем в лог
freshclam >> /c/system/nightscan.log

//Проверяем на вирусы общие ресурсы: Users, Documents, Public
clamscan --recursive=yes --detect-broken=yes --phishing-ssl=yes --phishing-cloak=yes --move=/c/quarantine -i /c/users >> /c/system/nightscan.log
clamscan --recursive=yes --detect-broken=yes --phishing-ssl=yes --phishing-cloak=yes --move=/c/quarantine -i /c/document >> /c/system/nightscan.log
clamscan --recursive=yes --detect-broken=yes --phishing-ssl=yes --phishing-cloak=yes --move=/c/quarantine -i /c/public >> /c/system/nightscan.log

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

  • recursive=yes – проверять подкаталоги;
  • detect-broken=yes – означает проверку на разрушенные исполняемые модули (под которыми часто маскируются вирусы и другие вредоносные программы);
  • phishing-cloak=yes – всегда блокировать скрытые URL;
  • phishing-ssl=yes – всегда блокировать несоответствия SSL в URL;
  • move=/c/quarantine – перемещать зараженные объекты в директорию /c/quarantine, то есть в каталог quarantine на общем ресурсе.

Как уже говорилось выше, наш скрипт будет запускаться два раза в сутки: ночью в 23:59 и днем в обеденный перерыв в 13:59. Для этого добавляем в /etc/crontab следующие строки:

59 23 * * * root /opt/everydayscan.sh
59 13 * * * root /opt/everydayscan.sh

и перезапускаем демон cron, отвечающий за запуск запланированных заданий:

#/etc/init.d/cron restart

Ответ системы:

Restarting periodic command scheduler: crond.

Настройка антивирусной системы завершена.

Пример настройки резервного копирования

Что еще можно сделать в плане улучшения работы нашего хранилища?

Можно организовать резервное копирование при помощи команды tar. Дело в том, что штатная система резервного копирования, управляемая через FrontView, копирует файлы без сжатия. Неплохо, но расточительно. Используя команду tar с ключом -z, можно сжать архивную копию в один файл меньшего размера, который потом легко можно переписать на другой сетевой ресурс, ленту и т.д. (Для поклонников архиватора bzip2 возможно применение ключа -j для использования bzip2 вместе с tar.)

Рассмотрим пример. В общем разделе «backup» создаем сжатый архивный файл user.tar.gz, содержащий информацию каталога users:

#tar -czf /c/backup/user.tar.gz /c/users

Получившийся архив можно переписать на внешний ресурс или съемный носитель.

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

***

Использование доступа по SSH в режиме командной строки (shell) может значительно увеличить функциональный диапазон сетевых хранилищ от NETGEAR, в частности ReadyNAS Pro. Возможности при этом открываются весьма значительные. Можно устанавливать программы, редактировать скрытые конфигурационные файлы, напрямую перезаписывать файлы и т.д. Естественно, к таким тонким настройкам необходимо подходить вдумчиво и с осторожностью. Но если есть желание, знания и опыт, возможно, стоит рискнуть и использовать нестандартный подход для получения новых функций.

  1. Бережной А. Расширение возможностей при работе с сетевыми хранилищами NETGEAR ReadyNAS. //Системный администратор, №12, 2009 г. – С. 40-43.
  2. Бережной А. Альтернатива файловому серверу это – дисковое хранилище NETGEAR ReadyNAS. //Системный администратор, №7, 2009 г. – С. 14-20.
  3. Официальный сайт антивируса ClamAV – http://www.clamav.org.
  4. Сайт сообщества Debian Linux – http://www.debian.org.

Комментарии отсутствуют

Добавить комментарий

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

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru