Гид по технологиям

Как безопасно удалить файлы в Linux с помощью shred

6 min read Linux Обновлено 02 Dec 2025
Как безопасно удалить файлы в Linux — shred
Как безопасно удалить файлы в Linux — shred

Кнопка удаления файла на клавиатуре компьютера

Что делает shred и как он работает

shred — это утилита командной строки, которая многократно перезаписывает содержимое файла случайными данными, а затем по желанию записывает нули и удаляет файл. Цель — сделать восстановление оригинального содержимого крайне сложным или невозможным.

Простая аналогия: бумажный лист можно сжать и выбросить — кто-то всё ещё может его развернуть и прочитать. Шредер режет лист на кусочки. shred действует как цифровой шредер: он многократно перезаписывает данные, чтобы восстановить исходный «печатный текст» было очень трудно.

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

Когда shred не подходит

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

  • Журналируемые или лог-структурированные ФС (например, ext3 в режиме journal, XFS, JFS).
  • RAID-решения с прозрачным распределением блоков (данные могут храниться на нескольких дисках вне последовательности).
  • Файловые системы со снимками (snapshots) — старые версии могут содержать данные.
  • Кеширующие и распределённые ФС (к примеру, сетевые хранилища, NFS с кэшированием).
  • Сжатые файловые системы — перезапись внутри сжатого контейнера не гарантирует уничтожение исходных блоков.
  • Твердотельные накопители (SSD) — из-за wear leveling и внутренних алгоритмов контроллера перезапись логического блока может не повлиять на все физические ячейки; дополнительно многократные записи сокращают ресурс SSD.

Примечание: в ext3 shred не эффективно только в режиме journal; в режимах data=writeback и data=ordered он работает лучше. Но полагаться на это в ответственных сценариях рискованно.

Базовый синтаксис

Основная форма команды:

shred [опции] файл

Где опции управляют количеством проходов, выводом и удалением.

Удаление файла навсегда

Чтобы перезаписать и удалить файл, обычно применяют комбинацию флагов -u, -v и -z:

  • -u — удалить файл после перезаписи
  • -v — подробный (verbose) вывод
  • -z — в конце записать нули (маскирует наличие случайных данных)

Пример:

shred -uvz textfile.txt

По умолчанию выполняются четыре прохода: три прохода случайными данными и final pass нулями при наличии -z. shred также пытается перезаписать inode (метаданные), если это возможно.

Вывод примера работы:

Пример вывода shred при удалении файла в Linux

Перезаписать файл нулями без удаления

Если нужно только перезаписать содержимое нулями, опустите флаг -u:

shred -vz textfile.txt

Вывод примера:

Пример вывода shred при перезаписи файла нулями в Linux

Задать число проходов

Флаг -n или –iterations задаёт количество случайных проходов. Учтите: shred всегда делает на один проход больше, чем указано (последний — обычно нули, если указан -z).

Чтобы получить шесть перезаписей, укажите 5:

shred -uvz -n 5 textfile.txt
shred -uvz --iterations 5 textfile.txt

Иллюстрация числа проходов перезаписи в shred

В большинстве сценариев 3 прохода достаточно; дополнительные проходы увеличивают время без заметного выигрыша.

Удаление нескольких файлов

Передайте списком файлы, разделённые пробелом:

shred -uvz file1.txt file2.txt file3.txt

Можно использовать подстановку:

shred -uvz *.txt

Частичная перезапись файла

shred может перезаписать только часть файла, например первые байты. Флаг -s или –size задаёт смещение/размер (в примере — 1K):

shred -vz -s 1K textfile.txt
shred -vz --size 1K textfile.txt

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

Исходный файл:

Исходный текстовый файл в Linux

Во время выполнения:

Частичная перезапись начала файла командой shred

Файл после частичной перезаписи:

Тот же документ после частичной перезаписи первых байт

Поддерживаемые суффиксы размера:

  • K — килобайты
  • M — мегабайты
  • G — гигабайты

Справка по команде

Для быстрого справочного вывода:

shred --help

Пример вывода справки:

Вывод справки shred (--help)

Альтернативы и когда применять другие методы

shred полезен для традиционных HDD и простых случаев, но для разных задач есть другие подходы:

  • srm (secure rm): специализированная утилита для безопасного удаления с дополнительными стратегиями перезаписи.
  • wipe: утилита для перезаписи свободного пространства и файлов.
  • dd с /dev/urandom или /dev/zero: для перезаписи целых разделов (но опасно и требует внимания).
  • full-disk encryption (LUKS): при корректной настройке удаление ключа шифрования делает все данные практически недоступными.
  • аппаратный ATA secure erase: встроенная в диски функция, корректно очищает многие SSD/HDD.
  • физическое уничтожение накопителя: единственный способ с абсолютной гарантией при высоком уровне угроз.

Выбор зависит от устройства, ФС и уровня угроз. Для ноутбука с важными данными предпочтительнее шифрование диска; для отдельного файла на HDD — shred или srm.

Контрпримеры: когда shred не сработает

  • Файл хранится в snapshot (LVM snapshot, btrfs snapshot) — старые снимки сохраняют данные.
  • Файл на сетевом хранилище (NFS, SMB) — перезаписи локально не доходит до удалённого хранилища.
  • SSD с wear leveling — контроллер может перенести данные, и перезапись не затронет все копии.
  • Файлы в индексируемых службах (бэкапы, облачные синхронизации) — данные остаются в резервных копиях.

Если есть сомнение, проверьте архитектуру хранения и снимки перед применением shred.

Практическое руководство (SOP) для безопасного удаления файла

  1. Оцените устройство и файловую систему (HDD vs SSD, ext4/ext3/XFS/btrfs, наличие RAID или snapshot).
  2. Если диск зашифрован (LUKS), рассмотрите удаление ключа и перезапись метаданных.
  3. Для HDD: используйте shred или srm. Для критичных данных — несколько проходов и -z.
  4. Для SSD: избегайте многократных перезаписей; предпочтительнее аппаратная secure erase или шифрование и удаление ключа.
  5. Проверьте наличие резервных копий и снимков; удалите их или убедитесь, что они также очищены.
  6. После удаления проверьте свободное пространство (и при необходимости перезапишите свободное пространство утилитами, совместимыми с ФС).
  7. Документируйте действие в журнале безопасности (что удалено, кем, когда, метод).

Пример команды по шагам для HDD

# Перезаписать 3 случайными проходами + нули, удалить, показать прогресс
shred -uvz -n 3 /path/to/secret.doc

Пример для образа раздела (опасно):

# Перезаписать весь раздел случайными данными (внимание: потеря данных)
dd if=/dev/urandom of=/dev/sdX bs=1M status=progress

Чек-лист по ролям

Администратор:

  • Проверить тип носителя и ФС.
  • Проверить наличие snapshot/RAID/бэкапов.
  • Рекомендовать шифрование для будущих разовых рисков.
  • Выполнить и документировать secure erase при необходимости.

Обычный пользователь:

  • Использовать shred для простых случаев на HDD.
  • Не применять многократные перезаписи на SSD.
  • Проверить, не синхронизируется ли файл в облако.

Аудитор безопасности:

  • Контролировать процедуры удаления и хранение журналов.
  • Проводить выборочные тестовые восстановления для проверки эффективности.

Примерный алгоритм принятия решения (Mermaid)

flowchart TD
  A[Нужно надёжно удалить файл?] --> B{Тип носителя}
  B -- HDD --> C{Есть ли snapshots/RAID/облака?}
  B -- SSD --> D[Рассмотреть шифрование или ATA secure erase]
  C -- нет --> E[Использовать shred/srm]
  C -- да --> F[Удалить snapshots/бэкапы, затем shred или физ. уничтожение]
  E --> G[Документировать действие]
  F --> G
  D --> G

Риски и способы смягчения

  • Риск: данные остались в snapshot или бэкапах. Смягчение: найти и удалить соответствующие копии.
  • Риск: SSD сохраняет данные из-за wear leveling. Смягчение: использовать аппаратный secure erase или шифрование и удаление ключа.
  • Риск: восстановление по метаданным (имена, временные метки). Смягчение: перезаписать inode, очистить логи, удалить резервные копии.

Проверка результата

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

Краткое резюме

  • shred — удобный инструмент для многократной перезаписи и удаления файлов на традиционных HDD.
  • Не полагайтесь на shred при работе с SSD, RAID, snapshot-совместимыми ФС и облачным хранением.
  • Для важнейших данных предпочтительнее шифрование диска с надёжным управлением ключами или аппаратные методы secure erase/физическое уничтожение.

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

Краткие рекомендации

  • Для обычных пользователей на HDD: shred -uvz файл.
  • Для SSD: используйте шифрование или аппаратный secure erase.
  • Для корпоративных сред: включайте процедуры удаления в политику управления конфиденциальными данными и ведите журнал действий.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Открыть WordPerfect (.wpd) в Windows 10
Tech

Открыть WordPerfect (.wpd) в Windows 10

Перенос закладок и истории: Chrome → Safari
Браузеры

Перенос закладок и истории: Chrome → Safari

Google Meet в Документах, Таблицах и Презентациях
Коммуникации

Google Meet в Документах, Таблицах и Презентациях

Сброс клавиатуры Samsung — быстрое восстановление
Инструкции

Сброс клавиатуры Samsung — быстрое восстановление

Автоматическое включение режима «Театр» на Apple Watch
Гайд

Автоматическое включение режима «Театр» на Apple Watch

Удалить Unity и перейти на GNOME в Ubuntu 17.10
Ubuntu

Удалить Unity и перейти на GNOME в Ubuntu 17.10