この記事では、Linuxにおいてユーザーのログイン可能な時間を制限する方法について詳しく解説します。具体的なコード例とその解説、応用例を含めています。
目次
なぜログイン時間を制限するのか
ログイン時間の制限は、企業のセキュリティポリシーによるものや、特定の時間帯にリソースを集中させる必要がある場合など、さまざまな理由で行われます。例えば、深夜にシステムメンテナンスを行う場合、一般ユーザーのログインを制限することで作業の効率を上げることが可能です。
PAMを用いた制限
PAM(Pluggable Authentication Modules)を使用する方法が一般的です。`/etc/security/time.conf` ファイルを編集することで、ログイン可能な時間を設定できます。
time.confの基本的な設定
# /etc/security/time.confに以下のように設定する
*;*;username;Al0900-1700
上記の設定は、`username` という名前のユーザーが、平日の09:00から17:00の間にのみログインできるという設定です。
PAMの設定
`/etc/pam.d/sshd` や `/etc/pam.d/login` ファイルに以下の行を追加する必要があります。
account required pam_time.so
これでPAMが`time.conf`の設定を参照するようになります。
cronを用いた制限
cronを用いてスクリプトを定期実行し、ログイン制限をかける方法もあります。
cronによる制限スクリプト
# ユーザーを強制ログアウトするシェルスクリプト
if [[ $(date +%u) -eq 6 ]] || [[ $(date +%u) -eq 7 ]]; then
pkill -u username
fi
このスクリプトは土日に`username`ユーザーのプロセスを強制的に終了させるものです。
応用例
週末だけログインできるユーザー
*;*;weekend_user;SaSu0000-2400
特定の祝日にログイン制限をかける
# 祝日データを参照してログイン制限をかけるスクリプト
特定のIPアドレスからのログインを時間制限
# /etc/hosts.allow と /etc/hosts.deny を用いる
複数ユーザーの一括管理
# forループと配列を用いて複数ユーザーを一括で管理
まとめ
Linuxシステムにおいてユーザーのログイン時間を制限する方法には、PAMとcronの2つの主な方法があります。これらの方法を組み合わせることで、高度なログイン制限が可能です。
コメント