понедельник, 28 декабря 2015 г.

Dovecot: немного теории и первоначальные настройки

Почтовые серверы используют протокол SMTP для взаимодействия между собой и доставки почты. Почтовые клиенты (например Outlook или Thunderbird), как правило, используют SMTP для отправки почты. Тем не менее, SMTP не предназначен для получения почты, только для отправки. Таким образом, MTA (mail transfer agents), которые занимаются транспортировкой писем, полученных от клиентов, не имеют ничего общего с получением почты.

Для получения почты используются  POP3 и IMAP. При этом IMAP является гораздо более сложным протоколом. POP3 ждет, пока пользователь успешно залогинится, и затем
загружает непрочитанные входящие сообщения. В зависимости от запроса клиента, переданные пользователю сообщения удаляются, или отмечаются как прочитанные.
В свою очередь IMAP сервер хранит все письма, следовательно рекомендуется устанавливать квоту, чтобы пользователи периодически очищали ящик. Когда пользоватесь создает

четверг, 19 ноября 2015 г.

Защита системы


Супер сервер (super server) - сервер, прослушивающий сетевые соединения вместо другого сервера, и передающий ему управление, если соединение устанавливается. Использование супер севрера может быть удобно, если он управляет несколькими серверами, т.к. это уменьшает нагрузку на управляемые серверы и позволяет централизованно управлять настройками безопасности. Наиболее популярные супер серверы inetd и xinetd.

Настройки inet.d в файле /etc/inetd.conf и директории /etc/inetd.d

Пример настройки для ftp  сервера: 
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd -l
Данная строка состоит из следующих полей:
-имя службы
-тип сокета: stream - надежная двунаправленная передача, dgram - менее надежная передача с меньшим количеством служебной информации, raw - сырой сокет
-протокол  - как правило tcp или udp
-wait/no wait - для сокетов типа dgram эта запись определяет поведение сервера: подключиться к клиенту и освободить сокет (no wait) или обработать все пакеты и отключиться по таймауту (wait). Для других типов сокетов следует указывать nowait.
-пользователь - пользователь от имени которого запускается сервер. Всегда, когда это возможно, серверы следует запускать от имени непривилегированного пользователя.
-имя сервера - в примере это /usr/sbin/tcpd то есть исполняемый файл tcp-wrapper'а
-параметры - все значения указанные после имени сервера являются параметрами, передаваемыми серверу. Если используется tcp-wrapper ему в качестве параметра передается имя реального сервера, в примере это /usr/sbin/in.ftpd

среда, 4 ноября 2015 г.

Написание скриптов, настройка почты, использование баз данных


Задать переменную среды: HOSTNAME=carson.example.com
Сделать переменную среды доступной для пользователей: export HOSTNAME
Вывести переменную среды на экран: echo $HOSTNAME
Задать переменную среды для отдельной программы: env DISPLAY=seeker.example.com:0.0 nedit (env принимает опции: -i запуск с пустой средой, -u - удалить значение определенной переменной).
Наиболее распространенные переменные среды:
-USER, USERNAME - имя пользователя 
-SHELL - путь к текущей командной строке
-PWD - текущая рабочая директория
-HOSTNAME - текущее TCP/IP имя хоста
-PATH - директории, в которых будет производиться поиск исполняемых файлов
-HOME - путь к домашней директории пользователя
-MAIL - путь к временным файла почты (mail spool)
-LANG - текущий язык
-TZ - часовой пояс
-LD_LIBRARY_PATH - директории в которых будет проиводиться поиск файлов библиотек
-PS1 - сообщение по умолчанию в командной строке. Как правило содержит перменные, такие как \u (пользователь), \h (имя хоста), \W (рабочая директория)
-TERM - имя текущего типа терминала (например xterm)
-DISPLAY - дисплей, используемый Х сервером. Как правило 0:0 (первый дисплей). Если на компьютере запущено несколько сессий Х, у каждой будет свой номер дисплея, например 0:0 у первой, 1:0 у второй и т.д.
-EDITOR - программа, которая запускается при вызове другой программой текстового редактора (обратить внимание: графические редакторы могут вызывать проблемы, если запускать их в текстовом режиме)

вторник, 6 октября 2015 г.

Уменьшить занимаемое место на диске UniFi + mFi

При установке контроллера UniFi я сильно удивился тому, свободное место на диске уменьшлось больше чем на 4 гигабайта, а когда добавил контроллер mFi еще на 4 и все система рухнула из-за недостатка места на диске (на виртуалку было выделено 10Гб).

Разобравшись, удалось уменьшить занимаемое место на диске до 3.5Гб (включая файлы ОС. В качестве ОС используется Debian без графического интерфейса). Текущая конфигурация: виртуальный сервер с 1 процессором, 512Гб оперативной памяти. Средняя загрузка процессора и памяти в пределах 10%. Контроллеры держат 8 точек доступа и 1 датчик температуры. На точках в рабочее время висит 3-8 клиентов (обычно пределах 50 в общем)

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

Делаем:

1. Устанавливаем mongo без установки  UniFi:

apt-get install mongodb

2. После установки mongo создаст дефолтный экземпляр базы данных и зарезервирует место под журналы (порядка 3 гигабайт). Для небольшого количества точек это слишком много. Поэтому редактируем файл настроек  /etc/mongodb.conf. Добавляем строку:
smallfiles = true
раскомментируем строку:
noprealloc = true

четверг, 1 октября 2015 г.

Администрирование системы

Администрирование системы
Настройки групп хранятся в файле /etc/group
Пользователь может быть членом нескольких групп, но по умолчанию каждому пользователю назначается первичная (primary) группа. Данные о первичных группах пользователей хранятся в файле /etc/passwd Когда пользователь авторизуется на компьютере, он рассматривается как член первичной группы. Когда пользователь создает файлы или запускает программы, эти файлы и программы ассоциируются с первичной группой (тем не менее пользователь может получить доступ к файлам других групп, являясь членом этой группы и имея соответствующие права. не обязательно, чтобы эта группа была первичной). Чтобы запустить программу или создать файл с группой, отличной от первичной, следует выполнить команду newgrp, чтобы сменить текущее членство в группе. Также можно изменить группу, связанную с конкретным файлом командами chgrp и chown.

В линукс пользователи и группы определяются с помощью ID (UID и GID). UID и GID с 0 по 99 зарезервированы системой для внутреннего использоания. 0 соответствует root. Обычно аккаунты полльзователей начинаются с 500 или 1000. Следует избегать повторного использования ID, т.к. если файлы старого пользователя не удалены, новый пользователь может стать их владельцем. Возможно создать несколько пользователей и/или групп с одинаковым ID. Фактически это будут разные пользователи с разными паролями и домашними директориями, но в плане прав доступа к файлам система будет рассматривать их как одного пользователя (группу). Злоумышленники часто создают аккаунт с UID 0, чтобы получить права суперпользователя. Если в системе появился подозрительный аккаунт с UID 0 - система скорее всего скомпрометирована.

вторник, 8 сентября 2015 г.

Настройка оконной системы X, локализаций и печати.



Реализации Х-сервера:
-XFree86 - основной сервер до 2008г
-X.org-X11 - большинство дистрибутивов перешло на этот сервер в 2004году.
-Accelerated-X - коммерческая версия.

Утилиты для настройки X-сервера:
XFree86 -configure
Xorg -configure
Также в разных дистрибутивах существует собственные утилиты.
Файл настроек: /etc/X11/xorg.conf

Для того, чтобы отключить Х сервер можно перейти на уровнь запуска, где он не работает (telinit 3)
В Debian-подобных дистрибутивах уровни запуска не используются для того чтобы останавливать или запускать Х. Для отключения графической оболочки следует ввести команду /etc/init.d/xdm stop (возможно понадобится заменить xdm на gdm, kdm, mdm, или lightdm)
После того, как настройки Х отредактированы, можно переключиться обратно в графический режим командой telinit 5 либо startx.
Также процесс Х можно завершить сочетанием клавиш Ctrl+Alt+Backspace, или командой kill (ps ax | grep X для поиска ID)
При конфигурировании Х лучшим подходом является поиск неработающих опций и их отключение.

Настройки клавиатуры в секции "input device". Можно настроить драйвер, раскладку, повтор символов.

пятница, 14 августа 2015 г.

Об укладке кабелей

Красиво уложенные кабели:
http://royal.pingdom.com/2008/01/24/when-data-center-cabling-becomes-art/

Инструмент для укладки:
http://www.cableorganizer.com/panduit/cable-organizer-tool/
Использование:
http://www.youtube.com/watch?v=4kPpcCxhgNk

четверг, 30 июля 2015 г.

Загрузка Linux

Существует 2 вариант загрузки системы:
1. Первичный загрузчик просматривает таблицу разделов, находит раздел, помеченный как загрузочный и выолняет код в загрузочном секторе данного раздела. Данный загрузочный сектор содержит вторичный загрузчик, который в свою очередь ищет ядро системы, загружает и выполняет его.
2. Первичный загрузчик ищет ядро системы, загружает и выполняет его.

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

EFI в отличие от BIOS полагается не на код в загрузочном секторе, а на загрузчик в разделе ESP. В линукс ESP обычно монтируется в /boot/efi Загрузчик содержится в файле с расширением .efi и находится в отдельной поддиректории название которой совпадает с названием ОС. Это позволяет устанавливать параллельно две или более ОС.

четверг, 16 июля 2015 г.

Управление файлами в Linux

Рекомендуется использовать в именах файлов только буквы, цифры и символы (.), (-), (_).
Пробелы в именах файлов при  работе в командной строке должны предваряться символом "\" или имя файла должно быть взято в кавычки.

Вывести список файлов в директории: ls -a (отобразить все файлы, втч с названием, начинающимся с точки), --color (элементы списка разных типов (файлы, директории, символические ссылки) обозначаются разыми цветами), -l (отобразить разрешения, владельца, группу, размер, дату создания), -F (отобразить типы файлов: / - директория, @ - символическая ссылка, = - сокет, | - пайп)

Копировать файлы: cp -f  (перезапись без предупреждения), -i (выдвать запрос на перезапись), -p (сохранять владельца и разрешения - по умолчанию владельцем скопированного файла становится пользователь от имени которого выполняется команда), -R (копировать поддиректории), -a (аналог -R, но сохраняет владельца, и копирует линки а не файлы, на которые они ссылаются),  -u (файл копируется только если оригинал новее конечного файла или конечный файл не существует)

вторник, 14 июля 2015 г.

Включение теневого копирования в Win7 скриптом

Теневое копирование поддерживается только для NTFS
Можно исключить файлы из области копирования, ключ рееста FilesNotToSnapshot
По умолчанию делается 64 копии, после чегоони удаляются и процесс начинается снова. Можно увеличить до 512, ключ рееста MaxShadowCopies
Увеличить объем теневого тома: vssadmin resize shadowstorage

Всего требуется 3 файла в одной директории: vss.bat, vss.ps1, sch.bat
Запускать vss.bat с правами администратора

vss.bat (скрипт для запуска):
@echo off
Разрешаем выполнение неподписанных скриптов powershell
start /wait powershell.exe -WindowStyle Hidden Set-ExecutionPolicy RemoteSigned
Запускам файл vss.ps1. %~dp0 указывает на директорию из которой запущен скрипт. Ключ -WindowStyle Hidden прячет окно powershell
start /wait powershell.exe -WindowStyle Hidden %~dp0vss.ps1
cmd.exe /c %~dp0sch.bat
exit

четверг, 9 июля 2015 г.

Немного о Postgre SQL

Записи в таблице называются кортежами  (tuples)
Кортеж - упорядоченная группа компонентов или атрибутов, каждый из которых имеет определенный тип.
Все кортежи дожны иметь одинаковое количество типов компонентов.
В таблице не должно быть идентичных кортежей.
Каждый атрибут должен быть атомарным, т.е. не являться другой записью или или списком атрибутов.
Атрибут опеределяющий отдельную запись в таблице называется первичным ключом.

SQL (обычно произносится как "sequel") - язык запросв, разработанный IBM. Т.к. оригинальный SQL не включает себя ряд команд, необходимых для администрирования баз данный, появляются вариации SQL, реализованные разными разработчиками (Oracle, MS и тд)

Типы команд SQL
-Data manipulation language (DML) - команды для ввода, удаления, обновления и выборки данных из базы
-Data definition language (DDL) - команды для создания таблиц, определения взаимосвязей.
-Data control Language (DCL) - команды для контроля разрешений и определения прав доступа.


Управление аппаратной частью в Linux

Managing hardware

Посмотреть информацию о процессоре и оперативной памяти компьютера:
cat /proc/meminfo
cat /proc/cpuinfo

Посмотреть информацию о сетевых устройствах:
lshw -C network

Прошивка (firmware) инициализирует оборудование материнской платы и контролирует процесс загрузки. В прошлом, большинство компьютеров с архитектурой  х86 и х86_64 использовало BIOS. Начиная с 2011  года получил распространение новый тип прошивки, известный как Extensible Firmware Interface (EFI).

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

Управление программами в Linux

RPM-дистрибутивы: Fedora - бесплатный вариант для домашних пользователей, RHEL - платный для энтерпрайзов, CentOS - бесплатный для энтерпрайзов
Именование RPM-пакетов: packagename-a.b.c-x.arch.rpm, где packagename - имя пакета, a.b.c - номер версии, x - номер билда (изменения, внесенные теми, кто собирал пакет, а не авторами программы, например изменения конфигурационных файлов. иногда к номеру билда добавляют буквы, чтобы различать билды,собранные разными группами), arch - архитектура.
Ключи RPM: -i установить, -e удалить, -l отобразить файлы в пакете, -h отобразить прогресс установки, -qi отобразить информацию о пакете
Собрать пакет из исходников: rmpbuild
Извлечь содержимое RPM-пакета: rmp2cpio (RPM это, как правил, модифицированный cpio архив, сначала конвертирует в стандартный cpio), cpio (затем извлекаем)
Паектный менеджер: yum
Основной файл конфигурации RPM: /usr/lib/rpm/rpmrc, Yum: /etc/yum.conf (основные опции), /etc/yum.repos.d/ (репозитории)


Ключи dpkg:
-i установить, --configure запустить post-installation скрипты (переконфигурирует пакет), -r удалить (с сохранением конфигурационных файлов), -P удалить (вместе с конфигурационными файлами), --get-selections (-l) показать установленные пакеты -L список файлов относящихся к пакету -C поиск незавершенных установок --no-act проверка зависимостей и конфликтов без устновки

Основы командной строки в Linux

cd - сменить рабочую директорию
~ - сокращение, обозначает домашнюю директорию пользователя
pwd - выводит на экран текущую рабочую директорию
echo <> - выодит на экран текст <>. Полезно для скриптов, а также для просмотра переменных среды.
time <command> - сколько требуется команде для выполнения

exec <команда> запустить команду, при этом команда заменяет консоль
<команда>& -запустить команду в фоновом режиме

В некоторых случаях, внутренние команды (встроенные в bash) и внешние команды могут выдавать разные результаты для однихи тех же команд и принимать разные опции.
Если директории, где находится программа нет в переменной среды PATH, нужно прописывать полный путь к этой программе (например /home/user/myprog вместо ./myprog)
Следует избегать добавления в PATH для рута директорий с  графическими и другими программами, предназначенными для запуска пользователем, а также не добавлять в PATH рута текущую директорию (./), т.к. это позволяет запустить потенциально опасные программы под видом системных.

среда, 8 июля 2015 г.

Небольшой ликбез по ленточным накопителям 2

Компрессия данных на ленточных носителях.

Компрессия позволяет хранить больше данных за счет более эффективного кодирования последовательностей данных (patterns of input characters). Чем чаще повторяются те или иные последовательности, тем более эффективно сжимаются данные, следовательно, эффективность компресии напрямую зависит от сжимаемых данных.
Для ленточных приводов, компрессия, как правило, реализуется на аппаратном уровне.

Если в характеристиках носителя указана емкость при условии сжатия (например 320 GB (with a 2:1 compression ratio)), это не означает, что на носитель получится записать именно столько информации. Объем может быть больше или меньше, в зависимости от записываемых данных. Поэтому следует ориентироваться на нативный (native) объем.

Следует обратить внимание на то, что данные со случайными битовыми последовательностями (random bit strings), зашифрованные или предварительно сжатые, будут занимать не намного меньше места после компрессии. Для данных с высокой степенью случайности (highly random data), объем данных после компрессии может даже увеличиться.

Небольшой ликбез по ленточным накопителям 1

Изначально для записи на ленту использовалась линейная (linear) технология. В середине 80-х начала применяться также спиральная (helical) технология, изначально разработанная для видеозаписи.
Приводы использующие линейную технологию записывают дорожку по всей длине ленты, когда достигается конец ленты, позиция головок меняется и запись продолжается, лента при этом двигается в обратную сторону. Процесс повторяется, пока лента не заполнится. Головки в приводах, использующих линейную технологию записи не двигаются.
В приводах, использующих спиральную технологию, лента оборачивается вокруг вращающегося барабана, на котором расположены пишущие и читающие головки. В спиральных приводах, в сравнении с линейными, сильно возрастает нагрузка на ленту, но плотность записи у них намного выше (соответственно стоимость носителя ниже). Также спиральные приводы имеют более низкую скорость передачи данных, менне эффективный доступ к случайным данным, повышенные требования к обслуживанию и пониженную целостность данных. Еще одним значительным улучшением является использование вспомогательных дорожек, которые записываются при производстве ленты и позволяют точно располагать головки во время движения ленты.

За прошедшие декады линейные системы сильно улучшились в плане плотности хранения и удобства с появлением съемных картриджей (QIC, DLT и Linear Tape Open - LTO, используемые в настоящий момент), в спиральных системах  повысилась скорость передачи данных, а также технология коррекции ошибок.