1
2

More than 3 years have passed since last update.

EC2インスタンスのbashをzshに変更するまで

Last updated at Posted at 2019-11-09

タイトルの通り。

$ 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 
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2