/etc/security/limits.conf および /etc/security/limits.d/20-nproc.conf への誤った変更

/etc/security/limits.conf および /etc/security/limits.d/20-nproc.conf への誤った変更

CentOS Linuxバージョン7.1.1503(Linuxカーネルバージョン3.10.x)VMで、/etc/security/limits.confおよび/etc/security/limits.d/20-nproc.confに次の行を追加しました。

someuser          soft    nofile     8000
someuser          hard    nofile     8000

仮想マシンを再起動した後もulimit -n4096が報告され続け、ulimit -n 8000「-bash:ulimit:open files:cannotmodifylimit:Operation not allowed」が発生し続けます。

この時点で、私は開いているファイルの制限を増やす方法について混乱しています。

ベストアンサー1

このエラーはいくつかの理由で発生する可能性があります。

まず、次のコマンドを使用して開いているファイル記述子の最大数を表示します。

$ cat /proc/sys/fs/file-max

出力が4096であると仮定すると、これはどういう意味ですか?つまり、一般ユーザーは単一のログインセッションで4096個のファイルを開くことができ、次のコマンドを使用してハード制限とソフト制限を確認して表示することもできます。

$ ulimit -Hn
$ ulimit -Sn

システム全体で同時に開いているファイル記述子の数は、編集で変更できます/etc/sysctl.conf。次のように、システム全体のファイル記述子制限をカーネル変数の新しい値に設定して、開いているファイルの最大数を増やすことができます/proc/sys/fs/file-max

$ sysctl -w fs.file-max=200000     #it forces the limit to 200000 files

/etc/sysctl.confその後、再起動後も設定が必要になるようにファイルを編集する必要があります。これを行うには、次の行を追加します。

$ fs.file-max = 200000

ログアウトして再度ログインする必要なく、次のように入力します。

$ sysctl -p

その後、次のように変更を確認できます。

$ cat /proc/sys/fs/file-max

OR

$ sysctl fs.file-max

その後、ユーザーのソフトとハード制限を変更するには、rootとしてログインするのが最善です。一般ユーザーはソフト制限のみを変更でき、ハード制限はルートで管理するためです。前述のとおり、rootでこれを行うには、を変更する必要があります/etc/security/limits.conf。たとえば、Oracleユーザーの場合:

oracle           soft    nofile          4096
oracle           hard    nofile          63536

再起動する必要のない変更を確認するには、再度ログインして機能していることを確認してsudo -i問題を特定できます。ログインしていないユーザーの場合は、rootとして次のことを行う必要があります。

$ sudo -i -u <user>

ちなみに、/etc/pam.d/loginファイルを編集し、次の行を追加する必要があるかもしれません。

$ session required pam_limits.so

pam_limit.so/etc/pam.d/loginではログインすることを意味しますが、sudoではそうではありません。/etc/pam.d/sudo制限は、「-i」なしで sudo を実行する場合にも適用され、/etc/pam.d でこれを行う必要がある場合があります。必要に応じて承認するには、/system-を変更してください。 PAMモジュールについて読んでください。

ただし、現在実行中のプロセスに制限をすぐに適用するには、変更に加えて次のことを行う必要があります/etc/security/limits.conf

$ prlimit

この記事を読むことをお勧めしますRed Hatの記事、次のような状況が発生する可能性があるためです。

一部のLinuxシステムでは、SSH経由でoracleユーザーとしてログインすると、次の例で設定されている「ハード」および「ソフト」の制限が正しく機能しない場合があります。 rootとしてログインし、oracleにsuすると動作します。この問題が発生した場合は、/etc/ssh/sshd_configでUsePrivilegeSeparationを「no」に設定し、service sshd restartを実行してSSHデーモンを再起動してみてください。一部のLinuxシステムでは、PAMを使用して権限の分離が正しく機能しません。 SSHセキュリティ機能である「権限分離」を無効にする前に、必ずセキュリティ担当者に連絡してください。

私が助けることができることを願っています。頑張ってください。

おすすめ記事