「Limits.conf」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(関連記事へのリンクを修正)
 
(3人の利用者による、間の5版が非表示)
1行目: 1行目:
 
{{Lowercase title}}
 
{{Lowercase title}}
[[Category:セキュリティ]]
+
[[Category:認証]]
 
[[en:Limits.conf]]
 
[[en:Limits.conf]]
 
{{Related articles start}}
 
{{Related articles start}}
{{Related|Cgroups}}
+
{{Related|コントロールグループ}}
  +
{{Related|セキュリティ}}
 
{{Related articles end}}
 
{{Related articles end}}
   
{{ic|limits.conf}} を使うことでユーザーやグループに割り当てられ様々なリソースを制限することができます。フォーク爆弾などによってシステムリソースが食い尽くされることを防ぐのに役立ちます。
+
{{ic|/etc/security/limits.conf}} を使うことで [[PAM]] でログインしたユーザーが使用できるリソースを制限することができます。[[Wikipedia:ja:Fork爆弾|フォーク爆弾]]などによってシステムリソースが食い尽くされることを防ぐのに役立ちます。
   
{{Note|systemd を使っている場合 {{ic|/etc/security/limits.conf}} 反映されません。{{ic|/etc/systemd/system.conf}}, {{ic|/etc/systemd/user.conf}}, {{ic|/etc/systemd/<systemd_unit>/override.conf}} などを使ってリソースを制御することが可能です。詳しくは {{ic|systemd-system.conf}} の [[man ページ]]を見てください。}}
+
{{Note|ファイルシステムサービスには影響しません。[[systemd]] サービスは {{ic|/etc/systemd/system.conf}}, {{ic|/etc/systemd/user.conf}}, {{ic|/etc/systemd/system/''unit''.d/override.conf}} などを使ってリソースを制御することが可能です。詳しくは {{man|5|systemd-system.conf}} の man ページを見てください。}}
   
 
== 構文 ==
 
== 構文 ==
18行目: 19行目:
 
=== core ===
 
=== core ===
   
コアファイルはデバッグのときは役に立ちますが、通常の使用ではとくに役立ちません。ソフトリミットを0にしてハードリミットを無制限にすることで、デバッグでコアファイルが必要になったときだけ {{ic|$ ulimit -c unlimited}} で一時的にリミットを変更することができます。
+
コアファイルはデバッグのときは役に立ちますが、通常の使用ではとくに役立ちません。ソフトリミットを0にしてハードリミットを無制限にすることで、デバッグでコアファイルが必要になったときだけ {{ic|ulimit -c unlimited}} で一時的にリミットを変更することができます。
  +
{{bc|* soft core 0 # Prevent corefiles from being generated by default.
 
* hard core unlimited # Allow corefiles to be temporarily enabled.}}
+
* soft core 0 # Prevent corefiles from being generated by default.
  +
* hard core unlimited # Allow corefiles to be temporarily enabled.
   
 
=== nice ===
 
=== nice ===
   
 
最高優先度 (-20) のプロセスを実行できるのは root だけにすることで、システムが反応しなくなった場合に root で対処することができます。
 
最高優先度 (-20) のプロセスを実行できるのは root だけにすることで、システムが反応しなくなった場合に root で対処することができます。
  +
{{bc|* hard nice -19 # Prevent non-root users from running a process at minimal niceness.
 
root hard nice -20 # Allows root to run a process at minimal niceness to fix the system when unresponsive.}}
+
* hard nice -19 # Prevent non-root users from running a process at minimal niceness.
  +
root hard nice -20 # Allows root to run a process at minimal niceness to fix the system when unresponsive.
   
 
=== nofile ===
 
=== nofile ===
   
特定のドメインでプロセスが一度に開くことができるファイル記述子の数を制限します。{{ic|8192}} [https://appdb.winehq.org/objectManager.php?sClass=version&iId=21080&iTestingId=89787 特定のゲームを動作させるには] 値を {{ic|8192}} などに増やす必要があります。
+
特定のドメインでプロセスが一度に開くことができるファイル記述子の数を制限します。[https://appdb.winehq.org/objectManager.php?sClass=version&iId=21080&iTestingId=89787#notes 特定のゲームを動作させるには] 値を {{ic|8192}} などに増やす必要があります。MongoDB や Apache Kafka 等のデータベース管理システムの中は {{ic|nofile}} を {{ic|64000}} か {{ic|128000}} に設定することを推奨しているものもあります[https://docs.mongodb.com/manual/reference/ulimit/#recommended-ulimit-settings]
  +
{{bc|* hard nofile 8192 # Required for certain games to run.}}
 
  +
* hard nofile 65535
  +
* soft nofile 8192 # Required for certain games to run.
  +
  +
{{Warning|1=この値を大きすぎるか無制限に設定すると、[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=920913 fakeroot] などの一部のツールが機能しなくなる可能性があります。}}
   
 
=== nproc ===
 
=== nproc ===
40行目: 47行目:
   
 
以下は全てのユーザーの nproc を制限する例です:
 
以下は全てのユーザーの nproc を制限する例です:
  +
{{bc|* hard nproc 2048 # Prevent fork-bombs from taking out the system.}}
 
  +
* hard nproc 2048 # Prevent fork-bombs from taking out the system.
  +
 
{{ic|2048}} という値はあくまで例であり、場合によってはもっと高い値が必要になります。逆に、低くしても問題ない可能性もあります。
 
{{ic|2048}} という値はあくまで例であり、場合によってはもっと高い値が必要になります。逆に、低くしても問題ない可能性もあります。
   
 
nproc の設定を何にするのであれ、root ユーザーはいくらでもプロセスを作成できるように設定してください。そうしないと nproc の制限が低すぎた場合に回復できなくなってしまう可能性があります。上記の設定の後に以下の行を記述してください ({{ic|65536}} という値は自由です)。
 
nproc の設定を何にするのであれ、root ユーザーはいくらでもプロセスを作成できるように設定してください。そうしないと nproc の制限が低すぎた場合に回復できなくなってしまう可能性があります。上記の設定の後に以下の行を記述してください ({{ic|65536}} という値は自由です)。
  +
{{bc|root hard nproc 65536 # Prevent root from not being able to launch enough processes}}
 
  +
root hard nproc 65536 # Prevent root from not being able to launch enough processes
   
 
=== priority ===
 
=== priority ===
   
 
デフォルトの nice 値は基本的に 0 ですが、以下のパラメータを使うことでユーザーやグループによってそれぞれ個別の優先度を設定することができます。
 
デフォルトの nice 値は基本的に 0 ですが、以下のパラメータを使うことでユーザーやグループによってそれぞれ個別の優先度を設定することができます。
{{bc|* soft priority 0 # Set the default priority to neutral niceness.}}
 
 
== 参照 ==
 
   
  +
* soft priority 0 # Set the default priority to neutral niceness.
* [[セキュリティ]]
 

2024年7月10日 (水) 19:49時点における最新版

関連記事

/etc/security/limits.conf を使うことで PAM でログインしたユーザーが使用できるリソースを制限することができます。フォーク爆弾などによってシステムリソースが食い尽くされることを防ぐのに役立ちます。

ノート: このファイルはシステムサービスには影響しません。systemd サービスは /etc/systemd/system.conf, /etc/systemd/user.conf, /etc/systemd/system/unit.d/override.conf などを使ってリソースを制御することが可能です。詳しくは systemd-system.conf(5) の man ページを見てください。

構文

デフォルトファイルにはコメントが豊富に付けられていますが、limits.conf(5) の man ページを読むことでさらに詳しい情報を得ることができます。

推奨設定

core

コアファイルはデバッグのときは役に立ちますが、通常の使用ではとくに役立ちません。ソフトリミットを0にしてハードリミットを無制限にすることで、デバッグでコアファイルが必要になったときだけ ulimit -c unlimited で一時的にリミットを変更することができます。

*           soft    core       0           # Prevent corefiles from being generated by default.
*           hard    core       unlimited   # Allow corefiles to be temporarily enabled.

nice

最高優先度 (-20) のプロセスを実行できるのは root だけにすることで、システムが反応しなくなった場合に root で対処することができます。

*           hard    nice       -19         # Prevent non-root users from running a process at minimal niceness.
root        hard    nice       -20         # Allows root to run a process at minimal niceness to fix the system when unresponsive.

nofile

特定のドメインでプロセスが一度に開くことができるファイル記述子の数を制限します。特定のゲームを動作させるには 値を 8192 などに増やす必要があります。MongoDB や Apache Kafka 等のデータベース管理システムの中は nofile64000128000 に設定することを推奨しているものもあります[1]

*           hard    nofile     65535
*           soft    nofile      8192        # Required for certain games to run.
警告: この値を大きすぎるか無制限に設定すると、fakeroot などの一部のツールが機能しなくなる可能性があります。

nproc

フォーク爆弾を複製できる回数を制限するため、nproc の制限は重要です。ただし、設定した値が低すぎるとシステムが不安定になったり、新しいプロセスが作成できなくなって使用不可能な状態になることもあります。

ミニマルなウィンドウマネージャを使って複数のデスクトップアプリケーションやデーモンを動かす場合は 300 は低すぎますが、X を起動しないサーバーの場合は十分です (ジョージア大学の Linux サーバーでは 300 に設定されています)。

以下は全てのユーザーの nproc を制限する例です:

*           hard    nproc      2048        # Prevent fork-bombs from taking out the system.

2048 という値はあくまで例であり、場合によってはもっと高い値が必要になります。逆に、低くしても問題ない可能性もあります。

nproc の設定を何にするのであれ、root ユーザーはいくらでもプロセスを作成できるように設定してください。そうしないと nproc の制限が低すぎた場合に回復できなくなってしまう可能性があります。上記の設定の後に以下の行を記述してください (65536 という値は自由です)。

root        hard    nproc      65536       # Prevent root from not being able to launch enough processes

priority

デフォルトの nice 値は基本的に 0 ですが、以下のパラメータを使うことでユーザーやグループによってそれぞれ個別の優先度を設定することができます。

*           soft    priority   0           # Set the default priority to neutral niceness.