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_open
sudo 사용자에게 영향을 미칩니다.
귀하의 옵션은 다음과 같습니다:
pam_limits
sudo 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
오류가 사라집니다.