4

我想从没有 root 权限的 Linux (Ubuntu) 上的 C++ 程序中检索主板 ID。我知道dmidecode可以做到这一点,但是它需要root权限,所以不适合我的需要。有谁知道非根替代品?源代码将不胜感激。

4

5 回答 5

3

您不必是 root 才能获取信息,但您确实需要先获得 root 权限。显然,root 可以保护对他们机器的访问,这包括对硬件身份信息的访问。

root 控制他们机器上的软件可以做什么,您的软件不限制 root 可以做什么。(Linux对软件许可第一定律的推论)

如果 root 选择安装您的硬件 id 收集器,则让非 root 用户可以使用该数据相对简单(但 root 修改您的 id 收集器以撒谎也相对容易)。

于 2011-02-13T17:06:55.407 回答
3
$ lshal | grep 'system\.hardware\.serial'
  system.hardware.serial = '<serial-number>'  (string)

在 FC11 上以非 root 用户身份工作。

于 2011-08-29T04:30:47.833 回答
2

lshw 应该为您获取序列号。它会告诉你它应该以超级用户身份运行,但无论如何都会运行。(在 ubuntu 上测试)

于 2011-02-14T00:38:23.713 回答
2
sudo dmidecode --type baseboard
于 2015-05-29T11:39:29.320 回答
0

我认为你需要是根

打开 /proc/pci 会给你很多信息芯片组等,不确定 /proc/ 是否有主板或 BIOS 信息的特定目录,看看 ls /proc ?

除此之外,您可以查看从应用程序调用 dmidecode 命令行工具并捕获其输出。如果这还不够好,也许甚至可以查看 dmidecode 的源代码以了解它是如何工作的?

安德鲁

于 2011-02-13T16:31:03.117 回答