PAMなしでulimitを設定する

PAMなしでulimitを設定する

どうすればいいですか?私の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_MAXinclude/linux/fs.hsetrlimit()setrlimit()

答え1

実際に可能です。ulimitCAP_SYS_RESOURCE関数を使用してシステムコールを実行するだけです(コマンドが実行するアクションです)。

各制限には、ハード制限とソフト制限という2つの値があります。ユーザーは、ソフト制限をハード制限に増やすこともできます。ハード制限は、適切な権限がある場合にのみ増やすことができます(一部のリソースではカーネル制限を超えることはできません)。詳細についてはを参照してくださいman getrlimit

最も簡単な方法は、rootを介して実行することです(たとえば、次のように実行します。su root; ulimit; su user- 最初にrootになり、そこで制限を変更してから適切なユーザーに戻ります)。安全な方法は、上記の機能セットを実行するバイナリを持つことです。 (man setcapおよび参照man capabilities)および適切なアクセス権。

あなたの場合、ハード制限は4096なので、自分(ユーザー)はその制限を超えることはできません。

関連情報