Команда shred

Команда shred предназначена для вызова утилиты, осуществляющей безопасное удаление файлов. В отличие от утилиты rm, которая просто удаляет ссылку на файл, shred несколько раз перезаписывает его содержимое, максимально затрудняя тем самым восстановление файла злоумышленником. Использование рассматриваемой утилиты может оказаться недостаточным для безопасного удаления файлов, расположенных на разделах с журналируемыми файловыми системами (Ext4, XFS, JFS, BtrFS), а также RAID-массивах с зеркалированием данных. В случае файловой системы Ext4 приведенное выше утверждение справедливо лишь при условии использования режима журналирования (активируемого в момент монтирования файловой системы с помощью параметра data=journal); при использовании других режимов (активируемых с помощью используемого по умолчанию параметра data=ordered и параметра data=writeback) утилита полностью выполняет свою задачу.

Базовый синтаксис команды выглядит следующим образом:

$ shred [параметры] …

Утилита может самостоятельно изменять права доступа к файлу для перезаписи его содержимого в случае использования параметра -f, самостоятельно удалять файл при использовании параметра -u, осуществлять заданное количество перезаписей содержимого файла при использовании параметра -n и заполнять файл нулевыми байтами при последней перезаписи при использовании параметра -z.

Примеры использования

Безопасное удаление отдельного файла

Для демонстрации принципа работы рассматриваемой утилиты создадим текстовый файл с известным содержимым:

$ echo "Password: 1w3n7_532-qq" > passwd.txt

Проверим его содержимое:

$ cat passwd.txt
Password: 1w3n7_532-qq

Теперь используем утилиту shred:

$ shred passwd.txt

И снова проверим его содержимое:

$ cat passwd.txt
Ò´¿(j}yãÒÒÁXp|ÄþÅJ]vìâ£íÕ!¸`ÓçÚá/é²c§øn
cí%±0zÖTt¯É
¤~Q£_,§Àý?ÎO|Ù{>A0æä~Ë«Á@¾p^ÈÅáÜyÌ¡èÂ$®5Í^8fµ


4ÒWc@!-5üÁ%¨çN!"R
Îo8{³FI¸* ¨ç´
àÀTÛ^
WÑ8ÇkÇRá3¯çz[ÔhB®ÙºÉ%lk @°pÅ%F ¾áDcmÃïÿfG]5Ýiû²

Содержимое файла перезаписано случайными данными, осталось удалить его:

$ rm passwd.txt

Безопасное удаление нескольких файлов

Для перезаписи случайными данными содержимого нескольких файлов следует использовать аналогичную команду:

$ shred file1.html file2.html file3.html

Для того, чтобы утилита самостоятельно удалила эти файлы после перезаписи их содержимого следует использовать параметр -u:

$ shred -u file1.html file2.html file3.html

Безопасная очистка содержимого раздела накопителя данных

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

# shred /dev/sda5

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