web-dev-qa-db-ja.com

pam_limits.soがsudoで問題を起こす

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

3
MSchultz

これはpam_limitsモジュールのバグであり、認証に失敗します。 RHEL/Centos 7にのみ影響すると思います。nofiles設定が無制限または非常に大きい(fs.nr_open = 1024x1024 = 1024576より大きい)Sudoユーザーに影響します。

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

  • Sudo PAMルールからpam_limitsを削除します
  • 宛先ユーザー(Tomcat)のnofilesfs.nr_openよりも小さい値に設定します
  • カーネル設定fs.nr_open/etc/sysctl.conf内)をulimitより大きくします
  • 修正を待ちますか?
6
Steve Shipway

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

0
ering