QProcessを使用してプロセスp1を開始するとします。プロセス p1 には root 権限が必要です。そのため、プロセス p1 に人間の介入なしにパスワードを渡すことができます。もちろん、パスワードはどこかから読み取られます。
2 に答える
setuidトリックを使用して、アプリケーションによって開始され、setuid rootであり、適切なものを実行するヘルパー実行可能ファイルを作成することを検討してください。
これを行うときは注意してください。慎重にコーディングしないと、セキュリティ上のリスクがあります。この内部ヘルパー実行可能ファイルがアプリケーションによってのみ開始されることを確認する必要があります。(たとえば、パイプや他のIPCを介して通信できます)。
(構成することもsudo
、super
非常に慎重に行うこともできます)
注意が必要setuid
です。いくつかのドキュメント、特にAdvancedUnixProgrammingとAdvancedLinuxProgrammingを読むことを強くお勧めします。そしてそれらを注意深くそして数回読んでください。execve(2)およびcredentials(7)のマニュアルページ(およびその他)も注意深く読んでください。setuidの誤解は、セキュリティ上の大きなリスクです。
setuidトリックを使用してプログラムを最小化することを忘れないでください。特に、Qtアプリケーション全体をsetuidにするのではなく、小さなヘルパープログラムをsetuidにするだけです。
通常は違います。たとえば、sudo によってパスワードが要求されると、Linux はユーザーから提供されたパスワードを取得し、それを暗号化/ハッシュして、/etc/shadow に保存されているハッシュに対してテストします。一致する場合、許可が付与されます。そうでなければ、ブエノはありません。
ユーザーにパスワード (またはバックドア ログインなどの手法) を尋ねることができなければ、おそらくこの特定のアクティビティを達成することはできません。