2009-08-06 23:48:03 +0000 2009-08-06 23:48:03 +0000
149
149

Как стереть свободное место на диске в Linux?

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

Что мне следует использовать для этого?

回答 (15)

113
113
113
2009-08-07 01:55:07 +0000

Предупреждение: Современное оборудование дискового/ твердотельного накопителя и современные файловые системы могут “пропустить” данные в местах, где их невозможно удалить, поэтому этот процесс может оставить данные на диске. Единственными безопасными способами стирания данных являются команда ATA Secure Erase (если она реализована правильно) или физическое уничтожение. Также см. раздел Как надежно стереть всю информацию на жестком диске?

Можно использовать набор утилит под названием secure-delete.

sudo apt-get install secure-delete

Это четыре утилиты:

srm - безопасное удаление существующего файла smem - безопасное удаление следов файла из ram sfill - стирание всего пространства, помеченного как пустое, на жестком диске sswap - стирание всех данных из места подкачки.

Из man-страницы srm

srm предназначена для безопасного удаления данных на носителях, которые не могут быть восстановлены ворами, правоохранительными органами или другими угрозами. Алгоритм стирания основан на работе “Безопасное удаление данных из магнитной и твердотельной памяти”, представленной на 6-м Симпозиуме по безопасности Usenix Петером Гутманом, одним из ведущих гражданских криптографов.

Процесс безопасного удаления данных srm проходит следующим образом:

  • 1 проход с 0xff
  • 5 случайных проходов. /dev/urandom используется для безопасного RNG, если он доступен.
  • 27 проходов со специальными значениями, определенными Петером Гутманом.
  • 5 случайных передач. /dev/urandom используется для безопасного RNG, если доступно.
  • Переименовать файл на случайное значение
  • Усечь файл

В качестве дополнительной меры безопасности, файл открывается в режиме O_SYNC и после каждой передачи выполняется вызов fsync(). srm записывает 32k блоков с целью повышения скорости, заполняя буферы дискового кэша, чтобы заставить их промыть и перезаписывать старые данные, которые принадлежали файлу.

74
74
74
2009-08-07 08:58:40 +0000
47
47
47
2010-06-09 17:40:37 +0000

ПРЕДУПРЕЖДЕНИЕ

Я был шокирован тем, сколько файлов photorec можно получить с моего диска, даже после протирки.

Будет ли больше безопасности при заполнении “свободного пространства” только 1 раз с 0x00 или 38 раз с разными кабалистическими стандартами - это скорее академическая дискуссия. Автор фундаментальной статьи 1996 года о шреддинге написал сам epilogue , сказав, что это устаревшее и ненужное для современной аппаратуры оборудование. Нет документированного случая, когда данные физически заменяются нулями и восстанавливаются после.

Истинная хрупкая ссылка в этой процедуре является файловой системой. Некоторые файловые системы резервируют место для специального использования, и оно не предоставляется как “свободное место”. Но ваши данные могут быть там. Это включает в себя фотографии, личные текстовые сообщения электронной почты, что угодно. Я только что прогуглил зарезервированное место+пространство+экст4 и узнал, что 5% раздела home было зарезервировано. Я думаю, что именно здесь photorec нашла так много моих вещей. Вывод: метод шреддинга не самый важный, даже многопроходной метод все равно оставляет данные на месте.

Вы можете попробовать # tune2fs -m 0 /dev/sdn0 перед монтажом. (Если это будет корневой раздел после перезагрузки, обязательно запустите -m 5 или -m 1 после размонтирования).

Но все равно, так или иначе, может остаться место.

Единственный по-настоящему безопасный способ - это стереть весь раздел, снова создать файловую систему, а затем восстановить файлы из резервной копии.

  • *

Быстрый способ (рекомендуется)

Запуск из каталога файловой системы, которую вы хотите стереть:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file

_Заметки: цель небольшого файла - сократить время, когда свободное место полностью обнуляется; цель синхронизации - убедиться, что данные действительно записаны. _

Этого должно быть достаточно для большинства людей.

Медленный путь (параноик)

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

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

dd if=/dev/urandom of=random.small.file bs=1024 count=102400
dd if=/dev/urandom of=random.file bs=1024
sync ; sleep 60 ; sync
rm random.small.file
rm random.file

Это займет гораздо больше времени.

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

Очень медленный путь (сумасшедший параноик)

Даже автор фундаментальной работы 1996 года по измельчению написал эпилог, заявив, что это устарело и ненужно для современного оборудования.

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

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
sync ; sleep 60 ; sync
shred -z zero.small.file
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
shred -z zero.file
sync ; sleep 60 ; sync
rm zero.file

Заметка: по сути это эквивалентно использованию утилиты secure-delete.

Перед редактированием, эта заметка была перезаписью Дэвида Спиллета (David Spillett). Команда “cat” выдаёт сообщение об ошибке, но я не могу писать комментарии к чужому сообщению.

27
27
27
2013-01-05 14:51:12 +0000

Есть утилита zerofree по крайней мере в Ubuntu: http://manpages.ubuntu.com/manpages/natty/man8/zerofree.8.html

zerofree — zero free blocks from ext2/3 file-systems

   zerofree finds the unallocated, non-zeroed blocks in an ext2 or ext3
   filesystem (e.g. /dev/hda1) and fills them with zeroes. This is useful
   if the device on which this file-system resides is a disk image. In
   this case, depending on the type of disk image, a secondary utility may
   be able to reduce the size of the disk image after zerofree has been
   run.

   The usual way to achieve the same result (zeroing the unallocated
   blocks) is to run dd (1) to create a file full of zeroes that takes up
   the entire free space on the drive, and then delete this file. This has
   many disadvantages, which zerofree alleviates:

      · it is slow;

      · it makes the disk image (temporarily) grow to its maximal extent;

      · it (temporarily) uses all free space on the disk, so other
         concurrent write actions may fail.

   filesystem has to be unmounted or mounted read-only for zerofree to
   work. It will exit with an error message if the filesystem is mounted
   writable. To remount the root file-system readonly, you can first
   switch to single user runlevel (telinit 1) then use mount -o remount,ro
   filesystem.

Также проверьте эту ссылку на zerofree: Сохранение редких образов файловой системы - это от ее автора - Рона Йорстона (9 августа 2012 г.)

3
3
3
2015-09-08 19:27:48 +0000

Протрите привод на максимальной скорости.

Типичные инструкции по шифрованию привода в настоящее время скажут вам сначала WIPE привода.

Команда ниже заполнит ваш привод шифрованным текстом AES.

Использовать живой компакт-диск, если вам нужно протирать ваш главный загрузочный диск.

Откройте терминал и повысьте свои привилегии:

sudo bash

Позвольте нам перечислить все приводы в системе для безопасности:

cat /proc/partitions

ПРИМЕЧАНИЕ: Замените /dev/sd{x} на устройство, которое вы хотите стереть.

ПРЕДУПРЕЖДЕНИЕ: Это не для любителей! Вы можете сделать вашу систему незагружаемой!!

sudo openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero > /dev/sd{x}

Я ошеломлен, как быстро это происходит.

2
2
2
2009-08-07 01:04:21 +0000

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

Для выделения файлов с dd try:

dd if=/dev/zero of=delete_me bs=1024 count=102400

Это сгенерирует файл с именем delete_me размером 100 Мб. (Здесь bs - это “размер блока”, равный 1k, а count - это количество блоков, которые нужно распределить)

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

Но ПРИМЕЧАНИЕ ЭТОГО: буферизация означает, что даже если вы сделаете диск whole, вы можете получить не все!

  • *

Эта ссылка рекомендует scrub для очистки свободного места. Не пробовал.

2
2
2
2013-07-04 21:22:51 +0000

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

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

Для установки пакета безопасного удаления в Linux (Ubuntu), установите его по следующей команде:

$ sudo apt-get install secure-delete

Затем, чтобы erase ваши данные без свободного места, попробуйте следующую команду:

sfill -f -v -ll /YOUR_MOUNTPOINT/OR_DIRECTORY

Где /YOUR_MOUNTPOINT/OR_DIRECTORY является точка монтирования (df -h, mount) или каталог для очистки свободного места.

Читайте руководство по адресу http://manpages.ubuntu.com/manpages/hardy/man1/sfill.1. .html

1
1
1
2009-08-07 01:58:44 +0000

Вероятно, в вашей системе уже установлен пакет GNU coreutils . Он предоставляет команду shred .

1
1
1
2011-11-26 03:38:47 +0000

Проще использовать scrub :

scrub -X dump

Это создаст папку dump в текущем местоположении и создаст файл до тех пор, пока диск не будет заполнен. Вы можете выбрать шаблон с опцией -p (nnsa|dod|bsi|old|fastold|gutmann).

Не так-то просто получить установку скраба смотрите форумы Ubuntu на этой странице ), но после завершения установки, у вас в руках окажется по-настоящему простой и эффективный инструмент.

1
1
1
2015-09-27 18:29:48 +0000

Вот сценарий “sdelete.sh”, который я использую. Подробности см. в комментариях.

# Install the secure-delete package (sfill command).

# To see progress type in new terminal:
# watch -n 1 df -hm

# Assuming that there is one partition (/dev/sda1). sfill writes to /.
# The second pass writes in current directory and synchronizes data.
# If you have a swap partition then disable it by editing /etc/fstab
# and use "sswap" or similar to wipe it out.

# Some filesystems such as ext4 reserve 5% of disk space
# for special use, for example for the /home directory.
# In such case sfill won't wipe out that free space. You
# can remove that reserved space with the tune2fs command.
# See http://superuser.com/a/150757
# and https://www.google.com/search?q=reserved+space+ext4+sfill

sudo tune2fs -m 0 /dev/sda1
sudo tune2fs -l /dev/sda1 | grep 'Reserved block count'

sudo sfill -vfllz /

# sfill with the -f (fast) option won't synchronize the data to
# make sure that all was actually written. Without the fast option
# it is way too slow, so doing another pass in some other way with
# synchronization. Unfortunately this does not seem to be perfect,
# as I've watched free space by running the "watch -n 1 df -hm"
# command and I could see that there was still some available space
# left (tested on a SSD drive).

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file

sudo tune2fs -m 5 /dev/sda1
sudo tune2fs -l /dev/sda1 | grep 'Reserved block count'
```.
1
1
1
2015-09-30 09:27:44 +0000

Я нашел простое решение, которое работает под Linux и под MacOS. Перейдите в корневую папку диска и запустите следующую команду:

for i in $(seq 1 //DISKSPACE//); do dd if=/dev/zero of=emptyfile${i} bs=1024 count=1048576; done; rm emptyfile*;

, где //DISKSPACE// - это размер в гигабайтах вашего жесткого диска.

1
1
1
2013-05-25 20:40:26 +0000

Это миф, что данные должны быть перезаписаны несколько раз (просто спросите Питера Гантмана), а случайные данные, в отличие от 1’s, тогда как 0’s подразумевает неестественную активность. тогда конечный результат - чистый диск с гораздо меньшими затратами времени на запись. кроме того, программы безопасного удаления не могут перезаписать даже реальный файл на современных файловых системах. Сделайте себе одолжение и получите фотоархив, отсканируйте диск, чтобы увидеть беспорядок, протрите его с 1 и, опционально, с нулями, чтобы он выглядел нетронутым. если фотоархив все еще находит вещи, помните, что он сканирует все доступное, так что сделайте это аккуратно снова с пользователем root.

помните, что cia/fbi/nsa не имеет фантастической машины, которая может прочитать реальное состояние ваших магнитных носителей бит. это все была просто бумага, написанная давным-давно. “что-если”. вам нужно протереть только 1 раз.

0
0
0
2016-05-11 16:59:32 +0000

Это не ответ! Просто комментарий для желающих использовать pv…так что не утруждайтесь голосованием.

На Linux Mint 17.3 вы можете использовать pv (pipe view), чтобы получить прогресс в написании. Например:

# Install pv (pipe view)
sudo apt-get install pv

# Write huge file of approximate size of /dev/sdb, using urandom data:
pv --timer --average-rate --progress --numeric --eta --interval 5 --size "$(blockdev --getsize64 /dev/sda )" /dev/urandom >rand.file

Преимуществом здесь является то, что вы получаете индикатор прогресса, ETA и постоянно обновляемую скорость передачи данных. Недостатком является то, что он записывается на одну строку, а когда диск переполняется (возвращает ошибку), он исчезает. Это происходит потому, что полный размер является приблизительным, так как ОС, скорее всего, использовать диск в то время как эта очень длительная операция происходит, особенно на томе ОС.

На очень старом HD, я получаю скорость передачи данных около 13 Мб / с с помощью /dev/urandom, и около 70 Мб / с , при использовании /dev/zero. Скорее всего, это еще больше повысит скорость при использовании raw dd или cat, а не pv.

0
0
0
2015-07-30 09:30:08 +0000

Иногда я использую этот bash one-liner:

while :; do cat /dev/zero > zero.$RANDOM; done

Когда он начнет говорить, что диск полон, просто нажмите Ctrl+C и удалите созданные zero.* файлы.

Он работает на любой системе, независимо от размера файла. Игнорируйте любые cat: write error: File too large ошибки.

-13
-13
-13
2009-08-06 23:59:57 +0000

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

関連する質問

6
10
5
37
5