Как получить серийный процессор под Linux без рут прав - PullRequest
7 голосов
/ 18 февраля 2011

Как я могу получить серийный номер процессора под Linux (Ubuntu) без прав root?

Я попробовал команду cpuid, она работает без прав root, но, похоже, возвращает все нули (я полагаю, потому что что-то нужно изменить в BIOS).

Можете ли вы предложить мне другой способ получить серийный процессор из программы без прав root и без необходимости изменять BIOS?

Ответы [ 7 ]

5 голосов
/ 10 апреля 2014

Требуются разрешения root.Ответ dmidecode.
Если вам нужен идентификатор процессора:

dmidecode | grep -w ID | sed "s/^.ID\: //g"

Это даст идентификатор процессора, удалите «ID:» из вывода
Если вам нужно получить идентификатор компьютера:

dmidecode | grep -w UUID | sed "s/^.UUID\: //g"

Если вы хотите получить ядро ​​uuid без прав root, тогда:

dmesg | grep UUID | grep "Kernel" | sed "s/.*UUID=//g" | sed "s/\ ro\ quiet.*//g"
4 голосов
/ 18 февраля 2011

Серийные номера процессоров были в основном только в процессорах Pentium III.Intel удалила это из более поздних моделей из-за проблем конфиденциальности, которые были подняты.Таким образом, если вы не используете PIII И , ваши настройки BIOS позволяют вам читать серийный номер, все, что вы получите, это 0.

1 голос
/ 10 марта 2012

Свяжите лицензию с номерами инодов, которые получают ее исполняемые файлы, когда они устанавливаются в файловую систему пользователя. Если они будут перемещены в другое место, они изменятся.

Недостатком является то, что цифры не могут быть сохранены, если программа должна быть восстановлена ​​из резервной копии.

Я делал подобные вещи раньше. Вы должны быть очень щедрыми, чтобы позволить действующим пользователям активировать лицензию на смену оборудования.

1 голос
/ 18 февраля 2011

Как и предлагалось, когда этот вопрос задавался ранее, если вы пытаетесь использовать его для лицензирования (поскольку вы использовали тег лицензирования), вы можете попробовать MAC-адрес: Серийный номер ЦП

1 голос
/ 18 февраля 2011

cpuid возвращает один и тот же серийный номер для меня независимо от моего использования sudo:

 % cpuid | grep serial
Processor serial: 0002-0652-0000-0000-0000-0000
 % sudo cpuid | grep serial
Processor serial: 0002-0652-0000-0000-0000-0000

Если нет другого серийного номера, на который вы ссылаетесь ...?

0 голосов
/ 07 июня 2019

ЦП не имеет серийного номера; возможно, вам нужна базовая информация DMI без привилегий root (Это покажет вам только постоянный идентификатор производителя и модели материнской платы, но не серийный номер):

dmesg | grep -i dmi: | cut -d ":" -f 2-

В противном случае вы можете «указать» dmidecode на запуск от непривилегированного пользователя:

sudo chmod +s /usr/sbin/dmidecode

Тогда вы можете запустить, например:

dmidecode -s system-serial-number

В большинстве случаев «серийный номер системы» похож на «серийный номер шасси» или «серийный номер основной платы». Помните, что не во всех дистрибутивах установлена ​​эта программа, например, в системах на основе Debian есть пакет, названный в его честь.

В противном случае вы можете найти уникальный и постоянный, через систему, идентификатор системы через диск вашей системы; Для этого вы можете выполнить следующее:

mount | grep "on / type" | awk '{print $1}'

Первый даст вам путь к устройству, на котором монтируется ваша система (для моей ОС он вернул / dev / sda7 ), а затем вы можете найти для него идентификатор со следующим:

find /dev/disk/by-id/ -lname "*sda" ! -name "wwn*"

Таким образом, полная команда для поиска уникального идентификатора на жестком диске вашей системы может быть:

find /dev/disk/by-id/ -lname "*`mount | grep " / " | awk '{print $1}' | cut -b 6-8`" ! -name "wwn*" -printf "%f\n"

Я надеюсь, что это может соответствовать вашим потребностям или кому-то еще здесь. Команда cut -b 6-8 может быть не переносимой, поскольку я предполагаю, что имена блочных устройств имеют длину в три символа; более того, путь / dev / disk / by-id / заполняется только управляемыми системами UDEV, и не все дистрибутивы Linux используют его, но я гарантирую, что первые будут работать в Ubuntu.

0 голосов
/ 18 февраля 2011

Вы проверили dmesg?Его в /bin

...