Извлечение серийного номера 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.