どーも!marusukeです!
ログイン時に使用するシェルを変更するコマンドchshについてです!
chshコマンドでできること
chsh [オプション] [ユーザー名]
chsh(change shell)は、ログイン時に使用するシェルを変更するコマンドです
Linuxでは、ユーザーごとに「ログインシェル」が設定されており、その情報は /etc/passwd に保存されています
/etc/passwd について
marusuke:x:1000:1000:Marusuke User:/home/marusuke:/bin/bash
/etc/passwd は「:(コロン)」区切りで7つのフィールドを持っています。ログインシェルは7つ目のフィールドに記載されています
chsh コマンドは、この7番目のフィールドを書き換えるコマンドです
シェルとは、ユーザーの入力したコマンドをOSへ伝える対話型プログラムのことです
通常は /bin/bash などが設定されています
⚠ 注意点
- 一般ユーザーは自分自身のみ変更可能
- 他ユーザーの変更は root 権限が必要
/etc/shellsに登録されているシェルのみ指定可能
chshコマンドの使用例
① ログインシェルを zsh に変更する例
$ chsh -s /bin/zsh marusuke
Changing shell for marusuke.
Password:
Shell changed.
$ grep marusuke /etc/passwd
marusuke:x:1000:1000:User Name:/home/marusuke:/bin/zsh
上記では、marusuke ユーザーのログインシェルを /bin/zsh に変更しています
変更後はログアウト→再ログインで有効になります
② 対話的ログインを禁止する例(nologin設定)
# sudo chsh -s /sbin/nologin testuser
Changing shell for testuser.
Shell changed.
# grep testuser /etc/passwd
testuser:x:1001:1001::/home/testuser:/sbin/nologin
/sbin/nologin を設定すると、そのユーザーはSSHやコンソールからの対話的ログインができなくなります
ログインしようとすると、以下のようなメッセージが表示されます
This account is currently not available.
🔎 nologinとは?
ユーザーがログインしようとした際に即終了させるための疑似シェル。主にサービスアカウント用に使われる
この設定は、
- Webサーバー用ユーザー
- バックアップ専用ユーザー
- システムサービス用アカウント
など「ログインさせる必要がないユーザー」によく使われます
chshコマンドのオプション
| オプション | 説明 |
|---|---|
| -s シェル | 指定したシェルに変更する |
| -l | 利用可能なシェル一覧を表示する |
| -h | ヘルプを表示(環境により異なる) |
まとめ
chsh はログイン時のシェルを変更するコマンドです
- 作業環境を変更する(bash → zsh)
- セキュリティ目的でログイン禁止にする(nologin)
この2つが代表的な使い方です
特にエンジニアを目指す方は、
「シェル変更」と「ログイン制御」の両方を理解しておくと、サーバー管理の基礎力が高まります
まずは現在のシェルを確認してみましょう
echo $SHELL
Linuxは「ユーザー管理」が非常に重要ですchsh を正しく理解して、安全なアカウント運用を目指しましょう
以上です!
ここまで読んでいただきありがとうございました!




コメント