Not-Root-User

如何在沒有 root 權限的情況下獲取 dmidecode 資訊?

  • March 20, 2018

我正在編寫一個顯示各種系統資訊的程序(在 CentOS 系統上)。例如,處理器類型和速度(從/proc/cpuinfo)、上次啟動時間(從 計算/proc/uptime)、IP 地址(從ifconfig輸出)和已安裝列印機的列表(從lpstat輸出)。

目前,從程序中獲取了幾條數據dmidecode

  • 平台類型 ( dmidecode -s system-product-name)
  • BIOS 版本 ( dmidecode -s bios-version)
  • 物理記憶體量 ( dmidecode -t17 | grep Size)

這些僅在我的程序以 root 身份執行時才可用(因為否則dmidecode子程序會因錯誤而失敗/dev/mem: Permission denied)。是否有其他方法可以獲取此資訊,普通使用者可以訪問?

提供的一些資訊dmidecode可在/sys/devices/virtual/dmi/id.

其他資訊可以通過分析獲得/proc/cpuinfo/proc/meminfo/sys/system/node/node0/meminfo

  1. 我可以在/sys/class/dmi/id/. 不包括序列號(需要 root 權限才能讀取)。

我猜這是隱私意識核心開發人員的預期行為。 2. 關於dmesg:dmesg是訪問核心環形緩衝區的命令。環形緩衝區意味著當緩衝區“溢出”時,較舊的資訊會被較新的資訊覆蓋。這也是讀取核心模組調試輸出,這從來都不是可解析的。 3. 使用 run 訪問核心輸出systemd

journalctl --quiet --system --boot SYSLOG_IDENTIFIER=kernel
  1. 關於david-homernils 的回答:該文件/dev/mem不只是提供記憶體資訊,而是將整個物理記憶體映射到使用者空間。因此,人們可以通過它訪問 DMI 記憶體地址(並做更多令人討厭的事情)。
  2. 關於chgrp和nilschmod g+s的回答:我想這不會按預期工作,因為保存 gid不能使用它的新特權。必須呼叫設置它的有效組 id 才能訪問。從它的原始碼來看,並沒有這樣做。dmidecode``chmod g+s``dmidecode``dmidecode``setegid``/dev/mem``dmidecode

引用自:https://unix.stackexchange.com/questions/24212