Извлечение серийного номера Linux без sudo
можно извлечь серийный номер Linux без использования sudo?
Я знаю, что это можно сделать в Windows: wmic bios get serialnumber
и в
MAC OS system_profiler |grep "r (system)"
оба они не требуют корневых provileges.
в Linux это можно использовать: sudo dmidecode -s system-serial-number
но ему нужен sudo. Есть ли другой способ?
спасибо
1 ответов
dmidecode
считывает эту информацию из физической памяти, используя /dev/mem
, для чего Требуется root.
та же информация также предоставляется ядром Linux через sysfs в виртуальном каталоге /sys/devices/virtual/dmi/id
.
к сожалению, кто-то решил, что вся информация в этом виртуальном каталоге открыта для чтения, а не серийные номера:
$ ls -l /sys/devices/virtual/dmi/id
-r--r--r-- 1 root root 4096 Nov 25 17:12 bios_date
-r--r--r-- 1 root root 4096 Nov 14 14:59 bios_vendor
-r--r--r-- 1 root root 4096 Nov 25 17:12 bios_version
-r--r--r-- 1 root root 4096 Nov 25 17:12 board_asset_tag
-r--r--r-- 1 root root 4096 Nov 25 17:12 board_name
-r-------- 1 root root 4096 Nov 25 17:12 board_serial
-r--r--r-- 1 root root 4096 Nov 14 14:59 board_vendor
-r--r--r-- 1 root root 4096 Nov 25 17:12 board_version
-r--r--r-- 1 root root 4096 Nov 25 17:12 chassis_asset_tag
-r-------- 1 root root 4096 Nov 25 17:12 chassis_serial
-r--r--r-- 1 root root 4096 Nov 25 17:12 chassis_type
-r--r--r-- 1 root root 4096 Nov 25 17:12 chassis_vendor
-r--r--r-- 1 root root 4096 Nov 25 17:12 chassis_version
-r--r--r-- 1 root root 4096 Nov 25 17:12 modalias
drwxr-xr-x 2 root root 0 Nov 25 17:12 power
-r--r--r-- 1 root root 4096 Nov 14 14:59 product_name
-r-------- 1 root root 4096 Nov 25 17:12 product_serial
-r-------- 1 root root 4096 Nov 14 14:59 product_uuid
-r--r--r-- 1 root root 4096 Nov 14 14:59 product_version
lrwxrwxrwx 1 root root 0 Nov 14 14:59 subsystem -> ../../../../class/dmi
-r--r--r-- 1 root root 4096 Nov 14 14:59 sys_vendor
-rw-r--r-- 1 root root 4096 Nov 14 14:59 uevent
если вы можете установить пакет hal
(не установлен по умолчанию на последних версиях Ubuntu), эта команда будет работать для вас как non-root:
lshal | grep system.hardware.serial
system.hardware.serial = '<serial_number>' (string)
это работает, потому что пакет hal
установка hald
демон, который работает как root и собирает эти данные, что делает возможным для lshal
читать его как не-root.