11.07.2015 Views

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

122 UnixoidХАКЕР 04 /171/ 2013autosnap.sh#!/bin/bashset -eVOLUME=/dev/sda11TMP_PATH=/tmp/snapshotsMOUNT_OPTS="subvol=@snapshots"# Текущие дата и время — необходимы# для формирования имен папок со снапшотамиNOW="$(date +%Y%m%d%H%M)"NOW_SEC="$(date +%s)"if [ $# -ne 1 ]; then# Если скрипт запущен без аргументов,# ставим по умолчанию один день назадOLDER_SEC="$(date --date "1 day ago" +%s)"else# Если же у нас указан аргумент, считаем,# что это дата в любом формате, который# понимает команда date, со всеми вытекающимиOLDER_SEC="$(date --date "$1" +%s)"fi# Вычитаем из текущей даты требуемую# и преобразуем ее в минутыOLDER=$(($NOW_SEC-$OLDER_SEC))OLDER_MIN=$(($OLDER/60))[ ! -d "${TMP_PATH}/" ] && mkdir "${TMP_PATH}/"[ -z "`grep "${TMP_PATH}" /proc/mounts`" ]&& mount "${VOLUME}" "${TMP_PATH}/" -o"${MOUNT_OPTS}" && { # Монтируемmkdir "${TMP_PATH}/${NOW}/"# Создаем снапшотыbtrfs subvol snap / "${TMP_PATH}/${NOW}/rootsnap" > /dev/null 2>&1btrfs subvol snap /home "${TMP_PATH}/${NOW}/homesnap" > /dev/null 2>&1} && {# Ищем папки со снапшотами старше указанной датыfor f in `find "${TMP_PATH}" -mindepth 1-maxdepth 1 -type d -cmin +"$OLDER_MIN"-print0 |xargs -0`;dobtrfs subvol del "${f}/rootsnap"> /dev/null 2>&1 &&btrfs subvol del "${f}/homesnap"> /dev/null 2>&1 &&# и удаляем снапшоты и папки, их содержащиеrmdir "$f"done}umount -l "${TMP_PATH}" && rmdir "${TMP_PATH}"Скрипт этот можно разместить, где удобно (лично я предпочитаюподобные вещи размещать в /usr/local/bin, но это деловкуса), и запускать его либо из крона, либо из rc.local. По умолчаниюскрипт ротирует снапшоты старше одного дня, но ты можешьзадать любое желаемое количество в формате командыdate — главное, не забудь заключить в кавычки.ИСПОЛЬЗОВАНИЕ ISO-ОБРАЗАДля того чтобы при повреждении каких-либо жизненно важныхфайлов не дергать каждый раз болванку с записанной убунтой,есть возможность в меню Grub добавить пункт загрузки с ISOобраза,что я и предлагаю сделать. Для этого понадобится не-Btrfs-раздел (поскольку по неизвестным причинам стандартнаяinitramfs убунтовской исошки не желает видеть образ, еслион находится на разделе с описываемой ФС) и прямые руки.Редактируем конфигGrub'аINFOЕсли ты работаешьв chroot-окружении подroot, то есть возможностьоттуда вырваться. Одиниз способов — использованиесистемного вызоваmknod() с последующиммонтированием реальногокорня. Установкапатчсета grsecurityпозволяет решить этупроблему.Добавляем в файл /etc/grub.d/40_custom следующие строчки:menuentry "Ubuntu 12.10 i386 iso" {insmod part_msdosinsmod fat# Устанавливаем корень, откуда берем ISOset root='hd0,msdos7'# Путь к образу относительно указанного выше корняset isofile=/ubuntu-12.10-desktop-i386.iso# Монтируем в качестве loopback-девайса в Grubloopback loop $isofilelinux (loop)/casper/vmlinuz boot=casperiso-scan/filename=$isofile noeject noprompt --initrd (loop)/casper/initrd.lz}и запускаем команду обновления основного конфига Grub:$ sudo update-grubТеперь даже в случае серьезного повреждения системы —если, конечно, не будет затронут загрузчик и его файлы —ты всегда сможешь загрузиться с ISO-образа и изменить поврежденныефайлы или откатиться на предыдущее состояниесистемы. Предположим, ты уронил систему и тебе необходимоее восстановить из снапшота Btrfs. Для этого загрузись с данногоISO-образа, примонтируй тот раздел, систему на котором ты уронил,— именно раздел, не подтом! — и введи следующие команды(естественно, с поправкой на твои снапшоты и разделы):# cd /mnt/sda11# mv @ @_badroot# mv @snapshots/201302011434/rootsnap @То же самое, при необходимости, делаем с @home и перезагружаемся.Если все прошло нормально, то можешь удалить@_badroot:$ sudo btrfs subvol del @_badrootТеперь даже в случае серьезного повреждениясистемы — если, конечно, не будетзатронут загрузчик и его файлы — тывсегда сможешь загрузиться с ISO-образаЗАКЛЮЧЕНИЕВ *nix-системах есть множество способов обезопасить себяот неудачных экспериментов или смягчить их последствия.Я рассмотрел некоторые из них. Однако стоит заметить, что всеэти способы предназначены в основном для экспериментаторов,любящих поковыряться в системе. Для отлова малвари онине подходят — их достаточно легко обнаружить, хотя некоторыйуровень безопасности они, конечно же, обеспечивают.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!