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