特定のプログラムでのみデバイスにアクセスできるようにすることはできますか?

特定のプログラムでのみデバイスにアクセスできるようにすることはできますか?

アクセスするには、2つのプログラム(パスで示されている)のみが必要なデバイス(ビデオカード)があります/usr/bin/myprogram

デバイス用のファイル/dev(例/dev/mydev1:)がありますが、必要に応じて他の参照(バスID、ベンダー/製品IDなど)を使用することもできます。

udev私が指定したプログラム以外にどのプログラムにもアクセスできないようにするには、ルールのようにどうすればよいですか?

ベストアンサー1

従来のUNIXソリューションは、システムグループ(たとえばgroupadd -r vidcard)を作成し、ルートとそのグループのメンバーのみがアクセスできるようにデバイスの権限を設定することです。 Linuxでは、/dev起動するたびに最初から再生成されるudevルールの形式を取ります。ルールは次のとおりです。

 KERNEL=="mydev[0-9]*", MODE="0660", GROUP="vidcard"

最後に、アクセスを必要とするプログラムはグループ所有者をvidcardsetgidビットに設定する必要があります。だから:

chown root:vidcard /usr/bin/myprogram
chmod 2711 /usr/bin/myprogram  # this results in permissions -rwx--s--x

一般ユーザーはいいえvidcardグループのメンバーシップが付与されます。会員資格を取得する唯一の方法は、公職に出馬することですmyprogram

myprogramユーザーが選択した他のプログラムを実行できる「シェル実行」機能または他の方法がある場合、そのユーザーが付与した追加の権限を削除する手順を実行するようにプログラムされていない限り、vidcardそのシェル/他のプログラムはグループメンバーシップを継承できます。myprogramあります。他のプログラムを起動する前に、gidビットを設定してください(setregid()Linuxの場合)。

おすすめ記事