Использование `shred` из командной строки

44

Мне нужно безопасно удалить некоторые файлы. Я использовал shredв системах Linux раньше, поэтому я посмотрел вокруг и обнаружил, что shredэто часть coreutilsпакета в macports. Я сделал port install coreutilsдля установки coreutils, но я все еще не могу найти shredв командной строке.

Как я могу получить shredработу в командной строке моего Mac? Если это имеет значение, я использую Mac OS X 10.7.5 (Lion)

inspectorG4dget
источник
Обратите внимание, что безопасность shredзависит от используемой файловой системы, я не знаю, насколько она эффективна на HFS.
Flimm
1
shred не эффективен в журнализированных файловых системах, поэтому он недоступен. SRM также оказался неэффективным. Просто удалите как обычно, и молитва, похоже, является единственной надеждой для файловых систем, находящихся в журнале hfs +
Кевин Джонсон
В самом деле?! Не могли бы вы рассказать о том, почему это не эффективно?
инспектор
1
Журнализированные файловые системы записывают изменения, которые будут сделаны перед записью на диск. Его можно использовать для восстановления после повреждения файла или для восстановления данных, которые вы хотели уничтожить. См. En.wikipedia.org/wiki/Journaling_file_system
Алекс Муни

Ответы:

27

port install coreutilsдобавляет префикс ag к именам двоичных файлов, так что shred есть /opt/local/bin/gshred.

LRI
источник
9
brew install coreutilsделает gshredдоступным для тех, кто использует Homebrew.
Давиджб
59

OSX имеет встроенную команду srmдля безопасного удаления файлов. См. Https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/srm.1.html . Вы также можете использовать rm -Pдля перезаписи файлов с последовательностями байтов три раза.

В sierra или более поздних версиях macOS больше не включает srm. Но пользователи могут установить его с помощью homebrew:

brew install homebrew/dupes/srm && brew link --force homebrew/dupes/srm
Лили Хан
источник
1
Конечно, но клочок позволяет мне установить количество перезаписей. Эти инструменты не делают. Любые идеи о том, как получить эту функциональность?
инспектор
2
+1 Отличный ответ. Я не знал, что srmкоманда существует. Он перезаписывает, переименовывает и усекает файл перед его удалением. Это, а также 7 проходов, совместимых с DoD США (0xF6, 0x00, 0xFF, random, 0x00, 0xFF, random) (опция -m) гарантируют, что файл не будет восстановлен.
Тулаинс Кордова
3
Что касается macOS Sierra, srmбольше не входит.
y3sh
1
Пользователи MacOS могут установить srmс помощью команды brew brew install homebrew/dupes/srm.
hd.deman
1
homebrew/dupesсейчас устарела. Кажется, что srmбыло удалено и не перенесено в homebrew-core.
davidjb
18

@ user495470 ответ правильный для поставленного вопроса. Проблема не в том srmили shredне имеет смысла для современных систем.

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

SSD также выполняют выравнивание износа. Это делает попытки «перезаписать» файл как бесполезным (вы будете записывать в другое физическое место), так и нежелательным (это излишне способствует износу диска).

На всех компьютерах Mac, оснащенных твердотельными накопителями, включена функция TRIM.

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

Даже на магнитных носителях это может вызвать проблемы для обоих srm:

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

И shred:

[..] Шред полагается на очень важное предположение: файловая система перезаписывает данные на месте. [..] многие современные конструкции файловых систем не удовлетворяют этому предположению. Исключения включают: файловые системы с лог-структурой или журналами [..]

Тома HFS Plus записываются в журнал по умолчанию начиная с Mac OS X v10.3.

В наши дни лучший способ надежно «удалить» файлы - это включить FileVault (чтобы они никогда не записывали диск в незашифрованном виде), а затем просто удалить их и позволить TRIM разобраться с этим.

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

Molomby
источник
Но я думаю, что уничтожить все равно можно, если вы уничтожите весь раздел или весь диск.
Константин
Вы имеете в виду как shred /dev/hda? Да, я так думаю. Блоки, адресуемые ОС, по-прежнему абстрагированы от физической памяти и потенциально могут быть переназначены во время уничтожения. Интересно, может ли реализация выравнивания износа и резервное пространство стать причиной того, что это не всегда будет работать ..
Моломби,
+1 за объяснение того, почему измельчение бессмысленно на твердотельных накопителях, и предложение использовать FileVault. Журнал APFS заносится в журнал или мы знаем, как он обрабатывает удаление файлов? (Вероятно, должна быть отдельная тема!)
Стюарт Х
1
Кажется, здесь есть предположение, что безопасное удаление необходимо только для «внутренних» дисков. Прилагаемые диски бывают всех форм, и для некоторых из них будет подходящим srm.
Рондо