2013-11-26 9 views
6

Можно извлечь серийный номер 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. Есть ли другой путь?

Благодаря

ответ

11

dmidecode считывает эту информацию из физической памяти, используя /dev/mem, который требует корня.

Такая же информация предоставляется ядром 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), эта команда будет работать для вас, как некорневые:

lshal | grep system.hardware.serial 

system.hardware.serial = '<serial_number>' (string) 

Это работает, потому что пакет hal устанавливает hald демона, который работает как корень и собирает эти данные, что делает его возможно для lshal, чтобы читать его как не-root.

+0

Как можно «lshal» получить доступ к этим данным, если он не запущен как sudo ?? – Alberto

+1

Этот пакет устанавливает демона 'hald', который работает от имени root и собирает эти данные, что позволяет' lshal' читать его. – mvp

+0

Спасибо! Жаль, что эти данные не могут быть собраны без разрешения root – Alberto

Смежные вопросы