特権を昇格させるためにルートパスワードを要求するプロセスを(別のアプリケーションから)起動する標準的な方法(Linuxディストリビューション全体で機能する)はありますか?
gksudo(デフォルトでubuntuにインストールされています)を使用しようとしましたが、他のディストリビューション(または他のデスクトップマネージャー)ではインストールされない場合があります。
これを実現するために最新のディストリビューションが使用しているPolicyKitを確認することをお勧めします。
これはどこでも機能しますが、パスワードをキャッシュせず、ユーザーパスワードではなくルートsudo
を要求します (そうです):
su - -c command
編集: rootアカウントが無効になっている ubuntu ではありません。おそらく、次のようなものが必要です。
test -x /usr/bin/sudo && sudo command || su - -c command
従来、アプリケーションでユーザーが権限を昇格できるようにする必要がある場合、アプリケーションは独自の単一目的のsetuid
実行可能ファイルをインストールします。単一目的とは、汎用ランチャーとして機能するのではなく、必要なタスクを実行することを意味します。
$ su -
# cp `type -p id` /usr/local/bin/root-id
# chown root:users /usr/local/bin/root-id
# chmod 4750 /usr/local/bin/root-id
$ /usr/local/bin/root-id
... euid=0(root) ...
OTOH setuid 実行可能ファイルも、セキュリティ ホールの一般的な原因となっているため、注意が必要です。