どうすればいいですか?私のGNU / Linux OSにPAMがない場合、開かれたファイルの数はデフォルトで1024ですulimit -n NNNN
。それでは、PAMなしでどのように機能します。この場合、制限を設定するにはどうすればよいですか?
===更新===
私はPAMを直接使用することにしました。 PAMを使用せずに開かれたファイルのハード制限を超えたい場合は、rlimitsのハード制限で4096個のファイル数を定義してからRLIMIT_NOFILE
定数を見つけます。include/asm-generic/resource.h
また、CAP_SYS_RESOURCEを確認してください。制限を超えるには、実行中のシステムを呼び出す必要があります。 Bashのようにシステムコールを行う方法はないようですが、バイナリ実行ファイルで実装することはできます。または、カーネルパッチを適用できます。INR_OPEN_MAX
include/linux/fs.h
setrlimit()
setrlimit()
答え1
実際に可能です。ulimit
CAP_SYS_RESOURCE関数を使用してシステムコールを実行するだけです(コマンドが実行するアクションです)。
各制限には、ハード制限とソフト制限という2つの値があります。ユーザーは、ソフト制限をハード制限に増やすこともできます。ハード制限は、適切な権限がある場合にのみ増やすことができます(一部のリソースではカーネル制限を超えることはできません)。詳細についてはを参照してくださいman getrlimit
。
最も簡単な方法は、rootを介して実行することです(たとえば、次のように実行します。su root; ulimit; su user
- 最初にrootになり、そこで制限を変更してから適切なユーザーに戻ります)。安全な方法は、上記の機能セットを実行するバイナリを持つことです。 (man setcap
および参照man capabilities
)および適切なアクセス権。
あなたの場合、ハード制限は4096なので、自分(ユーザー)はその制限を超えることはできません。