pam_limits.soによってsudoに問題が発生する

pam_limits.soによってsudoに問題が発生する

Centos 7でTomcatサーバーを実行する際に問題があります。同様の設定で合計7つあります。 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 -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

答え1

pam_limitsこれは認証失敗を引き起こすモジュールのバグです。 RHEL / Centos 7にのみ影響を与えるようです。これは、無制限または非常に高いnofiles設定(= 1024 x 1024 = 1024576より大きい)を持つfs.nr_opens​​udoユーザーに影響します。

あなたのオプションは次のとおりです。

  • pam_limitssudo PAMルールから削除
  • ターゲットユーザー(tomcat)をnofiles以下のように設定します。fs.nr_open
  • ulimit 以上でカーネル設定fs.nr_open(in ) を増やします。/etc/sysctl.conf
  • 修正を待っていますか?

答え2

これは、実行中のユーザーのパスワードが期限切れになった場合に発生する可能性があります。この場合、RHEL 7で同じエラーが発生しました。

答え3

/etc/security/limits.conf存在しないと同じエラーが発生することがわかりました。空/etc/security/limits.confのファイルを作成するとpam_limitsエラーが消えます。

関連情報