
こんにちは。iQeda [@iQeeeda] です。
「EC2 でログインシェル変更できない?!」問題
はじめて AWS の EC2 で Amazon Linux という公式配布イメージ (AMI) を使ったとき、
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 でログインできなくなる可能性があるので「超慎重に編集」してください。
# /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 で別タブ起動して ssh できるか試してください。
ssh して zsh に変更できていれば OK ですが、もしエラーでログインできなかった場合、
セッションが生きているタブから /etc/passed の確認をしてください。
関連記事
zsh ロードマップ
sudo [コマンド] が実行できないとき
お仕事ください!
僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。 なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。
カテゴリ「AWS」の最新記事

【EC2・RDS】WordPressのデータベース接続確立エラー
【自動化】Google Analyticsの集計→Slack通知
Amazon Linux2でLet’s Encryptを使う方法
リバースプロキシしているApacheにHTTPS接続できないとき
【AWS】Route53とは?EC2のIPにドメイン設定する方法
TerraformによるLinodeインスタンス新規作成サンプル
【Fingerprint】CircleCIがSSHできない問題解決
【Laravel】セッションタイムアウト後のログイン処理で前回URLに遷移するバグ修正
M1 Mac(2021)でanyenv/phpenvの初期設定!
コメント