0

私たちのシステムではmmap()/dev/memファイルで を使用して、メモリ マップされたハードウェア デバイスにアクセスします。sudoただし、このデバイス ファイルを使用するには、物理​​デバイスに書き込むためにアプリケーションをスーパーユーザー モード ( ) で実行する必要があります。この制限を取り除く方法を探しています。

おそらく、デバイスファイルのアクセス許可を変更できます。ただし、これは推奨される解決策ではありません。

1 つの提案として、ハードウェア用の新しい完全なカーネル モード デバイス ドライバーを作成する代わりに、/dev/memデバイスを複製し、その書き込みアクセス許可を変更しmmap()て、新しいデバイスで使用することができます。

いくつかのマニュアルページを読んで、mknodコマンドを見つけました。そこで、それを使用して、ファイルememと同様の属性/dev/mem(特に、デバイスのメジャー バージョンとマイナー バージョン) を持つ特別なファイル を作成しました。プログラムで新しいファイルを使用しても、duso. そのため、その属性を完全な読み取り/書き込みアクセス許可に変更しましたが、sudo.

次に、dev/mem自身のパーミッションを 0777 に変更してみましたが、やはりダメでした。

これは、次の質問につながります。

  1. sudo特権の必要性は、mmap()それがマップする特定のデバイスを使用することによるものですか?

  2. 前者の場合、これを解消するにはどうすればよいですか?

  3. /dev/mem後者の場合、完全な権限で機能を複製するにはどうすればよいですか?

4

1 に答える 1