Linuxでユーザごとに開けるファイルの最大数や使用できるメモリの最大量、実行できるプロセス数の最大数などを制限する。制限することによりシステムの安定性とセキュリティを向上させることができる。
設定方法
/etc/security/limits.conf ファイルにて設定を行う。
PAM (Pluggable Authentication Modules) を通じてログインするユーザーのリソース制限を設定する。PAMは、ユーザーがシステムにログインする際に、/etc/security/limits.conf
ファイルを参照し0てリソース制限を適用する。これにより、ログイン時にユーザーごとのリソース制限が設定される。
<ユーザ> <タイプ> <アイテム> <値>
<ユーザ> | 制限を適用するユーザーまたはグループを指定する。 すべてのユーザーに適用する場合は * を使用します。グループを指定する際は@グループ名とする |
<タイプ> | 制限の種類。soft か hard を指定。soft は実際の上限値。hard は soft として設定可能な値の上限値となる |
<アイテム> | 制限するリソースを指定。例えば、nofile (開けるファイルの数)、nproc (プロセスの数)、memlock (メモリのロック量) など |
<値> | 実際の制限する値 |
ファイルを編集後、対象ユーザが再ログインすることでリソース制限が適用されることとなる。
設定確認方法
現在ログインしているユーザに適用されている全てのリソース制限を確認する
# ulimit -a
現在ログインしているユーザに適用されている全てのソフトリミットを確認
# ulimit -Sa
現在ログインしているユーザに適用されている全てハードリミットを確認
# ulimit -Ha
設定例
ファイル最大数を制限する
* soft nofile 1024
* hard nofile 2048
すべてのユーザーに対して、開けるファイルの数をソフトリミットで1024、ハードリミットで2048に設定。ソフトリミットはユーザーが自分で増やすことができる上限値で、ハードリミットはシステムが強制する絶対的な上限値となる
プロセスの最大数を制限する
@staff hard nproc 100
staff グループのユーザーに対して、実行できるプロセスの数をハードリミットで100に制限しています。これにより、staff グループに所属するユーザがシステムリソースを過度に消費するのを防止することができる。
CPU時間を制限する
* soft cpu 100
* hard cpu 200
すべてのユーザーに対して、使用できるCPU時間をソフトリミットで100分、ハードリミットで200分に設定。これにより、長時間CPUを占有するプロセスを制限します。
メモリのロック量を制限する
* soft memlock 64
* hard memlock 128
すべてのユーザーに対して、ロックできるメモリの量をソフトリミットで64KB、ハードリミットで128KBに設定している。これは、特定のプロセスがメモリを過度にロックして他のプロセスに影響を与えるのを防ぐため
コメント