2011-01-04 5 views
1

ジレンマ:私はすべきで働いているLinuxのプログラム:(Gitのを使用して)://プロトコルsudoで実行されているプログラムからユーザーのsshキーにアクセスするには?

  1. はgitの+ SSH経由で "パッケージ" を取得します。
  2. "パッケージ"をシステムにインストールします。

git + sshが動作するためには、Gitが自分のキーを参照する必要があります。

"パッケージ"インストールの場合、プログラムにスーパーユーザー権限が必要です。

制限:プログラムは特権を昇格してはいけません(sudoを呼び出す)。ユーザは明示的にsudoでそれを呼び出さなければなりません。 (ユーザがルートとしてログインしている間にユーザがプログラムを実行した場合は無視してください。)

したがって、問題は、呼び出されたプログラムからユーザ鍵でsshアクセスを行う方法ですsudoで?

+0

なぜ近い投票ですか? –

答えて

3

-i identity_file sshパラメータを使用します。 gitに適切なコマンドを使用するように指示するには、GIT_SSH変数をssh -i "$ @"を呼び出すファイルに設定する必要があります。

できない場合は、git pullコマンドを実行している間に権限を削除する必要があります。

sudo -u <original_user> git fetch git+ssh:// 

環境変数$ {SUDO_USER}を使用すると、元のユーザーの所在を知ることができます。

+0

いいえ、これは動作しません。ユーザはsshエージェントを設定しているかもしれませんし、さらに、プログラムはアイデンティティファイルの名前を知る方法がありません(ユーザはそれもないかもしれません)。 –

+0

次に、git pullコマンドを実行している間に権限を削除してください。 sudo -u git fetch git + ssh:// –

+0

良いアイデア。ユーザーの名前を知る方法はありますか? –

関連する問題