- Добавление и удаление на ходу SATA/SCSI устройств
- Удаление устройства
- Добавление устройства
- Linux-форензика в лице трекинга истории подключений USB-устройств
- Скриншоты
- Описание
- Справка
- Синтаксис
- Опции
- Примеры использования
- Ссылки и постскриптум
- Как удалить раздел в Linux
- Как удалить разделы на диске Linux
- 1. Графический интерфейс
- 2. Псевдографический интерфейс
- 3. Командная строка
- Выводы
Добавление и удаление на ходу SATA/SCSI устройств
Современный Linux (2.6+) может обнаруживать новоподключенные устройства (на шинах, которые поддерживают hotplug). Их можно, так же отключать, предварительно отмонтировав файловые системы и сделав sync. Среди hotplug шин не только USB, но и SATA, SCSI и SAS (в теории, это же применимо и к PATA, но там много глупых контроллеров, которые не умеют адекватно реагировать на исчезновение устройства).
Отключать их лучше не дёргая на ходу физическое устройство, а сказав ядру полностью забыть про про него (гарантируя тем самым, что никаких операций ввода-вывода с устройством производиться не будет, даже если вспохватившийся кеш). Кроме того, иногда нужно выполнять эмуляцию процедуры plug-unplug без физического дёргания питания/шины данных (что не очень хорошо для железа). Самая типичная ситуация — это отладка скриптов udev.
Удаление устройства
(x — буква устройства, sda, sdb, etc).
Эта команда удаляет указанное устройство. Заметим, это низкоуровневая команда, которая не проверяет кеш и статус примонтированности, так что лучше сначала сказать umount & sync.
К сожалению, я не знаю метода совместить выключение шпинделя диска с его удалением с точки зрения ядра. Шпиндель можно отключить командой scsi-spin, однако, при попытке удалить устройство, оно будет раскручено заново и удалено. А у удалённого устройства уже нельзя ничего останавливать (нет устройства). Так что эта часть проблемы пока не решена.
Добавление устройства
Мы не можем «добавить» устройство, мы можем отдать контроллеру команду «перечитать» список устройств, подключенных к тому или иному порту. Если там найдётся что-то интересное, ядру дадут знать.
X — номер шины, совпадает с номером SATA порта на материнской плате. Если не знаете, можете смело делать для всех хостов по очереди, ничего, кроме небольшого лага в дисковых операциях, незаметного для софта и файловой системы, это не даст.
Обратите внимание, host’ы нумеруются с 0, а не с 1. (а в dmesg ata устройства нумеруются с 1).
Так же осуществляется и сканирование USB-SATA переходников (usb-боксов и внешних винчестеров — они просто фигурируют как ещё один scsi_host).
Если мы говорим про SCSI, то вместо «- — -» можно указать точный номер устройства/шины/LUN’а сканируемого устройства (например, «200 1 2»). SATA, в силу архитектурных особенностей (один target для одного initiator) принимает туда только «0 0 0».
Ещё об удалении… Если вы не знаете буквы устройства, но знаете его физическое место подключения, то удалять можно «прямым текстом», записью «1» в «/sys/bus/scsi/devices/targetX:0:0/X:0:0:0/delete».
Источник
Linux-форензика в лице трекинга истории подключений USB-устройств
В рамках погружения в одну из дисциплин (в процессе обучения по специальности компбеза) я работал над одним занимательным проектом, который бы мне не хотелось просто похоронить в недрах папки «Универ» на внешнем винчестере.
Сей проект носит название usbrip и представляет собой небольшую консольную опенсорс утилиту для Linux-форензики, а именно для работы с историей подключений USB-устройств. Программа написана на чистом Python 3 (с использованием некоторых сторонних модулей) и не требует зависимостей помимо Python 3.x интерпретатора и пары строк из requirements.txt, разрешающихся одной строкой с помощью pip.
В этом посте я опишу некоторые возможности данного софта и оставлю краткий мануал со ссылкой на источник загрузки.
Снято! (… в смысле Cut!)
Примечание. Описываемый в статье функционал актуален для первой версии утилиты. За последней версией с множеством новых плюшек предлагаю перейти в репозиторий.
Скриншоты
Получение истории подключений съёмных USB-устройств:
Поиск дополнительной информации о USB-устройстве по идентификатору модели (PID’у):
Описание
Как известно, операционные системы на базе GNU/Linux очень трепетно относятся к логированию разного рода событий, и подключение/отключение USB-устройств не является исключением. В совокупности с одним из пунктов UNIX-философии о «текстовых потоках, как универсальных интерфейсах» информацию об артефактах таких событий (с разной степенью подробности) в зависимости от дистрибутива можно обнаружить в одном или нескольких из следующих текстовых файлов:
- /var/log/kern.log* ;
- /var/log/syslog* ;
- /var/log/messages* ;
- /var/log/dmesg* ;
- /var/log/daemon.log* .
FORENSIC-PROOF даже показывает нам такую картинку на этот счет (немного неполную, но неважно):
Для своей работы usbrip находит универсальные для всех сборок Linux, основанных на Debian (Ubuntu, Linux Mint и др.) и RPM (CentOS, Fedora, openSUSE и др.), лог-файлы, а именно: /var/log/syslog* или /var/log/messages* , парсит их в поисках нужной информации и обликает найденные следы подключений USB-устройств в красивые таблички (или списки — как угодно).
Также usbrip умеет:
- создавать списки авторизированных (доверенных) устройств в виде JSON-файлов;
- искать «события-нарушителей» на основе списка доверенных устройств: такие события (подключение/отключение USB), в которых участвовали USB-устройства, не отмеченные как доверенные;
- искать дополнительную информацию о USB-устройстве по его VID (Vendor ID) и/или PID (Product ID).
Справка
Получить список доступных модулей:
Получить список доступных подмодулей для конкретного модуля:
Получить список доступных опций для конкретного подмодуля:
Синтаксис
Опции
Примеры использования
Показать историю подключений всех USB-устройств, опуская баннер, информационные (зелёные) сообщения, а также не задавая вопросы по ходу выполнения ( -q, —quite ), сформировав вывод в виде списка ( -l, —list ), включив в него 100 последних найденных событий ( -n КОЛИЧЕСТВО_СОБЫТИЙ, —number КОЛИЧЕСТВО_СОБЫТИЙ ):
Показать историю подключений съёмных USB-устройств ( -e, —external ), сформировав вывод в форме таблицы с полями (столбцами) «Connected», «VID», «PID», «Disconnected» и «Serial Number» ( -c СТОЛБЕЦ [СТОЛБЕЦ . ], —column СТОЛБЕЦ [СТОЛБЕЦ . ] ), отфильтровав поиск по датам ( -d ДАТА [ДАТА . ], —date ДАТА [ДАТА . ] ), взяв при этом информацию из внешних лог-файлов ( -f ЛОГ_ФАЙЛ [ЛОГ_ФАЙЛ . ], —file ЛОГ_ФАЙЛ [ЛОГ_ФАЙЛ . ] ):
Построить таблицу истории подключений всех USB-устройств и перенаправить вывод в файл для дальнейшего анализа. В том случае, если поток вывода не стандартный stdout ( «|» либо «>» к примеру) в выходных данных не будут присутствовать спец. символы, отвечающие за цвет шрифта в терминале, поэтому текстовый файл не будет замусорен нечитаемыми символами. Также нужно отметить, что usbrip использует некоторые UNICODE-константы, поэтому было бы неплохо сразу конвертировать кодировку создаваемого файла в UTF-8 для их корректного отображения (например с помощью encov ), а также использовать символы новой строки в Windows-стиле для лучшей переносимости (например с помощью awk ):
Примечание: избавиться от спец. символов, отвечающих за цвет можно и в том случае, если вывод уже был направлен в stdout. Для этого необходимо скопировать полученные данные в новый файл usbrip.txt и добавить еще одну awk -инструкцию:
Создать список доверенных устройств в виде JSON-файла ( trusted/auth.json ), содержащего поля «VID» и «PID» первых трех устройств, подключенных 26-го сентября:
Найти среди истории подключений съёмных USB-устройств «события-нарушители» на основе списка доверенных устройств ( trusted/auth.json ) по полю «PID» и сформировать вывод в виде таблицы с полями «Connected», «VID» и «PID»:
Найти дополнительную информацию о USB-устройстве на основе его VID’а и PID’а:
Загрузить/обновить базу данных идентификаторов USB-устройств (источник здесь):
Ссылки и постскриптум
Забрать утилиту можно с Гитхаба, все зависимости для запуска и корректной работы указаны в requirements.txt.
Благодарю за внимание!
P. S. да, стиль баннера и информационных сообщений вдохновлен проектом sqlmap (*^.^*)
UPD 13.06.2018. Появилось расследование реального (?) кейса с участием моей утилиты от человека с Codeby (сам в шоке, если честно).
Источник
Как удалить раздел в Linux
Если вы работаете с дисками в Linux, то у вас время от времени возникает необходимость создавать таблицы разделов, создавать и форматировать новые разделы, а также удалять разделы. Это может понадобится для установки ещё одной системы, или просто перераспределения свободного места между разделами.
Удалить раздел в Linux можно как в графическом интерфейсе, так и в командной строке. Причем, в командной строке для этого есть несколько утилит. Есть да утилита с псевдографическим интерфейсом. В этой статье мы рассмотрим как выполняется удаление разделов Linux разными способами.
Как удалить разделы на диске Linux
1. Графический интерфейс
В графическом интерфейсе чаще всего для управления дисками и разделами используется программа Gparted. Обычно она уже предустановлена в большинстве дистрибутивов. Если же в вашем дистрибутиве её нет, то программу достаточно просто установить. Для этого в Ubuntu или Debian выполните такую команду:
sudo apt install gparted
Для Fedora команда будет выглядеть вот так:
sudo dnf install gparted
В Arch Linux тоже будет отличаться только пакетный менеджер:
sudo pacman -S gparted
Запустить программу можно из главного меню:
Далее в правом верхнем углу программы выберите диск, на котором вы хотите удалить раздел. В данном случае будет использоваться /dev/sdb:
Если раздел сейчас смонтирован в системе, то удалить его вы не сможете. На это указывает ключ возле диска. Сначала необходимо его размонтировать. Для этого откройте контекстное меню и выберите Отмонтировать:
Далее можно удалить раздел. Для этого в том же контекстном меню выберите Удалить. Теперь этот пункт будет активным:
Раздел удалён в интерфейсе программы, но изменения ещё не применены к системе. Для того чтобы их применить кликните по зелёной галочке или откройте меню Правка и выберите Применить все изменения:
Далее применение изменений надо подтвердить. Если не возникло никаких ошибок, дальше пойдёт процесс удаления раздела, а потом вы сможете пользоваться появившемся свободным местом по своему усмотрению:
Теперь вы знаете удалить разделы на диске Linux в графическом интерфейсе.
2. Псевдографический интерфейс
Если вам нужно удалить раздел Linux в терминале, но у вас нет доступа к графическому интерфейсу и вы не хотите пользоваться утилитами командной строки, можно воспользоваться утилитой с псевдографическим интерфейсом — cfdisk. Если она ещё не установлена в вашей системе её можно установить так:
sudo apt install cfdisk
Для других дистрибутивов будет отличаться только пакетный менеджер. Перед запуском утилиты надо определиться на каком диске нужно удалять раздел. Для этого можно воспользоваться командой lsblk:
Например, можно удалить тот же /dev/sdb1. Обратите внимание, что если этот раздел диска примонтирован к системе, то его сначала надо отмонтировать. Для этого выполните:
sudo umount /dev/sdb1
Теперь запустите утилиту и передайте ей в параметре имя диска, на котором расположен этот раздел. Команду надо выполнять от имени суперпользователя:
sudo cfdisk /dev/sdb
В окне утилита отобразит список доступных разделов на выбранном диске:
В низу окна программы есть кнопки, которыми вы можете пользоваться для удаления и создания разделов. Перемещаться по ним можно с помощью кнопок со стрелками вправо и влево, а по разделам диска — стрелками вверх и вниз. Выберите нужный раздел, а затем кнопку Удалить и нажмите Enter:
Утилита сообщает, что раздел удалён, но как и в случае с Gparted изменения надо записать на диск, для этого нажмите кнопку Запись:
Затем введите слово yes, для того чтобы подтвердить изменения:
Теперь вы можете использовать полученное свободное пространство. Для того чтобы закрыть программу используйте кнопку Выход. Благодаря cfdisk удалить разделы жесткого диска linux в терминале не так уже и сложно.
3. Командная строка
Если два предыдущих варианта вам не подходят, можете воспользоваться утилитой fdisk. У неё нет никакого интерфейса и вам придется делать всё вручную. Сначала посмотрите список дисков:
Далее можно запускать программу. Программе необходимо передать путь к диску (не разделу), на котором надо удалить раздел и запустить её надо от имени суперпользователя. Например:
sudo fdisk /dev/sdb
Утилита работает в интерактивном режиме и имеет свой интерпретатор команд. Для вывода доступных команд нажмите m и Enter:
Для того чтобы посмотреть список разделов на выбранном диске выполните команду p:
Для удаления раздела необходимо выполнить команду d. Обратите внимание на номера разделов в списке после sdb. Команда спросит номер раздела, который вы хотите удалить и именно этот номер надо указать. Например 1:
Все изменения выполнены только в памяти программы. Для того чтобы записать их на диск и удалить разделы fdisk linux необходимо использовать команду w:
После этого можно пользоваться свободным пространством. Более подробно об утилите fdisk можно почитать в этой статье.
Выводы
В этой небольшой статье мы разобрали как удалить раздел в Linux несколькими способами. Как видите, есть простые способы, есть более сложные, но во всём можно разобраться. А какой программой пользуетесь вы для удаления разделов? Напишите в комментариях!
Источник