Вы можете использовать seccomp-bpf для блокировки некоторых системных вызовов. Например, может потребоваться заблокировать системный вызов socket
, чтобы предотвратить создание сокетов FD процессом.
Я написал пример этого подхода, который не позволяет системному вызову socket
работать с использованием libseccomp. Резюме (без проверки ошибок):
scmp_filter_ctx ctx = seccomp_init(SCMP_ACT_ALLOW);
seccomp_arch_add(ctx, SCMP_ARCH_NATIVE);
seccomp_rule_add(ctx, SCMP_ACT_ERRNO(EACCES), SCMP_SYS(socket), 1, SCMP_CMP(0, SCMP_CMP_EQ, pf));
seccomp_load(ctx);
execvp(argv[1], argv+1);
Для этого не нужны привилегии root.
Полная песочница намного сложнее, поэтому вам не следует использовать этот un order для блокировки не взаимодействующих / вредоносных программ.
Если диск поддерживает SMART, вы сможете получить серийный номер диска, используя smartctl -i /dev/sdX
Программа lshw это показывает, по крайней мере с выводом html
sudo lshw -C disk -html > /some/place/hw.html
Соответствующий раздел на моем оборудовании для одного из моих дисков -
id: disk
description: ATA Disk
product: ST32000542AS
vendor: Seagate
physical id: 0.0.0
bus info: scsi@0:0.0.0
logical name: /dev/sda
version: CC34
serial: 5XW2PB56
size: 1863GiB (2TB)
capabilities: partitioned partitioned:dos
configuration:
ansiversion = 5
logicalsectorsize = 512
sectorsize = 512
signature = d46cf327
Вы можете получить серийный номер через:
1) hdparm
:
hdparm -I /dev/sda | grep Serial
2) sginfo
является частью sg3-utils
пакет:
sginfo -a /dev/sda | grep Serial
3) sdparm
команда:
sdparm -i /dev/sda | grep 'vendor specific'
4) lshw
:
lshw -class disk -class storage | grep serial
Сейчас мне нужно проверить только диски WD, но udevadm info --query=all
показывает оба ID_SERIAL
/ID_SERIAL_SHORT
( что-то вроде WD-WMATV6212345
иID_WWN
(0x50014ee051234567
). Разве не первое, что вы ищете?
smartctl -i
также показывает оба, hdparm -i
только серийный номер.