【AWS】EC2でchshのシェル変更できない問題解決【zsh】

  • このエントリーをはてなブックマークに追加
  • Pocket

こんにちは。タクマ™ [@suwaru_blog] です。

「EC2 でログインシェル変更できない?!」問題

はじめて AWS の EC2 で Amazon Linux という公式配布イメージ (AMI) を使ったとき、

ログインシェルを bash から zsh に変更したいんだけど chsh が使えない!?

…とビックリしたことがあります。

そのようなとき、すぐ chsh コマンドを扱えるようにする方法があります。
それは util-linux-user をインストールことです。

util-liunx-user をインストールするだけ!

util-linux-user をインストールしたら chsh コマンドが使えるようになります。

# util-linux-user をインストール
sudo yum install util-linux-user -y

zsh をインストールして、ログインシェルとして設定してみましょう。

# zsh をインストール
sudo yum install zsh -y

# zsh に変更する
chsh -s /usr/bin/zsh

ec2-user のシェルを変更します。
パスワード: [パスワード]

# もし ec2-user に権限がなかったり、パスワード設定していなかったら root ユーザに切り替える
sudo su -
passwd

# root ユーザのパスワード設定
New password: [パスワード設定]
Retype new password: [もう一度入力]

# root ユーザで ec2-user のログインシェルを切り替える
chsh ec2-user

Changing shell for ec2-user.
New shell [/bin/bash]: /usr/bin/zsh
Shell changed.

# root ユーザで ec2-user のパスワードを設定する
passwd ec2-user
ユーザー ec2-user のパスワードを変更。
新しいパスワード: [パスワード設定]
新しいパスワードを再入力してください: [もう一度入力]
passwd: すべての認証トークンが正しく更新できました。

util-linux-user ってなんなの?

Linux の基本的な便利コマンドが入ったパッケージのようです。
何も考えず、環境構築時に毎回パターンで入れておけば安心です。

util-linux-user に入っているコマンド

コマンド名
fdisk
getopt
hwclock
mount
umount
blockdev
elvtune
fdformat
fsck
isosize
mkfs
mkswap
raw
setfdprm
chfn
chsh
lst
login
mesg
newgrp
passwd
wall
agetty
fastboot
fasthalt
initctl
reboot
shutdown
simpleinit
vigr
vipw
cal
ddate
kill
logger
look
mcookie
namei
rename
reset
script
setterm
whereis
write
arch
flock
readprofile
ctrlaltdel
cytune
dmesg
ipcrm
ipcs
ramsize
rdev
renice
rootflags
sln
tunelp
vidmode
clear
col
colcrt
clrm
column
hexdump
more
od
pg
rev
tailf
ul

chsh を使わずにシェルを変更する方法 (非推奨)

それでもchsh が使えないとき、ログインシェル設定ファイルを直接編集する方法があります。

# zsh をインストール
sudo yum install zsh -y

# /usr/bin/zsh があるか確認
cat /etc/shell

sudo vi /etc/passwd

/etc/passwd を編集します。が、注意があります。

ここでシェルのパスを間違って指定した場合、
ssh でログインできなくなる可能性があるので「超慎重に編集」してください。
/etc/passwd
# /bin/bash から /usr/bin/zsh に変更する
# [username]:x :1634231:100 :[Your Name]:/home/[username]:/bin/bash
[username]:x :1634231:100 :[Your Name]:/home/[username]:/usr/bin/zsh

シェルの変更を反映する

サーバに再ログインしたタイミングでシェル変更されますが、
「シェルのパスを間違えていたらログイン (ssh) できない」リスクがあります。

絶対ログアウトはせず、その Terminal タブを閉じず、
サーバとのセッションを残しておいてください。

つまり Terminal で別タブ起動して ssh できるか試してください。

ssh して zsh に変更できていれば OK ですが、もしエラーでログインできなかった場合、
セッションが生きているタブから /etc/passed の確認をしてください。

関連記事

zsh ロードマップ

sudo [コマンド] が実行できないとき

お仕事ください!

僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。
なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。

コメント

コメントを残す

*