共有オブジェクトを強制的にルートとして実行したり、共有オブジェクトの呼び出し元がこれらのいずれかでない場合は、setuidまたはsetgidを使用できますか?

共有オブジェクトを強制的にルートとして実行したり、共有オブジェクトの呼び出し元がこれらのいずれかでない場合は、setuidまたはsetgidを使用できますか?

私のアプリケーションには/ dev / input / event *への書き込み権限が必要です。私のUbuntuシステムでは、/dev/input/event*はroot:inputに属しています。 sudoを使用すると、私のアプリケーションは正常に実行されますが、これを防止したいと思います。だから私のアプリケーションを「入力」グループに設定し、setgidを使って実行しました。ただし、この状況を検出して無効にできるのは、クロスプラットフォームアプリケーション(GTK)です。 (文字通り意味するのは、GTKがsetgidまたはsetuidで実行しようとしていることを検出しましたが、それを許可しないことです)。この.so(状態が良好で頻繁に変更されない)がrootとして実行されることを許可すると、より良い気分になります。あるいは、.soファイルをsetgidとして実行する必要がある場合は、GTK環境がそれを検出できない可能性があります。 .soファイルに特別なビットを設定しようとしましたが、アプリケーションを実行すると/ dev / input / event *に同じ権限の問題があります。

ベストアンサー1

権限は、実行中のプロセスにロードされたオブジェクトファイルごとに追跡されるのではなく、プロセスごとに(実際にはLinuxではスレッドごとに)追跡されます。したがって、.soファイルに異なる権限を関連付けることはできません。

〜のように提案渡すアンディ・ダルトン、これを処理する一般的な方法は、小さなヘルパーバイナリを持って適切な権限があることを確認することです(権限を使用するか、能力、等。 )。

udevもう1つの可能性は、ユーザーまたはコンソールのすべての人にイベントデバイスに対する権限を付与するルールを追加することです。

おすすめ記事