среда, 8 февраля 2012 г.

Модули virtualbox и ошибка Unknown symbol pv_irq_ops pv_lock_ops

Если попытка подгрузить модули VirtualBox ругается таким образом:
FATAL: Error inserting vboxdrv (/lib/modules/3.2.1-gentoo-r2/misc/vboxdrv.ko): Unknown symbol in module, or unknown parameter (see dmesg)
А в /var/log/messages сообщается следующее:
Feb  8 16:26:58 gentoobook kernel: vboxdrv: Unknown symbol pv_irq_ops (err 0)
Feb  8 16:26:58 gentoobook kernel: vboxdrv: Unknown symbol pv_lock_ops (err 0)
То нужно в ядре включить опцию CONFIG_UNUSED_SYMBOLS.

понедельник, 30 января 2012 г.

Шифрование домашнего каталога

Миграция на шифрованный раздел.

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

Было:
+----------------------------------------------------+
|                  Disk /dev/sda                     |
| +-------+---------------------------------------+  |
| | sda1  | sda2     lvm                          |  |
| |       | +------+------+------+--------------+ |  |
| |  /    | | /usr | /var | swap | /home        | |  |
| |       | +------+------+------+--------------+ |  |
| +-------+---------------------------------------+  |
|                                                    |
+----------------------------------------------------+

Стало:
+----------------------------------------------------+
|                  Disk /dev/sda                     |
| +-------+---------------------------------------+  |
| | sda1  | sda2     lvm                          |  |
| |       | +------+------+------+--------------+ |  |
| |  /    | | /usr | /var | swap | luks         | |  |
| |       | |      |      |      | +----------+ | |  |
| |       | |      |      |      | | /home    | | |  |
| |       | |      |      |      | +----------+ | |  |
| |       | +------+------+------+--------------+ |  |
| +-------+---------------------------------------+  |
|                                                    |
+----------------------------------------------------+
* Кстати, схема-то упрощенная. У lvm не обозначена еще volume group :) *

Для этого мне понадобилось:

Включить в ядре опции:
 Cryptographic API -> SHA224 and SHA256 digest algorithm (CONFIG_CRYPTO_SHA256)
и
Device Drivers -> 
Multiple devices driver support (RAID and LVM) ->
Device mapper support ->
Crypt target support (CONFIG_DM_CRYPT)
Далее я пересобрал ядро и установил пакет cryptosetup.

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

На домашнем разделе занято всего ~50 гигабайт.

Значит уменьшаю home до 60 гигабайт, создаю новый том lvm и шифрую его:
# lvresize -r -L60G /dev/mapper/vg-home

# lvcreate -n hm -l 51734 vg

# cryptosetup luksFormat /dev/mapper/vg-hm
Пароль в последнем шаге должен совпадать с паролем пользователя, т.к. пароль автоматически передается во время входа в систему.

Создаю на новом домашнем разделе файловую систему и переношу туда данные со старого раздела
# cryptsetup luksOpen /dev/mapper/vg-hm secret
# mkfs.ext4 /dev/mapper/secret
# mkdir /mnt/temp
# mount /dev/mapper/vg-hm /mnt/temp
# cp -r /home/* /mnt/temp
# umount /mnt/temp
Теперь устанавливаю pam_mount. У этого пакета необходимо включить USE-флаг crypt.

Добавляю в /etc/pam.d/system-auth строчки (выделены):
auth            required        pam_env.so 
auth            required        pam_unix.so try_first_pass likeauth nullok 
auth            optional        pam_permit.so
auth            optional        pam_mount.so

account         required        pam_unix.so 
account         optional        pam_permit.so

password        required        pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3 
password        required        pam_unix.so try_first_pass use_authtok nullok sha512 shadow 
password        optional        pam_permit.so
  
session         required        pam_limits.so 
session         required        pam_env.so 
session         required        pam_unix.so 
session         optional        pam_permit.so
session         optional        pam_mount.so
А в /etc/security/pam_mount.conf.xml следующее:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<!--
        See pam_mount.conf(5) for a description.
-->

<pam_mount>

                <!-- debug should come before everything else,
                since this file is still processed in a single pass
                from top-to-bottom -->

<debug enable="0" />

                <!-- Volume definitions -->
<volume user="yuri" path="/dev/mapper/vg-hm" mountpoint="~" cipher="aes-cbc-essiv:sha256" />

                <!-- pam_mount parameters: General tunables -->

<!--
<luserconf name=".pam_mount.conf.xml" />
-->

<!-- Note that commenting out mntoptions will give you the defaults.
     You will need to explicitly initialize it with the empty string
     to reset the defaults to nothing. -->
<mntoptions allow="nosuid,nodev,loop,encryption,nonempty,allow_root,allow_other" />
<!--
<mntoptions deny="suid,dev" />
<mntoptions allow="*" />
<mntoptions deny="*" />
-->
<mntoptions require="nosuid,nodev" />

<!-- requires ofl from hxtools to be present -->
<logout wait="0" hup="0" term="0" kill="0" />


                <!-- pam_mount parameters: Volume-related -->

<mkmountpoint enable="1" remove="true" />

</pam_mount>
И не забыть убрать строчку с home из /etc/fstab.

среда, 16 ноября 2011 г.

Сохранение правил iptables в Fedora 16

Netfilter, внутриядерный межсетевой экран Linux, управляемый утилитой iptables, при перезагрузке, как известно, не сохраняет правила фильтрации самостоятельно. Эта задача на совести сборщиков дистрибутивов. И сколько пользуюсь системами, родственными RedHat, правила всегда сохранялись командой
# service iptables save
Но в Fedora 16 используют этот ненужный systemd, который, как оказалось, не может заменить init-скрипты на 100% процентов. Сотрудник Red Hat (судя по адресу электронной почты) Thomas Woerner сообщил: "Пожалуйста, воспользуйтесь старым init-скриптом, его переместили в /usr/libexec:
/usr/libexec/iptables.init save
Нет никакой возможности добавить функцию save в systemd."

среда, 14 сентября 2011 г.

Компьютер с двумя выходами в интернет

Компьютер с двумя выходами в интернет. На моей рабочей машине две сетевые карты - каждая смотрит в свою сеть. Сети абсолютно независымые друг от друга и в каждой сети есть шлюз с выходом в интернет. Условно назовём их 192.168.1.0/24 и 192.168.2.0/24. Маршрут по умолчанию на моей машине по ряду причин указывает на шлюз первой сети, 192.168.1.1. Однако полномочиями администратора я обладаю только во второй сети. Мне понадобилось пробросить определенный порт до моей машины. На шлюзе это сделать не сложно, однако ответ на пакет, пришедший из интернета на 192.168.2.2 уходит по маршруту по умолчанию на 192.168.1.1, где его, конечно же, не ждут.
Значит нужно заставить ядро отправлять такие пакеты туда же, откуда они и пришли. Нужно добавить новую таблицу маршрутизации (номер и название) в файл /etc/iproute2/rt_tables :
10      T1
И дать в консоли эти две команды:
# ip r a default via 192.168.2.1 table T1
# ip rule add from 192.168.2.2 table T1
Первая добавит правило в новую таблицу, а вторая заставит пакеты, пришедшие на интерфейс второй сети подчиняться этому правилу.

воскресенье, 11 сентября 2011 г.

Проверка заряда батареи из командной строки

Узнать состояние батареи лэптопа можно простой командой acpi из одноименного пакета.
$ acpi
Battery 0: Discharging, 28%, 01:09:38 remaining

четверг, 16 июня 2011 г.

Симметричное шифрование файлов с помощью GPG

Для хранения файлов в Dropbox я использую симметричное шифрование с помощью GPG.
Зашифровать:
gpg -c --cipher-algo AES256 secret_file
Расшифровать:
gpg -d secret_file.gpg

среда, 18 мая 2011 г.

Установка клиента Dropbox

Ставим Dropbox:

Самый правильный способ установки клиента Dropbox оказался в Fedora с оболочкой Gnome. Достаточно подключить официальный репозиторий:

Создать файл /etc/yum.repos.d/dropbox.repo следующего содержания:
[Dropbox]
        name=Dropbox Repository
        baseurl=http://linux.dropbox.com/fedora/$releasever/
        gpgkey=http://linux.dropbox.com/fedora/rpm-public-key.asc
Далее установить нужный пакет через графический интерфейс менеджера пакетов, либо командой
# yum install nautilus-dropbox
Пакет будет установлен со всеми зависимостями (как легко догадаться по названию пакета, зависит он от Nautilus и, следовательно, GTK2), а при выходе новых версий обновляться, как и все остальные пакеты в системе.
После установки клиент Dropbox сам прописывается в автозагрузку Gnome.
Кстати, если каталог /home находится на отдельном разделе, установщик пакета добавит опцию монтирования user_xattr для раздела с /home, при этом оставив соответствующий комментарий в /etc/fstab.

На ноутбуке у меня openSUSE+Gnome. Репозитория с dropbox для openSUSE не нашел, зато вручную установил RPM-пакет от Fedora. Вот так:
# rpm -i --nodeps ./nautilus-dropbox-0.6.7-1.fedora.i386.rpm
Это, конечно, не установка из репозитория, зато под контролем пакетного менеджера. Обновлять клиент Dropbox придется вручную, но всего одной командой
# rpm -U --nodeps <имя_пакета>
На домашней же машине Fedora+KDE. Для всех других дистрибутивов с оболочкой, отличной от Gnome остается один выход - использовать скомпилированную версию, которую можно взять здесь: http://wiki.dropbox.com/TipsAndTricks/TextBasedLinuxInstall
Данная версия ставится в каталог пользователя, обновлять её придется вручную, повторяя приведенные ниже действия каждый раз.
По ссылке нужно выбрать архитектуру (32 или 64), скачать файл в формате tar.gz. Внутри находится каталог ".dropbox-dist" (именно так, с точкой впереди). В этом каталоге нужно запустить скрипт dropboxd. Например (для 32):
$ wget http://www.dropbox.com/download/?plat=lnx.x86
$ tar -xvzf ./dropbox-lnx.x86-1.1.31.tar.gz
$ .dropbox-dist/dropboxd
По окончании загрузки/установки Dropbox запросит пароль root, чтобы внести изменения в /etc/fstab. Ваше право ему в этом отказать.
В автозагрузку данный скрипт придется прописывать также вручную.

P.S. Кстати, в официальном дереве Gentoo есть ebuild версии для Nautilus:
# echo "gnome-extra/nautilus-dropbox" > /etc/portage/package.keywords/dropbox
emerge -av nautilus-dropbox