私たちのシステムではmmap()
、/dev/mem
ファイルで を使用して、メモリ マップされたハードウェア デバイスにアクセスします。sudo
ただし、このデバイス ファイルを使用するには、物理デバイスに書き込むためにアプリケーションをスーパーユーザー モード ( ) で実行する必要があります。この制限を取り除く方法を探しています。
おそらく、デバイスファイルのアクセス許可を変更できます。ただし、これは推奨される解決策ではありません。
1 つの提案として、ハードウェア用の新しい完全なカーネル モード デバイス ドライバーを作成する代わりに、/dev/mem
デバイスを複製し、その書き込みアクセス許可を変更しmmap()
て、新しいデバイスで使用することができます。
いくつかのマニュアルページを読んで、mknod
コマンドを見つけました。そこで、それを使用して、ファイルemem
と同様の属性/dev/mem
(特に、デバイスのメジャー バージョンとマイナー バージョン) を持つ特別なファイル を作成しました。プログラムで新しいファイルを使用しても、duso
. そのため、その属性を完全な読み取り/書き込みアクセス許可に変更しましたが、sudo
.
次に、dev/mem
自身のパーミッションを 0777 に変更してみましたが、やはりダメでした。
これは、次の質問につながります。
sudo
特権の必要性は、mmap()
それがマップする特定のデバイスを使用することによるものですか?前者の場合、これを解消するにはどうすればよいですか?
/dev/mem
後者の場合、完全な権限で機能を複製するにはどうすればよいですか?