Linux заполнить диск нулями

Как уничтожить данные на жестком диске

В жизни случаются ситуации, когда хочется бесследно избавиться от информации на жестком диске. Причин этого желания может быть много.

Одни из таких причин: Продажа жесткого диска или выбрасывание жесткого диска на свалку.

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

Способов бесследно стереть информацию существует много. О двух способах полного удаления информации с HDD я расскажу ниже.

Собрался я выбрасывать старый, но еще работающий жесткий диск. Хотя диск и сбоил, но позволял с собой работать. И мне захотелось уверенности, что никто из праздного любопытства не сможет восстановить пароли от различных интернет-ресурсов ранее хранившееся на этом HDD. Немного подумав решил воспользоваться бесплатными вариантами, реализованными в мире Linux систем.

На полке с CD/DVD дисками обнаружился установочный диск Ubuntu 12.04, которым я и решил воспользоваться. Устанавливать Ubuntu я не собирался, а хотел воспользоваться возможностью запуска этой операционной системы без установки с CD диска. Дабы ничего не перепутать я отключил все HDD, кроме того, с которого собирался бесследно удалить информацию и загрузился с установочного диска Ubuntu 12.04.

Подопытный HDD был подключен мастером на IDE шлейф, а DVD-ROM был подключен слэйвом. После загрузки с диска передо мной появился экран выбора.

Мне предлагалось выбрать: попробовать Ubuntu без установки или установить.

Я выбрал попробовать [Try Ubuntu], а языком интерфейса я оставил предложенный мне по умолчанию English. Английский я выбрал по простой причине: Я собирался в консоли вводить команды и у меня не было желания вспоминать как переключать язык ввода.

Ubuntu загрузилась и предо мной предстал “Рабочий стол”.

Первый вариант: команда dd

dd (dataset definition) — программа UNIX, предназначенная как для копирования, так и для конвертации файлов. Название унаследовано от оператора DD (Dataset Definition) из языка JCL

Будьте внимательны! Не ошибитесь с выбором файла устройства! Иначе потеряете данные.

  • Первым делом я нажал комбинацию клавиш CTRL + ALT + F1 ( Переключился на первую виртуальную консоль ).
  • Затем в консоли ввел команду sudo -i ( Становимся Суперпользователем )
  • Затем команда fdisk -l ( Выводит список доступных дисков, в выводе этой команды мы уточняем название нашего hdd ). В моем случае жесткий диск в системе был назван sda.
  • Затем: dd if=/dev/zero of=/dev/sda bs=4M ( Собственно сама команда, стирающая данные с жесткого диска. Хотя На самом деле эта команда не стирает данные, а заполняет HDD нулями. Сама операция занимает достаточно продолжительное время ).
Читайте также:  Linux networking dns server

Если же нас преследует паранойя, то после этой команды мы задаем команду, которая заполняет жесткий диск случайными данными (очень медленный процесс, сильно загружающий CPU ): dd if=dev/urandom of=/dev/sda bs=4M

Если же с паранойя совсем не дает покоя, то мы несколько раз, чередуя, запускаем эти команды.

CTRL + ALT + F7 — Вернуться в графический режим.

  • dd if=/dev/zero of=/dev/sda — заполняем диск нулями
  • dd if=/dev/urandom of=/dev/sda — заполняем диск случайными данными
  • dd if=/dev/random of=/dev/sda — заполняем диск случайными данными ( немного быстрее предыдущей)

Второй вариант: команда shred

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

Итак, перед нами “Рабочий стол” Ubuntu.

Будьте внимательны! Не ошибитесь с выбором файла устройства! Иначе потеряете данные.

  • Первым делом я нажимаем комбинацию клавиш CTRL + ALT + F1 ( Переключаемся на первую виртуальную консоль ).
  • Затем в консоли вводим команду sudo -i ( Становимся Суперпользователем )
  • Затем команда fdisk -l ( Выводит список доступных дисков, в выводе этой команды мы уточняем название нашего hdd ). В моем случае жесткий диск в системе был назван sda.
  • Затем: shred -n0 -z -v /dev/sda ( Собственно сама команда, стирающая данные с жесткого диска ).

Подробнее о параметрах этой команды:

  • n0 — число проходов ( я указал 0, это значит что число проходов с заполнением файла случайными данными будет равно нулю).
  • z — Заполнить нулями ( будет еще один проход в который файл будет заполняться нулями )
  • v — показывать индикатор прогресса ( удобно видеть сколько процентов сделано, а сколько осталось )
  • /dev/sdb — HDD, с которого уничтожаем информацию.

CTRL + ALT + F7 — Вернуться в графический режим.

Если же нас мучает паранойя, то надо указать как минимум n1, чтобы был хотя бы один проход с заполнением файла случайными данными.

  • shred -n0 -z -v /dev/sda (только один проход с заполнением файла /dev/sda нулями с отображением индикатора прогресса)
  • shred -v /dev/sda ( Число проходов по умолчанию (3) с заполнением случайными данными файла /dev/sda с отображением индикатора прогресса )
  • shred -n4 -z -v /dev/sda ( четыре прохода с заполнением файла /dev/sda случайными данными и один проход с заполнением файла нулями с отображением индикатора прогресса

Советуем прочитать:

Источник

Команда dd и все, что с ней связано

В UNIX системах есть одна очень древняя команда, которая называется dd. Она предназначена для того, чтобы что-то куда-то копировать побайтово. На первый взгляд — ничего выдающегося, но если рассмотреть все возможности этого универсального инструмента, то можно выполнять довольно сложные операции без привлечения дополнительного ПО, например: выполнять резервную копию MBR, создавать дампы данных с различных накопителей, зеркалировать носители информации, восстанавливать из резервной копии данные на носители и многое другое, а, при совмещении возможностей dd и поддержке криптографических алгоритмов ядра Linux, можно даже создавать зашифрованные файлы, содержащие в себе целую файловую систему.
Опять же, в заметке я опишу самые часто используемые примеры использования команды, которые очень облегчают работу в UNIX системах.

Читайте также:  Linux include string h

Начну с небольшого примера, наглядно иллюстрирующего основные параметры команды:

# dd if=/dev/urandom of=/dev/null bs=100M count=5

  • if: указывает на источник, т.е. на то, откуда копируем. Указывается файл, который может быть как обычным файлом, так и файлом устройства.
  • of: указывает на файл назначения. То же самое, писать можем как в обычный файл, так и напрямую в устройство.
  • bs: количество байт, которые будут записаны за раз. Можно представлять этот аргумент как размер куска данные, которые будут записаны или прочитаны, а количество кусков регулируется уже следующим параметром.
  • count: как раз то число, которое указывает: сколько кусочков будет скопировано.

Создание образа диска:

# dd if=/dev/cdrom of=image.iso

Команда будет считывать из устройства данные и записывать в файл до тех пор, пока не достигнет окончания устройства. Если диск битый, можно попробовать его прочитать, игнорируя ошибки чтения:

# dd if=/dev/cdrom of=image.iso conv=noerror

Параметр «conv» позволяет подключать несколько фильтров, применимых к потоку данных. Фильтр «noerror» как раз отключает остановку работы программы, когда наткнется на ошибку чтения. Таким образом, некоторые данные с диска все же можно будет прочитать. Точно таким образом я спас данные со своей флешки Corsair, которую погнули: подобрал подходящее положение, когда контакт есть, и сделал дамп файловой системы.
Подключить, кстати, такие образы можно при помощи команды mount с ключем «-o loop»:

# mount -o loop image.iso /mnt/image

Если что-то не получается, процесс разбивается на 2 уровня:

# losetup -e /dev/loop0 image.iso
# mount /dev/loop0 /mnt/image

Если и так не работает, значит файловая система образа полетела.

Работа с носителями информации

Очень простое, хоть и не оптимальное решение клонирования жесткого диска:

# dd if=/dev/sda of=/dev/sdb bs=4096

Все то же побайтовой копирование с размером буфера 4 Кб. Минус способа в том, что при любой заполненности разделов копироваться будут все биты, что не выгодно при копировании разделов с маленькой заполненностью. Чтобы уменьшить время копирования при манипуляции с большими объемами данных, можно просто перенести MBR на новый носитель (я ниже опишу как), перечитать таблицу разделов ядра (при помощи того же fdisk), создать файловые системы и просто скопировать файлы (не забыв сохранить права доступа к файлам).

Как вариант, можно даже по расписанию делать бекап раздела по сети. Разрулив ключи ssh будет работать такая схема:

# dd if=/dev/DEVICE | ssh user@host «dd of=/home/user/DEVICE.img».

Когда-то читал исследование, согласно которому очень большая доля жестких дисков на барахолке подвергается восстановлению данных без привлечения чего-то специализированного, и содержит конфиденциальную информацию. Чтобы на носителе ничего нельзя было восстановить — можно забить его нулями:

Читайте также:  Running qt creator on linux

# dd if=/dev/zero of=/dev/DEVICE

Думаю, понятно на что нужно заменить DEVICE. После проведения лекций по Linux, я очень тщательно стал следить за тем, что пишу.
Проверить можно тем же dd, но преобразовав данные в hex:

# dd if=/dev/sda | hexdump -C

MBR расположена в первых 512 байтах жесткого диска, и состоит из таблицы разделов, загрузчика и пары доп. байт. Иногда, ее приходится бекапить, восстанавливать и т.д. Бекап выполняется так:

# dd if=/dev/sda of=mbr.img bs=512 count=1

# dd if=mbr.img of=/dev/sda

Причины этих махинаций с MBR могут быть разные, однако хочу рассказать одну особенность, взятую из опыта: после восстановления давней копии MBR, где один из разделов был ext3, а позже стал FAT и использовался Windows, раздел перестал видиться виндой. Причина — ID раздела, который хранится в MBR. Если UNIX монтирует файловые системы согласно суперблоку, то винды ориентируются на ID разделов из MBR. Поэтому всегда нужно проверять ID разделов при помощи fdisk, особенно если на компьютере есть винды.

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

# dd if=/dev/zero of=image.crypted bs=1M count=1000

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

# modprobe cryptoloop
# modprobe blowfish

Ассоциация образа с блочным устройством со включенным шифрованием:

# losetup -e blowfish /dev/loop0 image.crypted

Команда запросит ввести пароль, который и будет ключем к образу. Если ключ введен не правильно, система не смонтируется. Можно будет заново создать данные в образе, используя новый ключ, но к старым данным доступа не будет.
Создаем файловую систему и монтируем:

# mkfs.ext2 /dev/loop0
# mount /dev/loop0 /mnt/image

Образ готов к записи данных. После завершения работы с ним, нужно не забыть его отмонтировать и отключить от блочного loop устройства:

# umount /dev/loop0
# losetup -d /dev/loop0

Теперь шифрованный образ готов.

Основные идеи я расписал, однако множество задач, которые можно решить при помощи маленькой программки, имя которой состоит из двух букв, намного шире. Программа «dd» — яркий пример того, что IT’шники называют «UNIX way»: одна программа — часть механизма, выполняет исключительно свою задачу, и выполняет ее хорошо. В руках человека, который знает свое дело, которому свойственен не стандартный подход к решению задачи, такие маленькие программки помогут быстро и эффективно решать комплексные задачи, которые, на первый взгляд, должны решать крупные специализированные пакеты.

Источник

Оцените статью
Adblock
detector