IRQ/root プロセスの優先順位を変更するユーザー権限を付与します。

IRQ/root プロセスの優先順位を変更するユーザー権限を付与します。

Linuxでは、rootが所有するプロセスの優先順位をユーザーが変更できるようにすることはできますか?より具体的には、IRQプロセスは何ですか?

組み込みリアルタイムアプリケーションでは、より良い結果を得るためにGPIO IRQの優先順位を上げたいと思います。しかし、これらはルートが所有しています。 root権限を使用せずにrootプロセスの優先順位を上げることができれば幸いです。

答え1

私がやりたいことは、私のためにこれを行う特定のツールを書くことです。

int main(int argc, char * argv[])
{
    setuid(0);
    system("renice <params>");
}

でコンパイルしてインストールしました/usr/bin

所有者がrootに設定されていない場合:

chown root /usr/bin/my-renice

その後、以下を使用して権限を変更しました。

chmod 4755 /usr/bin/my-renice

最初のビットは、誰が呼び出すかに関係なく、4所有者の権限(上記で設定したように)で実行するようにバイナリに指示します。詳細についてはをroot参照してくださいman setuid

コンピュータにアクセスできるユーザーがreniceを実行してはならない場合は、これが100%安全ではないことに注意してください。

特に:system()呼び出しにコマンドライン引数を渡さないでください。

system(argv[1]);   // <-- definitely a total security breach!

私はこのソリューションが少数のプロセスと少数の信頼できるユーザーだけを持つコンピュータで最も簡単だと思います。

関連情報