こんにちは。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」の最新記事
コメント