Удаление файлов и форматирование дисков — распространенная задача. Linux предоставляет много утилит для удаления файлов в командной строке.
Самые используемые команды для удаления файлов и директорий — rm
и rmdir
соответственно. В этой статье мы познакомимся с другой командной — shred. С ее помощью можно стирать диски и удалять файлы безопасным образом.
Что собой представляет команда shred в Linux?
Команда shred позволяет несколько раз перезаписывать данные в одном и том же месте. Такая перезапись затрудняет восстановление данных при помощи сторонних программ и оборудования. Поэтому данная команда широко используется для безопасного удаления файлов.
Синтаксис команды shred
# Стирание файла shred [OPTION] filename # Стирание диска; path нужно заменить на путь вашего диска shred -vfz [/file/system/path]
Согласно странице man, с командой shred можно использовать несколько опций, например:
-n
, --iterations=N
Вы можете перезаписать данные N раз вместо 3, принятых по умолчанию
-f
, --force
Принудительное изменение прав доступа, при необходимости разрешающее запись
-v
, --verbose
Вывод подробной информации о выполнении
-u
, --remove
Обрезка и удаление файла после перезаписи.
Чем shred отличается от rm?
Используя rm
, вы просто удаляете указатель на файловую систему. Данные как таковые могут все еще оставаться там. А это значит, что существует возможность их восстановления.
Но когда вы используете команду shred
, файл перезаписывается указанное число раз, делая содержимое файла невосстановимым.
Еще одно различие команд заключается в скорости их выполнения. Обычно rm
работает быстрее, чем shred
. Это и понятно: shred
нужно перезаписать файл несколько раз перед удалением. Скорость работы этой команды будет зависеть и от количества итераций, и от размера файла (диска). А rm просто удаляет указатель на файловую систему.
Как работает команда shred?
По умолчанию команда shred прогоняет файл через три итерации перезаписи. Число итераций можно изменить при помощи опции -n
.
Когда стоит использовать команду shred?
Применяйте shred
для удаления конфиденциальных данных. Этой командой могут часто пользоваться системные администраторы, команды IT-криминалистов и специалисты по информационной безопасности.
Примеры применения shred
ВНИМАНИЕ! Прежде чем запускать любой из примеров в своей системе, убедитесь, что у вас есть бэкап вашего файла и файловой системы. Пожалуйста, будьте осторожны: удаленные данные будет невозможно восстановить!
Как перезаписать и удалить файл при помощи shred
У нас есть файл poem.txt со следующим контентом:
Давайте перезапишем его содержимое трижды (поведение shred по умолчанию):
shred -v poem.txt
Опция -v
нужна для подробного вывода.
Давайте еще раз посмотрим содержимое файла:
cat poem.txt
Мы видим, что текст в файле был изменен и стал нечитаемым.
Теперь мы можем безопасно удалить этот файл, выполнив rm poem.txt
.
Но команду shred можно использовать более эффективно: мы можем перезаписать контент, скрыть перезапись и удалить файл одной командой. Давайте изменим нашу команду и запустим ее:
shred -vzu -n5 poem.txt
Здесь:
-v
обеспечивает подробную информацию о выполнении команды-z
заменяет итоговый путь нулями для скрытия шреддинга-u
удаляет файл после перезаписи, т. е. нам не придется запускать следом rm-n
изменяет количество итераций перезаписи (мы поставили 5 вместо 3).
Результат
На скрине снизу видно, что файл был перезаписан 5 раз. На финальной (дополнительной) итерации файл был перезаписан исключительно нулями (это благодаря добавлению опции -z
). При удалении файла также изменялось его имя, благодаря чему его невозможно будет найти после шреддинга.
Как стереть раздел диска при помощи shred
Предположим, вы хотите продать свой диск и вам нужно его почистить. С помощью shred вы можете стереть весь диск:
# /dev/sde замените на вашу точку монтирования sudo shred -vfz /dev/sde
Здесь:
-v
обеспечивает подробную информацию о выполнении команды-f
обеспечивает принудительное добавление права на запись, если оно пропущено-z
перезаписывает содержимое диска нулями на последней итерации перезаписи
Команду shred также можно применять к RAID-разделам:
shred -vfz -n 10 /dev/md1
Когда команда shred неэффективна?
В некоторых случаях применять shred нецелесообразно. Например, когда речь идет о:
- журналируемых файловых системах, например, поставляемых с AIX и Solaris (а также JFS, ReiserFS, XFS, Ext3 и т. д.)
- файловых системах, записывающих избыточные данные, например файловых системах на основе RAID
- файловых системах, которые делают снапшоты. Примеры: NFS-сервер Network Appliance.
- файловых системах, поддерживающих кэширование во временных локациях, например клиенты NFS версии 3.
- сжатых файловых системах.
Итоги
Команда shred обеспечивает невозможность восстановления данных в файле. Если не учитывать некоторые исключения, shred удаляет файлы лучше и безопаснее, чем rm.
Перевод статьи «How to Securely Erase a Disk and File using the Linux shred Command».