LINUX.ORG.RU

В чём принципиальная разница между shred и dd

 , ,


0

1

shred перезаписывает информацию случайными байтами

dd if=/dev/random of=/dev/sda вроде делает тоже самое

  1. В чём разница между этими командами
  2. Можно ли использовать в целях экономии времени dd if=/dev/zero of=/dev/sda?

В чём разница между этими командами

хорошо прописано в документации на shred. Что-то конкретно непонятно

Можно ли использовать в целях экономии времени dd if=/dev/zero of=/dev/sda?

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

Огласи настоящую задачу, типа там «продаю хард на авито», «маски-шоу под дверью, что делать с бухгалтерией» или «пятница, заняться нечем».

t184256 ★★★★★ ()

Вроде есть методы восстановления затёртых областей с дисков. После записи нуля там будет разный уровень намагничивания в зависимости от того, какое значение было раньше. shred записывает данные больше одного раза и возможно использует ещё какие-то методы (чередование бит какое-нибудь). Так что нет, dd может быть эквивалентно только если применяется несколько раз и чередуется с sync.

xaizek ★★★★★ ()
Ответ на: комментарий от xaizek

Вроде есть методы восстановления затёртых областей с дисков

Ты хотел сказать «были». К нулевым это всё превратилось в городскую легенду, современные диски не позволяют прочитать данные, затёртые даже одинарной перезаписью.

gremlin_the_red ★★★★ ()
Ответ на: комментарий от gremlin_the_red

Если уже не актуально, то ещё лучше. Я тоже думал, когда писал, насколько оно применимо в случае значительно возросшей плотности записи. Хотя с другой стороны и электроника поумнела и могла научиться помечать занулённые сектора флагом и избегать записи (что-то такое было). Тогда затирание случайными данными всё же не помешает.

xaizek ★★★★★ ()
Ответ на: комментарий от t184256

Задача следующая: нужно затереть 4 диска по 512 GB каждый для продажи, собирался использовать

#/bin/bash

for i in a b c d 
do
	echo Disk sd$i
	dd if=/dev/zero of=/dev/sd$i
done

но наткнулся на информацию здесь про то, что информация не затирается полностью (хотя с чего, если все байты перезаписываются на нули) и есть способ восстановить её, после автор комментария опроверг эту информацию, но осадок остался, посему и пришёл сюда с данным вопросом

Интересно было узнать, если данная инфа достоверна, то как удаётся вытащить данные

ItIsNotUsername ()
Ответ на: комментарий от xaizek

Такое было и есть для SSD, гуглить TRIM. Основано оно исключительно на особенностях работы SSD, у которых нет операции перезаписи, это всегда две операции — стирания и записи.

gremlin_the_red ★★★★ ()

Можно сделать, например, так: shred --remove 1 2 3

Считай, что есть примерно три уровня надёжности уничтожения данных:

  1. Т.н. «быстрое форматирование» носителя — защитит от рядового любопытного юзера.
  2. Забивание нулями — защитит от какера.
  3. shred — защитит от АНБ.

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

WitcherGeralt ★★ ()
Ответ на: комментарий от WitcherGeralt

АНБ научилось отменять законы физики? Откуда вообще у некоторых такая вера во всемогущество спецслужб? Куда по определению идут самые никчёмные отбросы, выкинутые рынком. Которым по определению не надо показывать никаких сверхспособностей, потому как вся их деятельность строго засекречена, то есть, никак не контролируется. АНБ, ФСБ, МИ6 — это всё сборища некомпетентных необучаемых макак-даунов. Просто потому, что иначе это не работает и работать не может.

gremlin_the_red ★★★★ ()
Ответ на: комментарий от ItIsNotUsername

Интересно было узнать

Никто не упомянул, но mkfs.ext{2,3,4} с опцией -c проводит перезапись с проверкой на бады. Это как мне кажется намного полезнее и информативнее.

anonymous ()
Ответ на: комментарий от ItIsNotUsername

но наткнулся на информацию здесь про то, что информация не затирается полностью (хотя с чего, если все байты перезаписываются на нули) и есть способ восстановить её, после автор комментария опроверг эту информацию, но осадок остался, посему и пришёл сюда с данным вопросом

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

Но учти то, что тотальная перезапись всего диска может вызвать перегрев контроллера с последующим выходом его из строя, да именно контроллера, а не поверхности диска.

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

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 5)
Ответ на: комментарий от ItIsNotUsername

С /dev/random ты задолбаешься ждать, это очень медленный генератор для криптоключей. Следует использовать /dev/urandom.

Вместо shred и dd можешь использовать badblocks с тестом записи. Он перезаписывает четыре раза, но не случайными байтами, а паттернами.

хотя с чего, если все байты перезаписываются на нули

Физический носитель — это не просто абстрактный набор байт, это магнитные домены на физическом диске. Предположим, была команда записать нули. Головка прошлась и везде приложила магнитное поле, но там где были единицы, намагниченность была сильнее чем где были нули (ну или наоборот, слабее). после записи нулей, она стала везде почти одинаковой, так что контроллер диска видит везде нули, но на самом диске остались следы, которые теоретически в специальной лаборатории можно прочитать, используя другую магнитную головку, которая гораздо чувствительней той которая изначально используется.

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

Xenius ★★★★★ ()
Последнее исправление: Xenius (всего исправлений: 2)
Ответ на: комментарий от torvn77

особенно если у тебя там были линуксовые Фс, к которым утилит восстановления может не быть вообще

Есть всякие photorec которые на ФС вообще не смотрят, а сканируют блочное устройство на предмет заголовков файлов.

Я один раз восстанавливал случайно удалённый /etc/hosts вообще через grep -aob по имени хоста, которое помнил. Затем пересчитал оффсет в блоки, и вырезал через dd по одному мегабайту до и после, а затем уже в текстовом редакторе обрезал данные вокруг.

Xenius ★★★★★ ()
Ответ на: комментарий от Xenius

Ну это уже надо специально по тяжёлому извращаться и явно быть более целеустремлённым, чем случайный покупатель с авито, к тому же может быть compress-force=zlib:6

Но так да, вы правы, я тоже инициализационный скрипт в initrd искал и нашёл, но я просто сделал глобальный поиск по всему образу.
Чтука тут в том, что надо знать что ищещь и иметь к этому некоторую мотивацию.
Например я не думаю что таким образом любопытный покупатель будет пытаться что либо найти.

И потом, откуда взять офсет если начало и конец раздела затёрты?

Ну в общем тогда пусть перепишет весь диск urandom’ом, но только пусть учитывает то, что я так реально убил несколько дисков, так как их контроллеры перегрелись от длительных операций записи.

Может ему самому использовать диски, всё равно за них много денег не дадут?

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 7)
Ответ на: комментарий от torvn77

Ну в общем тогда пусть перепишет весь диск urandom’ом, но только пусть учитывает то, что я так реально убил несколько дисков, так как их контроллеры перегрелись от длительных операций записи.

А я так новые жесткие диски, флешки и SSD всегда проверяю.

# Первый проход:
dd if=/dev/urandom bs=1M status=progress | tee /dev/MY_DISK | md5sum
# Второй проход после перетыкания:
md5sum /dev/MY_DISK
# Третий проход:
dd if=/dev/zero of=/dev/MY_DISK bs=1M status=progress

То есть записываю случайные данные, одновременно проверяя контрольную сумму, а затем читаю их с диска и опять проверяю контрольную сумму после очистки кэшей (как ОС, так и устройства) сбросом питания. Таким образом никакой хитрый контроллер не сможет меня обмануть и вся доступная юзеру поверхность будет перезаписана.

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

Xenius ★★★★★ ()
Ответ на: комментарий от Xenius

У него б/у и гарантии нет и потом, даже если диск изношен то до этого он работал то нормально и ещё мог работать.
(я их затирал для порядка, в общем виндовые привычки по переустановке ОС)

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 1)

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

X512 ★★ ()
Ответ на: комментарий от anonymous

По идее должно сработать, но физически уничтожить чипы памяти проще и стирание чипов также вероятно приведёт к неработоспособности диска из-за стирания внутренних метаданных. Для восстановления работы потребуется низкоуровневое форматирование. Там всё проприетарное и нестандартное так что универсальных способов нет.

X512 ★★ ()
Ответ на: комментарий от X512

Ну и что. Стирание данных ты уже гарантировал, можно воспользоваться проприетарщиной. Это нужно быть упоротым фанатиком, чтоб вместо этого покупать новый диск.

anonymous ()
Ответ на: комментарий от Xenius

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

kolja ★★ ()

dd позволяет записать произвольные данные в произвольное место. Не обязательно это должны быть случайные байты.

shred с опцией -u позволяет безвозвратно затереть файл и после этого удалить его из файловой системы (если без опции, просто получится файл с бессмыслицей вместо содержимого). dd if=/dev/random может «забить» файл случайными данными сверх изначального размера. Можно, конечно, ограничить параметрами bs и count, но всё равно, это менее удобно, чем shred.

ShiningRiver ()
Последнее исправление: ShiningRiver (всего исправлений: 1)
Ответ на: комментарий от X512

Для SSD никакие программные манипуляции не помогут, только так. Там используется динамическое переразмещение блоков недоступное программно.

В теории если записать не сжимаемыми данными несклько объёмов ssd то агоритм выравнивания должен перезаписать все ячейки памяти, кроме тех что были помечены как сбойные.

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

torvn77 ★★★★★ ()
Ответ на: комментарий от anonymous

А что если в обход контроллера подключиться к флэш чипу и стереть его, мм?

Можно и не в обход, если иметь сервисную утилиту от этого диска, а вообще стереть всю память и перепрошить контроллер, а затем провести повторную калибровку.

Xenius ★★★★★ ()
Ответ на: комментарий от gremlin_the_red

В чистой комнате разбирается диск вставляется куда надо и снимается raw дамп. Затем этот дамп наносится на девственную болванку. Затем обе болванки вставляются куда надо и с них синхронно идёт чтение, при этом в одних и тех же областях возникает разница её то и фиксируют. Следом выделяют самую наименьшую разницу и инвертируют с наибольшей. Вуаля у нас восстановлены все однократно перезаписанные данные. Только кашу ту ещё надо будет разобрать, но это уже задача софта которая на основе сотен «мнемоник» сортирует данные. Есть даже частные компании которые вытаскивают данные из казалось бы уже плачевной ситуации.

anonymous ()
Ответ на: комментарий от anonymous

Да, так это и работало. Году так в 1994. Отсюда и пошла эта городская легенда (ну, тогда ещё не легенда). Но технология шла вперёд, точность позиционирования росла, размеры секторов неуклонно уменьшались, пока не получилось так, что запись чего угодно сделало информацию в секторе не восстановимой. Грубая аналогия — в начале 90-х было достаточно разгрузить камаз говна посреди футбольного стадиона, и запах заполнял весь стадион, хотя бОльшая часть стадиона осталась нетронутой, что и позволяло восстановить информацию более точным оборудованием, нынче же каждую травинку моют с мылом и потом капают и размазывают по ней каплю нового говна, что уже не позволяет восстановить предыдущую инфу.

gremlin_the_red ★★★★ ()