Linuxでユーザーのログイン可能な時間を制限する方法

この記事では、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つの主な方法があります。これらの方法を組み合わせることで、高度なログイン制限が可能です。

created by Rinker
オライリージャパン
¥3,080 (2024/07/19 02:58:25時点 Amazon調べ-詳細)

コメント

コメントする

目次