sudo -u user1 command ...
現在のユーザーのパスワードの代わりにsudo
パスワードを要求するにはどうすればよいですか?user1
背景:ユーザーが実行しているGit Hookでこれを使用したいと思いますgit
。
echo "PasswordOfWww" | sudo -Su www bash -c "cd site; git pull; ./deploy.sh"
使ってみたけどsu www -c "command ..."
教えてくれ
remote: su: must be run from a terminal
リポジトリにプッシュするとき。
答え1
可能であれば、ファイルシステムに暗号化されていないユーザーパスワードを保存したくありません。これは、gitのコード移植性と、ローカルファイルシステムに格納できるコードの移植性にどの程度依存するかによって異なります。 NOPASSWDでsudoを使用し、コマンドをできるだけ制限することをお勧めします。次のように/etc/sudoersエントリを作成できます。
git ALL=(www) NOPASSWD: /usr/local/sbin/deploySite
deploySite
ユーザーが正しいディレクトリにあり、deploy.sh
スクリプトに概要がないことを確認するためのさまざまなチェックがあります。
ユーザーgitがユーザーwwwのアカウントを責任を持って使用することを信頼している場合は、NOPASSWD:ALLを使用できます。しかし、デフォルトでは、gitアクセスにアップロードする人は誰でもwwwユーザーとして好きなコマンドを実行できます。
しかし、元の質問に答えるには
呼び出すユーザーのパスワードの代わりに、sudoにターゲットユーザーのパスワードを要求することができます。次のようにsudoersエントリを配置できます。
Defaults:git targetpw
その後、ユーザーgitは実行時にユーザーwwwのパスワードを入力する必要がありますsudo -u www ...
。