web-dev-qa-db-ja.com

ulimit -nは変更されません-値limits.confは効果がありません

私は、ubuntuマシン上のすべてのユーザーのオープンファイル記述子の最大値を引き上げようとしています。

この質問は、この質問のフォローアップです。

pam_limits.soが必要な場合でも、オープンファイル記述子のlimits.conf設定がulimitによって読み取られません

必要な「ルート」エントリをlimits.confに追加した以外は

エントリーはこちら

*               soft    nofile           100000
*               hard    nofile           100000
root            soft    nofile           100000
root            hard    nofile           100000

pam_limits.soに関連する行は、/ etc/pam.d /内のすべての関連ファイルでコメント解除され、fs.file-maxは/etc/sysctl.confで正しく設定されています

しかし、私はまだ見ます

abc@machine-2:/etc/pam.d$ ulimit -n
1024

再起動後。

何が問題でしょうか?

私のデフォルトのシェルは/ bin/shであり、マシン上のユーザーが何らかの分散認証方式で認証されているため、chshを使用してデフォルトのシェルを変更できません。

13
Nerrve

同様の問題がありましたが、SSHログインのみでした。 (コンソール経由の)ローカルログインは/etc/security/limits.conf

結局のところ、設定すると:

UsePrivilegeSeparation yes

/etc/ssh/sshd_configファイル、次にsshdは権限のない子をフォークしてアカウントの環境を設定します。この子には特権がないため、pam_limits.soに上限を設定しても効果はありませんでした。

設定したらすぐ

UsePrivilegeSeparation no

/etc/ssh/sshd_configとSSHサービスをバウンスすると、limits.confファイルがSSHログインで尊重されました。

5
user418149

Ulimitが/ etc/profileまたは〜/ .bashrcによって適用されていると思います。あなたのシステムに複雑なpamがあるという事実は、私は何かがうまくいっていないことを確認します。

また、pam_limits(8)で言及されているように、/ etc/security/limits.d /に解析されている誤ったファイルがないことを確認します。

セッションに必要なpam_limits.conf行にデバッグパラメータを追加し、ログイン時に/var/log/auth.logを監視します。

ソフト制限が1024の場合、ハード制限はどうですか?

suは、-l引数を使用して、suで新しいログインを取得する必要があります。

su -l -s/bin/bash

幸運を。

4
etherfish

Rootとしてログに記録されたRedhatサーバー

/etc/security/limits.conf

user01  -       nofile  2048

rootとしてログに記録されるstraceコマンド

strace -o loglimit su - user01

他のシェルのオープンログ制限

grep "limit" loglimit
open("/lib64/security/pam_limits.so", O_RDONLY) = 6
 ..........
 ..........
 open("/etc/security/limits.conf", O_RDONLY) = 3
 read(3, "# /etc/security/limits.conf\n#\n#E"..., 4096) = 1823
 open("/etc/security/limits.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 3
 setrlimit(RLIMIT_NOFILE, {rlim_cur=2*1024, rlim_max=2*1024}) = 0

このように私は知っています、pam_limitsが読み込まれ、limits.confが読み込まれました。pam_limitsが読み込まれたが、ulimit -nを使用して他の値がまだ表示されている場合は、@ etherfishの指示に従ってシェルプロファイルを確認してください。

4
c4f4t0r

私はこのような問題を抱えていました、ここで私がしたこと。

Straceコマンドは、プロセスが外部ライブラリと実行しているすべての相互作用を出力するため、設定がロードされているかどうかを確認できます。

だから、上記のように、私はそうします:

root:/etc/pam.d$ strace -o ~/loglimit su - glaudiston
glaudiston:~$ exit
logout
root:/etc/pam.d$ cat ~/loglimit | grep limits.conf

私の問題では、straceログ(strace -o log su-username)に制限テキストのインスタンスがないため、limits.confファイルがロードされませんでした。

まず、pam_limits.soが/etc/security/limits.confを探すことを確認します

root:/etc/pam.d$ strings /lib/security/pam_limits.so | grep limits.conf
/etc/security/limits.conf

だから、私はモジュールpam_limits.soが/etc/pam.dにあるファイルのauthオペレーションでロードされることを確認します...たとえば、/ etc/pam.d/suに、私は追加しました:

session   required    pam_limits.so

これで、ユーザーに「su」を実行でき、制限がロードされます。確認するためにstraceステップをやり直すことができます。

私のLinuxはLFSなので、/ etc/pam.dファイルにpam_limits.soがないのは私のせいです。他のディストリビューションでは、私はこの正確な問題ではないと思います。

しかし、これが役に立てば幸いです。

3
ton

私の場合(Centos 6.10)straceは、制限が/ etc/security/limits.confから設定された後、ログインプロセスで/ etc/security/limitsからリセットされたことを示しました.d/90-nproc.conf非rootユーザーの場合:

*          soft    nproc     1024
root       soft    nproc     unlimited
1
blur