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