【Linux】ログイン時に使用するシェルを変更するコマンド:chsh

Linux

どーも!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 を正しく理解して、安全なアカウント運用を目指しましょう


以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました