Not-Root-User
如何在沒有 root 權限的情況下獲取 dmidecode 資訊?
我正在編寫一個顯示各種系統資訊的程序(在 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
。
- 我可以在
/sys/class/dmi/id/
. 不包括序列號(需要 root 權限才能讀取)。我猜這是隱私意識核心開發人員的預期行為。 2. 關於
dmesg
:dmesg
是訪問核心環形緩衝區的命令。環形緩衝區意味著當緩衝區“溢出”時,較舊的資訊會被較新的資訊覆蓋。這也是讀取核心模組調試輸出,這從來都不是可解析的。 3. 使用 run 訪問核心輸出systemd
:journalctl --quiet --system --boot SYSLOG_IDENTIFIER=kernel
- 關於david-homer和nils 的回答:該文件
/dev/mem
不只是提供記憶體資訊,而是將整個物理記憶體映射到使用者空間。因此,人們可以通過它訪問 DMI 記憶體地址(並做更多令人討厭的事情)。- 關於
chgrp
和nilschmod g+s
的回答:我想這不會按預期工作,因為保存 gid並不能使用它的新特權。必須呼叫設置它的有效組 id 才能訪問。從它的原始碼來看,並沒有這樣做。dmidecode``chmod g+s``dmidecode``dmidecode``setegid``/dev/mem``dmidecode