root 権限なしで Linux (Ubuntu) 上の C++ プログラムからマザーボード ID を取得したいと考えています。dmidecode でこれができることは知っていますが、root 権限が必要なため、私のニーズには適していません。ルート以外の代替手段を知っている人はいますか? ソースコードは大歓迎です。
5 に答える
$ lshal | grep 'system\.hardware\.serial'
system.hardware.serial = '<serial-number>' (string)
FC11でroot以外のユーザーとして機能します。
情報を取得するために root である必要はありませんが、最初に root に許可を与える必要があります。明らかに、root は自分のマシンへの安全なアクセスを許可されており、これにはハードウェア ID 情報へのアクセスが含まれます。
root はマシン上のソフトウェアができることを制御しますが、あなたのソフトウェアは root ができることを制限しません。(Linuxは、ソフトウェア ライセンスの第 1 の法則に帰結します)
root がハードウェア ID コレクターのインストールを選択した場合、そのデータを root 以外のユーザーが利用できるようにするのは比較的簡単です (ただし、root が ID コレクターを変更して嘘をつくのも比較的簡単です)。
lshw がシリアルを取得するはずです。スーパーユーザーとして実行する必要があると表示されますが、それでも実行されます。(ubuntuでテスト済み)
rootになる必要があると思います
/proc/pci を開くと、チップセットなどの多くの情報が得られます。/proc/ にマザーボードまたは BIOS 情報用の特定のディレクトリがあるかどうかわからない場合は、 ls /proc を見てください。
それ以外に、アプリケーションから dmidecode コマンドライン ツールを呼び出して、その出力をキャプチャすることを検討できます。これで十分でない場合は、dmidecode のソース コードを見て、どのように機能するかを確認してみてください。
アンドリュー