Нет никакой прямой угрозы безопасности с созданием исполняемого файла файла, если это не 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
Существует много различных способов сделать это.
Необходимо не обязательно 'отформатировать' (т.е. сделать файловую систему — Вы не можете отформатировать карты с интерфейсом 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 (если у Вас нет его, имя пакета Debian/Ubuntu является немного нестандартным partitionmanager
). Сделайте очевидную вещь.
Используйте Дисковую утилиту Gnome (Палимпсест). Это довольно тривиально для использования: просто выберите свою Карту памяти слева. Если это уже имеет раздел, нажмите кнопку 'Format'. Иначе существует кнопка 'Format Drive', которая сделает все для Вас.
Попросите, чтобы Ubuntu имела этот точный вопрос, уже отвеченный: Как отформатировать Карту памяти или внешний диск в 11,10? — отмечают, как это просто обходит Вас посредством использования Написанной поверх Дисковой утилиты.
Мой собственный любимый инструмент GUI для этого задания является GParted. Это делает все, в чем Вы нуждаетесь (кроме, к сожалению, LVM и шифрование), и это удобно для пользователя для начальной загрузки.
Взгляните на mkfs
семейство утилит (в зависимости от того, к чему Вы хотите отформатировать, можно хотеть mkfs.ext[234]
, mkfs.vfat
, или что-то еще полностью). Примите во внимание, что Вам, вероятно, также придется изменить идентификатор типа раздела в использовании таблицы разделов fdisk
или подобный, чтобы заставить его работать через системы.
К (ре) создают файловую систему, используют одно из mkfs семейства инструментов. Выберите тот на основе того, какую файловую систему Вы хотите; наиболее распространенные:
mkfs.vfat
) для максимальной совместимости. FAT32 не имеет никакого понятия принадлежности файла или полномочий или символьных ссылок или многих других unixy понятий, просто файлы и каталоги со многими знаками пунктуации, запрещенными в именах файлов и никакой чувствительности к регистру. Максимальный размер файла составляет 4 ГБ. Выберите эту файловую систему, если просто необходимо сохранить набор файлов, которые не больше, чем 4 ГБ.Необходимо будет узнать название устройства, что диск включен. В соответствии с 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
Сделайте очень очень уверенными, что Вы выбираете правильное имя устройства, поскольку это сотрет все данные без надежды на восстановление.
Обратите внимание, что, в то время как это сотрет данные без возможности восстановления обычными средствами программного обеспечения, это может уехать, трассировки позади этого могут быть восстановлены с некоторой электронной работой. Посмотрите, что достаточно только вытереть флеш-накопитель однажды?. Единственный совместимый паранойей способ стереть данные по флеш-накопителю состоит в том, чтобы зашифровать его во-первых и уничтожает все копии ключа.