Изменение размера шифрованного LUKS раздела на LVM

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

Схема такова:

  • отмонтировать зашифрованный раздел;
  • закрыть шифрующее LUKS устройство;
  • растянуть раздел;
  • открыть шифрующее LUKS устройство;
  • растянуть шифрующее LUKS устройство;
  • проверить файловую систему
  • примонтировать зашифрованный раздел обратно

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

Continue reading Изменение размера шифрованного LUKS раздела на LVM

Настройка OpenVPN на Windows

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

Загрузка и установка OpenVPN

Загрузите инсталятор с сайта openvpn.net (выбирайте свежую версию, сейчас это OpenVPN 2.3.5 — выпущенная 2014.10.28) и запустите его на компьютере который будет выступать сервером и произведите установку. Более ранние версии ставить не рекомендуется по причине наличия серьёзной уязвимости в пакете OpenSSL.
Произведите такю же установку на всех комьпютерах которые будут выступать в роли клиентов.

Continue reading Настройка OpenVPN на Windows

Segfault после обновления Skype 4.2.0.13 на 4.3.0.37

После обновления Skype для Linux с версии 4.2.0.13 на версию 4.3.0.37 я не смог подключаться со старыми профилями. Skype вываливается по segmentation fault. Если создать новы профиль то скайп работает. Но хотелось сохранить историю чатов. Мне помогло удаление из базы истории загруженных файлов.

$ sqlite3 ~/.Skype/[skypeusername]/main.db
sqlite> delete from Messages where type=68;
sqlite> .quit
Внимание!Предварительно нужно сделать резервную копию всего профиля.

Установка RAR в Fedora

В репозиториях Fedora и Centos нет архиватора RAR. Если вам нужно только рапаковывать RAR архивы то для этого достаточно установить пакет unrar из репозитория RPM Fusion YUM. Если же вам нужно создавать RAR архивы то нужно загрузить и установить полный пакет RAR из DAG.
Continue reading Установка RAR в Fedora

Удаление списка ожидающих заданий bacula

Случается, что на сторадже заканчивается место до того как bacula соберётся удалять старые файлы. В результате вы получаете одно оповещение, что задача не была выполнена и второе от мониторинга, что закончилось место. Если задача одна-две, это не проблема. Удалили руками и всё в порядке. Но ситуация меняется когда задач много и тем более вы не среагировали за период более чем один цикл бэкапа. Очередь закупоривается и пока она не будет выполнена целиком новые задания не будут выполнены. Данный скрипт позволяет по очереди удалить все задания начиная с последнего по очереди, чтобы дойдя до первого не стартовало следующее за ним.

#!/bin/bash

for ID in `echo 'status dir running' | bconsole | sed -n '/Running Jobs:/,/^$/p' | sed -n '/^=\+$/,/^=\+$/p' | grep -v '^=\+$' | awk '/is waiting/{print $1}' | sed -e '1!G;h;$!d'` ; do
    if [[ ! ${ID} =~ ^[0-9]+$ ]] ; then
      echo "JobID \"${ID}\" is not a number! Skipping."
    else
      echo -e "Do you want to kill waiting job ${ID}"
      read -p 'Type YES if you really want to delete job: ' input
      if [[ ! ${input} =~ ^[Yy]$  ]] ; then
        echo -e "Skip job ${ID}.\n"
        continue
      else
        echo "cancel jobid=${ID}" | bconsole
      fi
    fi
done

Получение списка соответствия портов рейд контроллера дискам в системе

Имеем RAID контроллер который экспортирует свои диски в систему как набор дисков (JBOD).
Нужно получить какой физический порт какому устройству в системе соответствует.

Пример был сделан для контроллера 3ware и CentOS release 6.5 (Final). Но с небольшими поправками подойдёт и для других контроллеров.

Unit  UnitType  Status         %RCmpl  %V/I/M  Stripe  Size(GB)  Cache  AVrfy
------------------------------------------------------------------------------
u0    JBOD      OK             -       -       -       931.513   Ri     OFF
u1    JBOD      OK             -       -       -       1863.02   Ri     OFF
u2    JBOD      OK             -       -       -       1863.02   Ri     OFF
u3    JBOD      OK             -       -       -       1863.02   Ri     OFF

VPort Status         Unit Size      Type  Phy Encl-Slot    Model
------------------------------------------------------------------------------
p0    OK             u0   931.51 GB SATA  0   -            WL1000GSA64RA100B
p1    OK             u1   1.82 TB   SATA  1   -            WDC WD2002FYPS-02W3
p2    OK             u2   1.82 TB   SATA  2   -            WDC WD2002FYPS-02W3
p3    OK             u3   1.82 TB   SATA  3   -            WDC WD2002FYPS-02W3

Continue reading Получение списка соответствия портов рейд контроллера дискам в системе

Firefox, Thunderbird, SeaMonkey запрет установки расширений XPI

Как запретить пользователям устанавливать расширения Firefox, Thunderbird или SeaMonkey?
Необходимо создать два файла.
Для Windows 32-бит
C:\Program Files\Mozilla Firefox\defaults\pref\local-settings.js
Для Windows 64-бит
C:\Program Files (x86)\Mozilla Firefox\defaults\pref\local-settings.js

pref("general.config.filename", "mozilla.cfg");
pref("general.config.obscure_value", 0);

Для Windows 32-бит
C:\Program Files\Mozilla Firefox\mozilla.cfg
Для Windows 64-бит
C:\Program Files (x86)\Mozilla Firefox\mozilla.cfg

// Первая строка с коментарием необходима так как 
// парсер специально игнорирует первую строку в этом файле
// Запрет инсталяции XPI плагинов
lockPref("xpinstall.enabled", false);

Continue reading Firefox, Thunderbird, SeaMonkey запрет установки расширений XPI

Как снифить протокол приложения или пользователя

Ядро Linux начиная с версии 2.6.14 предоставлет возможность перехватывать пакеты из userspace которые затем можно записывать используя фильтр пакетов ядра.

В таблицу INPUT iptables в самом верху добавить правило

-A INPUT -m connmark --mark 1 -j NFLOG --nflog-group 30

В таблицу OUTPUT в самом верху добавить

-A OUTPUT -m owner --uid-owner 1006 -j CONNMARK --set-mark 1
-A OUTPUT -m connmark --mark 1 -j NFLOG --nflog-group 30

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

# dumpcap -i nflog:30 -w uid-1006.pcap

И сам файл потом открыть при помощи WireShark.
Источник

Как избавиться от диакритики

Один из моих bash скриптов обрабатывающих входящие счета от чешской компании вдруг сломался. Оказалось, что тот кто фомирует счета допустил ошибку в шаблоне и одна из букв перестала быть с диакритикой. Чтобы впредь из-за такой мелочи не ломался скрипт я решил избавить входящий документ от диакритики полностью. Можно было использовать recode но зачем если sed справляется с транслитерацией не менее быстро, а главное что он имеется в любой *nix системе.

echo "Daňový portál" | sed 'y/áéíóúýčďěňřšťžůÁÉÍÓÚÝČĎĚŇŘŠŤŽŮ/aeiouycdenrstzuAEIOUYCDENRSTZU/'
Danovy portal

Как узнать путь откуда запущен bash скрипт

BASEDIR=$(readlink -e "$0")
if [ $? -ne 0 ] ; then
  echo -e "Script path get error."
  exit 1
fi
BASEDIR="${BASEDIR%/*}"
echo "${BASEDIR}" 
exit 0

В дополнение к команде readlink есть ещё realpath и realname которые вернут полный путь и имя переданного им файла. Разумеется файл должен существовать.

Но внимание! Приведённые выше команды вернут путь на сам файл даже если скрипт запустили через симлинк (symlink). Например может понадобиться чтобы скрипт мог что либо записать в папку из которой был запущен даже через симлинк. Чтобы этого добиться необходимо поступить например вот так:

SAVEDIR=`pwd`
BASEDIR=`cd "$(dirname "$0")" && pwd`
cd "${SAVEDIR}"
echo -e "${BASEDIR}"
exit 0