タイトルの通り。
$ chsh -l
bash: command not found: chsh
初期状態のamazon linuxではchsh
が使えない。
$ sudo yum install util-linux-user -y
-y
は全ての確認にyesと答えるオプション。
zshをインストール。
$ sudo yum install zsh -y
$ chsh -l
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
/usr/bin/zsh
/bin/zsh
OK、入ってる。
-s
オプションで直接、パスを指定してあげる。
$ chsh -s /usr/bin/zsh
ec2-user のシェルを変更します。
パスワード:
chsh: 認証失敗
chsh: ユーザ属性の変更に失敗しました: Permission denied
ん?ec2-userにパスワードなんてデフォルトであったっけ?
とりあえず初期EC2はパスワードが未設定なはずなのでそこをつけてみる。
$ sudo su -
# passwd
rootに昇格。
新しいパスワードを設定。
# exit
$ chsh -s /usr/bin/zsh
ec2-user のシェルを変更します。
パスワード:
chsh: 認証失敗
chsh: ユーザ属性の変更に失敗しました: Permission denied
$ sudo chsh -s /usr/bin/zsh
root のシェルを変更します。
シェルを変更しました。
$ sudo su -
# echo $SHELL
/bin/zsh
rootは変更できるがec2-userはどうしたら?
よくわからんので新しくパスワードを持たせた一般ユーザを作ることに。
EC2の初期設定としてec2-userは消せってよく言うし。
$ useradd testuser
$ passwd testuser
$ sudo vi /etc/ssh/sshd_config
PasswordAuthentication yes
として保存。
$ service sshd reload
$ sudo vi /etc/sudoers.d/90-cloud-init-users
末尾にtestuser ALL=(ALL) NOPASSWD:ALL
追記。
再接続。
$ logout
$ ssh -i xxx.pem testuser@xxx.xxx.xxx.xxx
testuser@xxx.xxx.xxx.xxx's password:
% echo $SHELL
/usr/bin/zsh
sshで入る時にパスワードも要求されるようになってしまったがzshにできた。
(鍵認証に切り替えたいが今回の内容ではないのでこのまま)
試しにEC2インスタンスをrebootしてから接続してもzshでお迎えしてくれた。
おわり。
追記
/etc/passwd
で確認できたらしい。一番最後がシェルの情報。
% cat /etc/passwd
testuser:x:1001:1001::/home/testuser:/usr/bin/zsh