- Общий обзор доступных параметров идентификации
- Рекомендации по выбору параметров идентификации
- Ограничение портов подключения устройств
- Примерный шаблон правила udev
- Запрет подключения USB-устройств
- Автоматическое удаление всех USB-устройств
- Автоматическая деавторизация всех USB-устройств
- Селективное удаление USB-устройств
- Получение информации о подключенных блочных устройствах (дисках)
- Получение информации о подключенных устройствах USB
- Получение информации об устройствах, подключенных к шине PCI
- Инструмент lswh — подробная информация о системе
- Получение информации о CPU
- Используемые утилиты
Общий обзор доступных параметров идентификации
В данный обзор не включены параметры устройств, относящиеся к их подключению к ОС. Такие параметры нежелательно применять для идентификации устройств, так как они:
- могут повторяться для разных устройств (присвоение имени sdX);
- могут зависеть от порядка подключения устройств (присвоение имен sdX);
- могут изменяться при изменении аппаратной конфигурации;
- с высокой вероятностью будут отличаться на разных доменных компьютерах, имеющих разную аппаратную конфигурацию.
Далее под термином «носитель» («съемный носитель», «дисковый носитель») по умолчанию подразумевается носитель информации типа накопитель на жестких магнитных дисках, накопитель SSD, USB-flash. Особенности применения иных носителей (сменных носителей, таких, как CD, DVD, SD-карты) оговорены в тексте.
Все параметры подключенного устройства можно получить командой:
Выполнить мониторинг событий, происходящих при операциях с устройствами , можно командой:
- Операции назначения мандатных атрибутов выполняются при подключении дикового или сменного носителя:
- Для съемных устройств типа «диск» (также применимы к устройствам типа «дисковый раздел», которыми наследуются от устройства «диск»):
- ENV==»SanDisk»
- ENV==»0781″
- ENV==»SanDisk\\x20″
- ENV==»Cruzer_Glide»
- ENV==»5575″
- ENV==»Cruzer\\x20Glide\\x20\\x20\\x20\\x20″
- ENV==»SanDisk_Cruzer_Glide_XXXXXXXXXXXXXXXXXX-0:0″
- ENV==»XXXXXXXXXXXXXXXXXX»
- «ENV==»FLASH128G2»
- «ENV==»FLASH128G2»
- «ENV=1»
- «ENV==»vfat»
- «ENV==»filesystem»
- «ENV==»0047-C44D»
- «ENV==»0047-C44D»
- «ENV==»FAT32»
- «ENV=1»
Рекомендации по выбору параметров идентификации
- Основным минимальным параметром идентификации съемного носителя является его серийный номер (ID_SERIAL или ID_SERIAL_SHORT). Для сменных носителей идентифицирующими являются только параметры ID_FS_LABEL и ID_FS_LABEL_ENC;
Следует помнить, что все параметры файловой системы подделать гораздо проще, чем параметры физического носителя, поэтому предпочтительно придерживаться политики «один носитель — один дисковый раздел».
- Метку файловой системы (ID_FS_LABEL);
- Универсальный идентификатор файловой системы UUID (ID_FS_UUID);
- Номер раздела на носителе (ID_PART_ENTRY_NUMBER>.
Параметры дисковых разделов, описывающие файловую систему (ID_FS_TYPE и ID_FS_VERSION) могут быть использованы для создания правил монтирования с учетом кодировок (известная проблема: правило монтирования, по умолчанию заданное в файле etc/fstab.pdac для устройства /dev/sd* несовместимо с устройствами с файловой системой ext4).
Ограничение портов подключения устройств
Для программного запрета подключать учтенные устройства к незарегистрированным портам можно использовать параметр DE VPATH в правилах вида:
ENV!="/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/*", GOTO="END"
где в качестве аргумента указывается префикс пути к подключенному устройству. Обратите внимание на последний символ — ‘*’, обеспечивающий возможность сравнения неполных строк.
Следует помнить, что на разных машинах пути подключения могут быть разными, а при изменении аппаратной конфигурации пути подключения могут изменяться.
Также нельзя гарантировать, что пути подключения останутся неизменными после перезагрузки, так как устройства при загрузке ОС могут определяться в разном порядке.Примерный шаблон правила udev
Автоматически создаваемые локальные правила Parsec находятся в каталоге /etc/udev/rules.d/.
Автоматически создаваемые доменные правила Parsec находятся в каталоге /run/udev/rules.d/.Идентификация дискового раздела по серийному номеру устройств и UUID:
# отсекаются ненужные устройства - вероятность несовпадения серийника выше, правило сработает чаще ENV!="SanDisk_Cruzer_Glide_ХХХХХХХХХХХХХ-0:0", GOTO="END" ENV!="0047-C44D", GOTO="END" # отсекаются ненужные события ACTION!="add", GOTO="END" ENV!="block", GOTO="END" ENV!="partition", GOTO="END" # настройка правил Parsec OWNER="luser", GROUP="root", MODE="740", PDPL="0:0:0x0:0x0!:", AUDIT="o:0x0:0x0" ENV=="?*", SYMLINK+="%k_$env", RUN+="/bin/ln -f /dev/%k /dev/%k_$env" LABEL="END"
Запрет подключения USB-устройств
Автоматическое удаление всех USB-устройств
Для полного запрета подключения USB-устройств создать правило udev, например, в файле /etc/udev/rules.d/99-local.rules:
ACTION!="add", GOTO="DONE" ENV!="usb", GOTO="DONE" RUN="/bin/sh -c 'echo 1 >/sys$devpath/remove'", RUN="/usr/bin/logger -s 'Astra mount: remove device %E %E %E'" LABEL="DONE"
Это правило отключает все USB-устройства (диски и дисковые разделы) немедленно после их подключения.
Автоматическая деавторизация всех USB-устройств
Для запрета использования USB-устройств создать правило udev, например, в файле /etc/udev/rules.d/99-local.rules:
ACTION!="add", GOTO="DONE" ENV!="usb", GOTO="DONE" RUN="/bin/sh -c 'echo 0 >/sys$devpath/authorized'", RUN="/usr/bin/logger -s 'Astra mount: deauth device %E %E %E'" LABEL="DONE"
Это правило запрещает использовать все USB-устройства немедленно после их подключения.
Селективное удаление USB-устройств
- Создать сценарий для удаления устройства, например:
- Создать файл /usr/sbin/astra-mount со следующим содержимым:
#!/bin/bash l="/usr/bin/logger -s -t \"Astra-mount:\"" path="/sys$1" while true ; do if [[ "$path" == "/sys/devices" ]] ; then $l "Remove option not found" exit 1 fi if [ -f "$path/remove" ] ; then $l "Removing $path/remove" echo 1 > "$path/remove" || $l "Can not remove $path/remove" break fi path=`dirname "$path"` done
- Получает в качестве единственного аргумента путь к устройству;
- Последовательно ищет по полученному пути к устройству родительское устройство, поддерживающее операцию удаления;
- Выполняет операцию удаления;
ACTION=="add", ENV=="usb", ENV=="disk", RUN+="/usr/sbin/astra-mount $devpath"
Получение информации о подключенных блочных устройствах (дисках)
Для получения информации о подключенных блочных устройствах (дисках) можно использовать команду lsblk:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 3,6G 0 rom
vda 252:0 0 30G 0 disk
├─vda1 252:1 0 26G 0 part /
├─vda2 252:2 0 1K 0 part
└─vda5 252:5 0 4G 0 part [SWAP]Команда предоставляет информацию о названиях, размерах и точках монтирования устройств.
Получение информации о подключенных устройствах USB
Для получения информации о подключенных блочных устройствах (дисках) можно использовать команду lsusb:
lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubПолучение информации об устройствах, подключенных к шине PCI
Для получения информации об устройствах, подключенных к шине PCI можно использовать команду lspci:
-k — выводить информацию о драйверах устройств;
-v — выводить подробную информацию;
Инструмент lswh — подробная информация о системе
Инструмент по умолчанию не устанавливается и может быть установлен командой:
Для получения полной информации инструмент следует использовать от имени sudo.
Примеры:- Краткая справка по оборудованию:
Получение информации о CPU
Используемые утилиты
lscpu — позволяет получить информацию о количестве ядер процессора, максимальной и минимальной частоте работы, а также объеме кэш-памяти. Утилита входит в состав установочного диска и устанавливается автоматически в процессе станлартной установки системы.
cpufreq-info — позволяет получить информацию о текущей частоте ядер процессора. Утилита предоставляется пакетом cpufrequtils, и для ОС Astra Linux Special Edition входит в состав диска со средствами разработки. При наличии подключенного репозитория пакет может быть установлен командой
Для получения информации о количестве ядер процессора, объеме кэш-памяти, максимальной и минимальной частотах работы, выполнить команду lscpu:
lscpu
Архитектура:x86_64
CPU op-mode(s): 32-bit, 64-bit
Порядок байт:Little Endian
CPU(s): 6
On-line CPU(s) list: 0-5
Thread(s) per core: 1
Ядер на сокет:6
Сокетов: 1
NUMA node(s): 1
ID прроизводителя:GenuineIntel
Семейство ЦПУ:6
Модель: 158
Имя модели: Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz
Степпинг: 10
CPU MHz: 3900.072
CPU max MHz: 4000,0000
CPU min MHz: 800,0000
BogoMIPS: 5616.00
Виртуализация:VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 9216K
NUMA node0 CPU(s): 0-5
Флаги: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_
perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic
movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_ad
just bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1dCPU(s): 6 — Количество виртуальных (потоков) или реальных ядер
Thread(s) per core: 1- Количество потоков на реальное ядро
Ядер на сокет:6 — Количество ядер процессора
CPU MHz: 3900.072 — Текущая частота
CPU max MHz: 4000,0000 — Максимальная доступная частота
CPU min MHz: 800,0000 — Минимальная доступная частота
L* cache — Объём кеша разных уровней
Для получения расширенной информации о текущей частоте выполнить команду:
cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: intel_pstate
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 4294.55 ms.
hardware limits: 800 MHz — 4.00 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 4.00 GHz.
The governor «performance» may decide which speed to use
within this range.
current CPU frequency is 3.90 GHz.
analyzing CPU 1:
driver: intel_pstate
CPUs which run at the same hardware frequency: 1
CPUs which need to have their frequency coordinated by software: 1
maximum transition latency: 4294.55 ms.
hardware limits: 800 MHz — 4.00 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 4.00 GHz.
The governor «performance» may decide which speed to use
within this range.
current CPU frequency is 3.84 GHz.
analyzing CPU 2:
driver: intel_pstate
CPUs which run at the same hardware frequency: 2
CPUs which need to have their frequency coordinated by software: 2
maximum transition latency: 4294.55 ms.
hardware limits: 800 MHz — 4.00 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 4.00 GHz.
The governor «performance» may decide which speed to use
within this range.
current CPU frequency is 3.90 GHz.
analyzing CPU 3:
driver: intel_pstate
CPUs which run at the same hardware frequency: 3
CPUs which need to have their frequency coordinated by software: 3
maximum transition latency: 4294.55 ms.
hardware limits: 800 MHz — 4.00 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 4.00 GHz.
The governor «performance» may decide which speed to use
within this range.
current CPU frequency is 3.87 GHz.
analyzing CPU 4:
driver: intel_pstate
CPUs which run at the same hardware frequency: 4
CPUs which need to have their frequency coordinated by software: 4
maximum transition latency: 4294.55 ms.
hardware limits: 800 MHz — 4.00 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 4.00 GHz.
The governor «performance» may decide which speed to use
within this range.
current CPU frequency is 3.89 GHz.
analyzing CPU 5:
driver: intel_pstate
CPUs which run at the same hardware frequency: 5
CPUs which need to have their frequency coordinated by software: 5
maximum transition latency: 4294.55 ms.
hardware limits: 800 MHz — 4.00 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 4.00 GHz.
The governor «performance» may decide which speed to use
within this range.
current CPU frequency is 3.90 GHz.При отсутствии возможности использования диска со средствами разработки, информацию о текущей частоте ядер процессора возможно получить выполнив команду:
cat /proc/cpuinfo | grep MHz
cpu MHz : 3899.859
cpu MHz : 3946.018
cpu MHz : 3982.597
cpu MHz : 3920.590
cpu MHz : 3918.047
cpu MHz : 3982.490
- для всех носителей применяется операция «добавление носителя»:
при этом операции подключения выполняются раздельно для самого носителя и для всех находящихся на этом носителе дисковых разделов.
при этом правила МРД Parsec, применяемые для реализации учета съемных носителей, работают с дисковыми разделами.
Для идентификации сменных носителей типа CD/DVD-диск и SD-карта применимы только параметры «ID_FS_LABEL» и «ID_FS_LABEL_ENC».