1

ユーザーがアイコンをダブルクリックして起動する、通常の古い MacOS/X GUI プロセスがあるため、そのユーザーの権限で実行されています。

私がやりたいのは、この GUI プロセスに子プロセスを生成させ、stdin/stdout を介して子プロセスと通信させることです。それはすべて実行可能で機能しています。

秘訣は、子プロセスがルート アクセスを必要とするいくつかのことを実行する必要があるため、子プロセスをルートとして実行することです。

これには、ユーザーに管理者パスワードの入力を求めるダイアログを開く必要があると思いますが、このユースケースでは問題ありません。

これを行う 1 つの方法は、親プロセスに次のようなシェル コマンドを実行させることです。

/usr/bin/osascript -e 'do shell script "/bin/bash ./my_script.sh" with administrator privileges'

...そしてmy_script.sh子プロセスを表すプログラムを実行しましたが、これはうまくいくと思いますが、これを達成するためのよりエレガントな方法はありますか(つまり、シェルスクリプトをどこかのディスクに書き出す必要がなく、より「osascriptが変更を望んでいる」と不思議なことに言うものよりも、ユーザーフレンドリーなパスワード要求者)?

4

1 に答える 1