sudoに切り替えたいユーザーのパスワードを尋ねるようにします。

sudoに切り替えたいユーザーのパスワードを尋ねるようにします。
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 ...

おすすめ記事