expectスクリプト等でハマることがあるため,まとめてみました.
serverspecでハングアップする人はぜひとも参考にしていただければと思います。
(試した環境はMac OSX10.8とCentOS6.3)
その1:/etc/sudoersを編集する
visudoコマンドで以下の行を追記します.
Defaults passprompt="passowrd:"
こうすることで,root以外の全ユーザのsudoコマンド時にpassowrd:
と表示されるようになります.
記述後,特に再起動などはする必要ありません.
その2:sudoコマンドにpオプションを与える
sudoにpオプションを与えて,直後に表示させたい文字列を渡すと,パスプロンプトが引数の文字列になります.
sudo -p "パスワーーーーード:" su
> パスワーーーーード:
その3:環境変数 SUDO_PROMPT に値をセットする
export SUDO_PROMPT="passssss"
sudo su
> passssss:
ちなみに,exportしないと有効になりませんでした.
exportしない場合は下記のようにするといいです.
SUDO_PROMPT="passssss:" sudo su
> passssss:
優先度
上記の優先度はこうなります.
sudo pオプション > SUDO_PROMPT > /etc/sudoers
# visudo に 'Defaults passprompt="visudo:"' と記述しているものとします.
sudo su
> visudo:
SUDO_PROMPT="env:" sudo su
> env:
SUDO_PROMPT="env:" sudo -p "option:" su
> option:
export SUDO_PROMPT="env:"
sudo su
> env:
sudo -p "option:" su
> option: