我想在没有root权限的情况下从Linux(Ubuntu)上的C ++程序中检索主板ID。我知道dmidecode可以做到这一点,但它需要root权限,所以它不适合我的需要。有没有人知道非根替代品?源代码将非常感激。
答案 0 :(得分:3)
您不必是root用户来获取信息,但您需要让root用户首先获得您的许可。显然,root允许安全访问他们的机器,这包括访问硬件身份信息。
root控制其计算机上的软件可以执行的操作,您的软件不会限制root用户可以执行的操作。 (Linux推论The #1 Law of Software Licensing)
如果root选择安装你的硬件id收集器,那么将这些数据提供给非root用户是相对简单的(但是root也可以相对容易地修改你的id收集器)。
答案 1 :(得分:3)
$ lshal | grep 'system\.hardware\.serial'
system.hardware.serial = '<serial-number>' (string)
在FC11上以非root用户身份运行。
答案 2 :(得分:2)
lshw应该为你获取序列号。它会告诉你它应该以超级用户身份运行,但无论如何都会运行。 (在ubuntu上测试)
答案 3 :(得分:2)
sudo dmidecode --type baseboard
答案 4 :(得分:0)
我认为你需要成为root
开放/ proc / pci会给你很多信息芯片组等,不确定/ proc /是否有一个特定的主板或BIOS信息目录,看看ls / proc?
除此之外,您可以查看从应用程序调用dmidecode命令行工具并捕获其输出。如果这还不够好,甚至可以查看dmidecode的源代码,看它是如何工作的?
安德鲁