Как я могу отформатировать карту флэш-памяти так, чтобы я удалил все существующие файлы?

Нет никакой прямой угрозы безопасности с созданием исполняемого файла файла, если это не setuid или setgid. Конечно, существует косвенный риск, что что-то, Вы ожидаете быть инертными — некоторый файл данных, который Вы обычно открывали бы в приложении — может также быть выполнено непосредственно в Вашей системе с низкими последствиями. Например, если у Вас есть файл под названием README, который на самом деле содержит программу руткита, открытие его в текстовом редакторе безопасно, но Вы лучше не выполнили бы его.

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

for x in *; do
  case $(file - <"$x") in
    *executable*) chmod +x -- "$x";;
  esac
done

Вот другая эвристика, которая должна отличаться только по угловым случаям ($'\177' ksh/bash/zsh синтаксис, замените его буквенным символом 0177 = 127 = 0x7f в других оболочках).

for x in *; do
  case $(head -c 4 <"$x") in
    '#!'*|$'\177'ELF) chmod +x -- "$x";;
  esac
done

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

for x in *; do
  case $(head -c 2 <"$x") in
    '#!') chmod +x -- "$x";;
    *) if ldd -- "$x" >/dev/null 2>/dev/null; then chmod +x "$x"; fi;;
  esac
done
4
22.07.2014, 15:49
3 ответа

Существует много различных способов сделать это.

Командная строка

Необходимо не обязательно 'отформатировать' (т.е. сделать файловую систему — Вы не можете отформатировать карты с интерфейсом USB в, исправляет значение слова), палка, если Вы просто хотите удалить все файлы.

Принятие палки смонтировано под /media/something, можно сказать:

sudo rm -rf /media/something/*

Вас не попросят подтвердить! Это не коснется скрытых файлов (папки корзины из Windows или Mac, и т.д.).

Если Вы хотите нетронутую файловую систему, удостоверьтесь, что файловая система размонтирована сначала:

sudo umount /dev/whatever_the_device_is
sudo mkfs.vfat -n "Volume Label" /dev/whatever_the_device_is

Это сделает файловую систему FAT. Если Вам нужна файловая система NTFS, всегда существует mkfs.ntfs, но необходимо знать, что некоторые реализации являются багги. Это зависит от Вашего распределения и насколько недавний это.

KDE

Разожгите менеджера по Разделу KDE (если у Вас нет его, имя пакета Debian/Ubuntu является немного нестандартным partitionmanager). Сделайте очевидную вещь.

Gnome

Используйте Дисковую утилиту Gnome (Палимпсест). Это довольно тривиально для использования: просто выберите свою Карту памяти слева. Если это уже имеет раздел, нажмите кнопку 'Format'. Иначе существует кнопка 'Format Drive', которая сделает все для Вас.

Ubuntu 11

Попросите, чтобы Ubuntu имела этот точный вопрос, уже отвеченный: Как отформатировать Карту памяти или внешний диск в 11,10? — отмечают, как это просто обходит Вас посредством использования Написанной поверх Дисковой утилиты.

Все остальное

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

7
27.01.2020, 20:47

Взгляните на mkfs семейство утилит (в зависимости от того, к чему Вы хотите отформатировать, можно хотеть mkfs.ext[234], mkfs.vfat, или что-то еще полностью). Примите во внимание, что Вам, вероятно, также придется изменить идентификатор типа раздела в использовании таблицы разделов fdisk или подобный, чтобы заставить его работать через системы.

3
27.01.2020, 20:47

К (ре) создают файловую систему, используют одно из mkfs семейства инструментов. Выберите тот на основе того, какую файловую систему Вы хотите; наиболее распространенные:

  • FAT32 (mkfs.vfat) для максимальной совместимости. FAT32 не имеет никакого понятия принадлежности файла или полномочий или символьных ссылок или многих других unixy понятий, просто файлы и каталоги со многими знаками пунктуации, запрещенными в именах файлов и никакой чувствительности к регистру. Максимальный размер файла составляет 4 ГБ. Выберите эту файловую систему, если просто необходимо сохранить набор файлов, которые не больше, чем 4 ГБ.
  • NTFS для совместимости с Windows. Поддерживается большинство основных unixy функций. Поддержка NTFS под операционными системами кроме Windows имеет тенденцию быть немного облупленной, поэтому выберите эту файловую систему, только если Вам нужны совместимость Windows и большие файлы.
  • ext4 является фактической стандартной файловой системой Linux. Выберите это при необходимости в unixy функциях, таких как символьные ссылки и полномочия.
  • ext2 является более старой версией ext4 (испытывающий недостаток в функциях, таких как журнал и хорошая поддержка каталогов с тысячами файлов) и поддерживается большим количеством систем Unix, чем ext4 (но не надеются на чудеса в соответствии с Windows). Выберите это при необходимости в хорошей поддержке в BSD и по крайней мере поддержке только для чтения в соответствии с Windows.

Необходимо будет узнать название устройства, что диск включен. В соответствии с Linux, съемные диски обычно имеют имена как /dev/sda, /dev/sdb, и т.д. обязательно выберите правильный, или Вы могли бы стереть свой жесткий диск. В соответствии с Linux, можно получить список доступных дисков и их разделов путем выполнения cat /proc/partitions; число в третьем столбце является размером в килобайтах. Можно также понять то, где диск включается путем рассмотрения имен в /dev/disk/by-path, и модели диска в /dev/disk/by-id. Карты флэш-памяти обычно имеют единственный раздел, пронумерованный 1.

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

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

mkfs.TYPE /dev/NAME_OF_DEVICE

Не забудьте помещать правильное число раздела. Если Вы запускаете Linux, и у Вас есть единственный жесткий диск и никакой другой подключенный внешний диск, устройство обычно /dev/sdb1. Таким образом типичная команда

sudo mkfs.vfat /dev/sdb1      # be sure to adjust the device name if necessary

mkfs оставит некоторые фрагменты старых данных на месте, которые не будут стерты, пока они не будут перезаписаны новым файлом. Эти фрагменты могут быть восстановлены путем рассмотрения содержания устройства, обхода файловой системы. (Нет никакой гарантии, что будет легко восстановить значимые данные из фрагментов, не надейтесь использовать это в качестве отмены для oops-I-formatted-the-wrong-device.), Если Вы хотите стереть все существующие данные, выполните следующую команду прежде mkfs:

tee </dev/zero /dev/NAME_OF_DEVICE

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

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

2
27.01.2020, 20:47

Теги

Похожие вопросы