システム管理者として、いつかは定期的なシステムメンテナンスを行うことになるでしょう。時々、システムに問題が発生し、問題を修正するためにシステムを停止する必要が生じることもあります。どんな状況でも、ノンルート(通常の)ユーザーがシステムに接続するのを防ぐのは良い考えです。
関連記事: LinuxでSSHルートログインを無効または有効にし、SSHアクセスを制限する方法
この記事では、Linuxで/etc/nologinファイルおよびnologinシェルを使用してノンルートユーザーのログインをブロックする方法について説明します。実際に何が起こっているかをユーザーに説明するメッセージを設定する方法についても見ていきます。
/etc/nologinファイルを使用してユーザーログインをブロックする方法/etc/nologinファイルの主な機能は、シャットダウンプロセス中にシステムにログインしようとするユーザーに(ファイル内に保存された)メッセージを表示することです。
メッセージがユーザーに表示されると、ログイン手順が終了し、ユーザーがシステムにログインできなくなります。
これは、次のようにファイルを手動で作成してユーザーログインをブロックするために使用できます。
# vi /etc/nologin
以下のメッセージをファイルに追加してください。
The Server is down for a routine maintenance. We apologize for any inconvenience caused, the system will be up and running in 1 hours time. For more information, contact the system admin [email protected].
これでうまく動作するかテストできます。以下のスクリーンショットからわかるように、通常のユーザーtecmint
はログインできません。

ノーログインシェルを使用してユーザーログインをブロックする方法
この方法は少し異なります。ユーザーがシェルにアクセスできなくなりますが、ftpなどのプログラムを介してシステムにログオンすることができます。これらのプログラムは、ユーザーがシステムに接続するためにシェルが必要ではない場合があります。
さらに、特別なシナリオで特定のユーザーへのシェルアクセスをブロックできます。
RHEL/CentOS/Fedoraの場合
単純にchsh(シェルの変更)コマンドを使用して、/etc/passwdファイル内のユーザーのシェルを/bin/bash
や/bin/sh
のようなものから/sbin/nologin
に変更します。これはログインを拒否することを意味します。
# chsh -s /bin/nologin tecmint
Debian/Ubuntuの場合
ここでは、/bin/falseファイルを使用する必要があります。以下のコマンドは、ユーザーtecmintのシェルを/bin/false
に変更します(ユーザーがログイン資格情報を提供した後):
$ sudo chsh -s /bin/false tecmint
関連記事は以下を参照してください。
- Ubuntuでルートログインの有効化および無効化方法
- RHEL/CentOS 7でルートユーザーアカウントパスワードをリセット/回復する方法
- SFTPユーザーをホームディレクトリに制限する方法:chroot Jailの使用
- Linuxでローカル、ユーザー、およびシステム全体の環境変数を設定および解除する方法
以上で全てです!このトピックに関する質問や追加のアイデアがある場合は、以下のコメントフォームをご利用ください。
Source:
https://www.tecmint.com/block-or-disable-normal-user-logins-in-linux/