web-dev-qa-db-ja.com

ulimit:ハード制限とソフト制限の違い

Ulimitのハード制限とソフト制限の違いは何ですか?

開いているファイルの数については、1024のソフト制限と10240のハード制限があります。1024を超えるファイルを開くプログラムを実行することは可能です。ソフトリミットとは何ですか?

89
daniel kullmann

ハード制限を引き上げることができるのはrootだけです(どのプロセスでもそれを下げることができます)。したがって、これはセキュリティに役立ちます。非rootプロセスはハード制限を超えることはできません。しかし、非ルートプロセスはその子プロセスよりも低い制限を持つことができないという点で不便です。

ソフトリミットは、プロセスによっていつでも変更できます。したがって、プロセスが協調している限りは便利ですが、セキュリティには適していません。

ソフトリミットの一般的な使用例は、コアダンプ(ulimit -Sc 0)デバッグ中の特定のプロセスに対してそれらを有効にするオプションを維持しながら((ulimit -Sc unlimited; myprocess))。

ulimitシェルコマンドは setrlimit システムコールのラッパーであるため、最終的なドキュメントがここにあります。

一部のシステムではすべての制限が実装されていない場合があることに注意してください。特に、一部のシステムはファイル記述子のプロセスごとの制限をサポートしていません(Linuxはサポートしています)。そうでない場合、Shellコマンドは何もしない可能性があります。

ハードリミットはセキュリティを目的としています。非rootユーザーの場合、彼は現在設定されているハード制限からのみハード制限を減らすことができます。彼はそれを増やすことはできません。ハード制限を増やすことができるのは、rootユーザーのみです(または、Sudo特権を使用している可能性がありますが、それについては不明です)。非rootユーザーが実行できることは、そのプロセスに対して[0、ハード制限]の範囲内にある制限(ソフト制限と呼ばれる)を選択することです。プロセスによって見られ、考慮されるソフトリミット。

0
Ankit Shubham