このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

ログインの管理:特定のユーザーのログインを禁止する(方法2:無効なログインシェル)

 Linuxシステムにおいて、複数のユーザーが同一のシステムにアクセスすることは一般的です。しかし、システムのセキュリティや運用上の理由から、特定のユーザーのログインを一時的または恒久的に禁止する必要が生じることがあります。こうした場合、管理者はそのユーザーのアカウントを制限するための適切な手段を講じる必要があります。

 ユーザーのログインを禁止する一般的な方法の一つに、パスワードロックがありますが、それに加えて、無効なログインシェルを設定する方法も非常に有効です。この方法では、ユーザーがログインを試みても即座にセッションが終了し、システムにアクセスできなくなります。

 無効なログインシェルの設定は、特にシステム上の不要なアクセスを防止するために有効であり、特定のユーザーに対してのみ適用することが可能です。この設定は、usermod コマンドや chsh コマンドを用いて行われ、管理者が簡単に実施できるため、システムのセキュリティを強化するための重要なツールとなります。

特定の一般ユーザーのログインを禁止する方法

 Linuxでは、特定の一般ユーザーのログインを禁止する方法として、次の2つの方法が一般的に使用されます。

  1. パスワードロック
     passwd コマンドや usermod コマンドを使用して、ユーザーのパスワードをロックすることでログインを禁止します。
  2. 無効なログインシェルの設定
     usermod コマンドや chsh コマンドを使用して、ユーザーのログインシェルを無効なもの(例:/bin/false/sbin/nologin)に変更し、ログインを禁止します。

ここでは、無効なログインシェルの設定によるログイン禁止について詳しく解説します。

無効なログインシェルの設定

 無効なログインシェルを設定することで、特定のユーザーがログインを試みても、そのセッションは即座に終了し、システムへのアクセスが制限されます。指定する無効なシェルには、/bin/false/sbin/nologin が使用されます。

  • /bin/false: 即座に終了するシェルとして一般的に使用されます。
  • /sbin/nologin: デーモンユーザーなど、ログイン不要なユーザーに対して指定されることが多い。

usermodコマンドの概要

 usermod コマンドは、Linuxでユーザーアカウントの属性を変更するためのコマンドです。以下は主要なオプションとその説明です。

【構文】
usermod [オプション] ユーザー名

主なオプションと説明
オプション説明
-Lユーザーアカウントをロックします(パスワードロック)
-Uユーザーアカウントのロックを解除します
-s シェル指定したシェルをユーザーのログインシェルとして設定します
主なオプションと説明

chshコマンドの概要

 chsh コマンドは、ユーザーのログインシェルを変更するために使用されます。root ユーザー権限で他のユーザーのシェルを変更でき、一般ユーザーが自身のシェルを変更する際にも使用されます。

【構文】
chsh [オプション] ユーザー名

主なオプションと説明
オプション説明
-s シェル指定したシェルをユーザーのログインシェルとして設定します
主なオプションと説明

設定方法と解説(CentOS 7の場合)

ログインシェルを無効にすることによるユーザーのログイン禁止の設定

以下に、特定のユーザーのログインシェルを無効に設定する具体的な手順を示します。

1.root ユーザーでログインします。

・ログイン画面からrootを選択し、パスワードを入力してログインします。

2.taroユーザーの現在のログインシェルを確認します。

・「grep '^taro' /etc/passwd」コマンドを実行します。

「/bin/bash」が現在のシェルであることが分ります。

[root@localhost ~]# grep '^taro' /etc/passwd
taro:x:1003:1003::/home/taro:/bin/bash
3. usermodコマンドを使用して、taroユーザーのログインシェルを /bin/false に設定します。

・「usermod -s /bin/false taro」コマンドを実行します。

[root@localhost ~]# usermod -s /bin/false taro
4.taroユーザーのログインシェルが変更されたことを確認します。

・「grep '^taro' /etc/passwd」コマンドを実行します。

無効なシェルである「/bin/false」に変更されたことが分ります。

[root@localhost ~]# grep '^taro' /etc/passwd
taro:x:1003:1003::/home/taro:/bin/false
5.ログアウトしてtaroユーザーでログインを試みます。

taroユーザーでログインを試みますが、ログインできないことを確認します。

・「電源」アイコン→「root」→「ログアウト」を選択します。

・「ログアウト」ボタンをクリックします。

・taroユーザーのパスワードを入力してログインを試みます。

 taroがログインを試みても、そのセッションは即座に終了し、システムへのアクセスが制限されるため、ログインに失敗します。

6.再度、rootユーザーでログインします。

・ログイン画面からrootを選択し、パスワードを入力してログインします。

7.usermodコマンドを使用して、taroユーザーのログインシェルを元に戻します。

・「usermod -s /bin/bash taro」コマンドを実行します。

[root@localhost ~]# usermod -s /bin/bash taro
8.次に、chshコマンドを使用して、hanakoユーザーのログインシェルを /bin/false に設定します。

・「chsh hanako」コマンドを実行します。

 無効なログインシェル「/bin/false」を指定します。コマンドを実行すると警告メッセージが表示されます。これは、指定した「/bin/false」が有効なシェルのリストに含まれていないからです。この警告メッセージは、無視して構いません。

[root@localhost ~]# chsh hanako
hanako のシェルを変更します。
新しいシェル [/bin/bash]: /bin/false # 無効なログインシェルを指定する
chsh: Warning: "/bin/false" is not listed in /etc/shells.
シェルを変更しました。
9.hanakoユーザーでログインを試みます。

hanakoユーザーでログインを試みますが、ログインできないことを確認します。

・「電源」アイコン→「root」→「ログアウト」を選択します。

・「ログアウト」ボタンをクリックします。

・hanakoユーザーのパスワードを入力してログインを試みます。

 hanakoがログインを試みても、そのセッションは即座に終了し、システムへのアクセスが制限されるため、ログインに失敗します。

10.再度、rootユーザーでログインします。

・ログイン画面からrootを選択し、パスワードを入力してログインします。

chshコマンドを使用して、hanakoユーザーのログインシェルを元に戻します。

・「chsh -s /bin/bash hanako」コマンドを実行します。

今度は、有効なログインシェルであるため、警告メッセージは表示されません。

[root@localhost ~]# chsh -s /bin/bash hanako
hanako のシェルを変更します。
シェルを変更しました。

まとめ

 無効なログインシェルを設定することで、特定のユーザーのログインを効果的に禁止することができます。この方法は、システム上の不要なログインを防止するために有効です。usermodchsh コマンドを適切に使用し、ユーザー管理を徹底することがセキュリティの向上につながります。