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설정(=1024x1024=1024576보다 큼 )을 가진 fs.nr_opensudo 사용자에게 영향을 미칩니다.

귀하의 옵션은 다음과 같습니다:

  • 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오류가 사라집니다.

관련 정보