CentOS 7で実行しているTomcatサーバーに問題があります。 4つは最近パッチが適用されて再起動され、残りの3つは約2年間の稼働時間がありました。
私がする時:
Sudo -u Tomcat ls /tmp
新しくパッチを適用したサーバーで次のようなエラーが表示されます。
Sudo: pam_open_session: Permission denied
Sudo: policy plugin failed session initialization
パッチを当てていないサーバーでコマンドを実行します。
/etc/security/limits
は同じです:
Tomcat soft nofile 5000000
Tomcat hard nofile 5000000
Tomcat soft nproc 5000000
Tomcat hard nproc 5000000
コメントアウトすることでエラーを回避できます:
/etc/pam.d/Sudo:
session required pam_limits.so
わかりませんか?
適切な場所を探していますか?
両方からのstraceは次のようになります。
失敗:
strace -e setrlimit Sudo -u Tomcat ls /tmp
setrlimit(RLIMIT_NPROC, {rlim_cur=RLIM64_INFINITY, rlim_max=RLIM64_INFINITY}) = 0
setrlimit(RLIMIT_NPROC, {rlim_cur=1031015, rlim_max=1031015}) = 0
setrlimit(RLIMIT_NPROC, {rlim_cur=5000000, rlim_max=5000000}) = 0
setrlimit(RLIMIT_NOFILE, {rlim_cur=5000000, rlim_max=5000000}) = -1 EPERM (Operation not permitted)
Sudo: pam_open_session: Permission denied
Sudo: policy plugin failed session initialization
+++ exited with 1 +++"
ワーキング:
strace -e setrlimit Sudo -u Tomcat ls /tmp
setrlimit(RLIMIT_NPROC, {rlim_cur=5000000, rlim_max=5000000}) = 0
setrlimit(RLIMIT_NOFILE, {rlim_cur=5000000, rlim_max=5000000}) = -1 EPERM (Operation not permitted)
setrlimit(RLIMIT_NPROC, {rlim_cur=RLIM64_INFINITY, rlim_max=RLIM64_INFINITY}) = 0
hs_err_pid13726.log hsperfdata_cron hsperfdata_tokor hsperfdata_Tomcat systemd-private-U8GAP7
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=28963, si_status=0, si_utime=0, si_stime=0} ---
+++ exited with 0 +++
pam
作業中のバージョンは:pam-1.1.8-12.el7_1.1.x86_64
および非稼働時:pam-1.1.8-18.el7.x86_64
これはpam_limits
モジュールのバグであり、認証に失敗します。 RHEL/Centos 7にのみ影響すると思います。nofiles
設定が無制限または非常に大きい(fs.nr_open
= 1024x1024 = 1024576より大きい)Sudoユーザーに影響します。
オプションは次のとおりです。
pam_limits
を削除しますnofiles
をfs.nr_open
よりも小さい値に設定しますfs.nr_open
(/etc/sysctl.conf
内)をulimitより大きくしますこれは、実行しているユーザーのパスワードが期限切れの場合に発生する可能性があります。そのような状況では、RHEL 7でも同じエラーが発生しました。