Linux で実行するグラフィカル インストーラーを作成しています。インストールは、ファイルを のいくつかの場所にコピーすることで構成する必要があります/usr
。現在、インストーラーは Python で書かれています。
ファイルをコピーする必要がある場合、インストーラーの権限をエスカレートするにはどうすればよいですか? 私はPolicyKitを見ましたが、
- a) PolicyKit の一般的な「ファイルのインストール」アクション ID がないようです。
- b)私が使用できるアクションIDのうち、それらがディストリビューション全体で標準であるとは思わない
PAM も調べましたが、libpam を使用するコードがありますが、何もできないようです。(ユーザー名とパスワードを入力して) ユーザーを認証した後、への書き込みアクセス権がありません/usr
。after authenticationでユーザーを変更しようとしos.setuid(0)
ましたが、OS からエラーが発生します。
また、奇妙なことに、私がどのサービスを提供するかは問題ではないようですpam_start
。ユーザー名とパスワードが正しい限り、必要なものは何でも渡すことができます。私が持っていることがわかり/etc/pam.d/sudo
ました。以下のコードは簡略化されており、パスワードはオブジェクトに正しく保存されておりpam_conversation
、ハンドル オブジェクトを渡しています。
pam_start("my_user", "my_pass", "sudo_garbage_12345");
同様に動作します
pam_start("my_user", "my_pass", "sudo");
つまり、両方とも成功します。
最後の手段として、おそらくgksudo
orを実行できkdesudo
ますが、それらのプログラムに縛られたくありません。ユーザーに私のインストーラーを呼び出すように要求することsudo
は、(非常に) 最後の手段です。