SSSD 프로세스는 죽지 않습니다

SSSD 프로세스는 죽지 않습니다

시간을 내어 내 문제를 확인해 주셔서 감사합니다.

저는 현재 이전에 한 번만 나타난 문제를 해결하기 위해 노력하고 있습니다. 1월 3일에 이것이 처음 나타났을 때 서버를 재부팅할 수 있었고 모든 것이 괜찮아 보였지만 지금은 다시 돌아왔습니다. 이는 프로덕션 데이터베이스 시스템이므로 재부팅할 창을 찾는 것이 때때로 어려울 수 있습니다. 문제에 대한 또 다른 임시 수정 사항을 제공하기 위해 며칠 후에 다시 재부팅하기 전에 이번에 실제로 무슨 일이 일어날 수 있는지 확실히 파악하기를 바랍니다. 자, 가자...

문제의 시스템에 대한 사용자 인증은 Red Hat Directory Server 9를 통해 LDAP로 처리됩니다. 아래에 설명된 문제는 이 한 서버에서만 나타나며 데이터베이스를 공유하는 해당 서버에서도 동일한 증상이 표시되지 않습니다. 현재로서는 서버를 인증하고 로그인할 수 있는 LDAP 계정이 없습니다. LDAP 인증은 SSSD에서 처리 중이며 현재 중지하거나 다시 시작할 수 없습니다. 두 가지 중 하나를 수행하려고 하면 SSH 콘솔이 응답하지 않게 됩니다. (ctrl-c는 실행된 명령을 종료할 수 없습니다)

PS는 일반적인 sssd 관련 프로세스가 실행 중임을 보여 주지만 kill -9해당 프로세스를 시도해도 성공적으로 중지되지 않는 것 같습니다.

ps aux | grep sss | grep -v grep
root      1150  0.0  0.0 150828  2908 ?        D    09:05   0:00 /usr/libexec/sssd/sssd_nss -d 0 --debug-to-files
root      7025  0.0  0.0  93616  2504 pts/2    D    16:18   0:00 /usr/sbin/sssd -f -D
root     11148  0.0  0.0 179436  5672 ?        D    Jan08  16:22 /usr/libexec/sssd/sssd_be -d 0 --debug-to-files --domain default
root     32700  0.0  0.0 150784  2908 ?        D    10:10   0:00 /usr/libexec/sssd/sssd_pam -d 0 --debug-to-files

를 사용하면 strace getent -s sss passwd일부 연결 시도가 거부되는 것을 볼 수 있지만 이에 대해 어떻게 해야 할지 잘 모르겠습니다.

connect(3, {sa_family=AF_FILE, path="/var/lib/sss/pipes/nss"...}, 110) = -1 ECONNREFUSED (Connection refused)
close(3)                                = 0
socket(PF_FILE, SOCK_STREAM, 0)         = 3
fcntl(3, F_GETFL)                       = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
fcntl(3, F_GETFD)                       = 0
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
connect(3, {sa_family=AF_FILE, path="/var/lib/sss/pipes/nss"...}, 110) = -1 ECONNREFUSED     (Connection refused)
close(3)                                = 0
socket(PF_FILE, SOCK_STREAM, 0)         = 3
fcntl(3, F_GETFL)                       = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
fcntl(3, F_GETFD)                       = 0
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
connect(3, {sa_family=AF_FILE, path="/var/lib/sss/pipes/nss"...}, 110) = -1 ECONNREFUSED (Connection refused)

확인 결과 lsof | head -n1; lsof | grep /var/lib/sss/pipes/좋은 시스템과 나쁜 시스템 사이에 열린 파이프가 훨씬 적은 것으로 나타났습니다. 이 파이프의 PID는 에서 보고된 것과 동일 ps aux하므로 시도해 kill -9도 소용이 없습니다.

나쁜 SSD

lsof | head -n1; lsof | grep /var/lib/sss/pipes/
COMMAND     PID         USER   FD      TYPE             DEVICE    SIZE/OFF       NODE NAME
sssd_be   11148         root   15u     unix 0xffff8806635911c0         0t0   31817638 /var/lib/sss/pipes/private/sbus-dp_default.11148
sssd_be   11148         root   16u     unix 0xffff880d443d6180         0t0   31783555 /var/lib/sss/pipes/private/sbus-dp_default.11148
sssd_be   11148         root   17u     unix 0xffff880c536d94c0         0t0   31783560 /var/lib/sss/pipes/private/sbus-dp_default.11148

좋은 SSD

lsof | head -n1; lsof | grep /var/lib/sss/pipes/
COMMAND     PID         USER   FD      TYPE             DEVICE    SIZE/OFF       NODE NAME
sssd      26793         root   13u     unix 0xffff88030b5d8c40         0t0 3248762734 /var/lib/sss/pipes/private/sbus-monitor
sssd      26793         root   14u     unix 0xffff8808cc064bc0         0t0 3248762735 /var/lib/sss/pipes/private/sbus-monitor
sssd      26793         root   15u     unix 0xffff880a9d9bc840         0t0 3248768164 /var/lib/sss/pipes/private/sbus-monitor
sssd      26793         root   16u     unix 0xffff880040a32f00         0t0 3248768165 /var/lib/sss/pipes/private/sbus-monitor
sssd_be   26794         root   15u     unix 0xffff8808cc064200         0t0 3248767368 /var/lib/sss/pipes/private/sbus-dp_default.26794
sssd_be   26794         root   16u     unix 0xffff880a9d9bd880         0t0 3248763661 /var/lib/sss/pipes/private/sbus-dp_default.26794
sssd_be   26794         root   17u     unix 0xffff8809841b4480         0t0 3248763662 /var/lib/sss/pipes/private/sbus-dp_default.26794
sssd_nss  26795         root   16u     unix 0xffff880a9d9bd200         0t0 3248751954 /var/lib/sss/pipes/nss
sssd_pam  26796         root   16u     unix 0xffff880859e26180         0t0 3248774325 /var/lib/sss/pipes/pam
sssd_pam  26796         root   17u     unix 0xffff880859e27b80         0t0 3248774326 /var/lib/sss/pipes/private/pam

또한 /var/log/secure에는 다음 항목이 여러 개 포함되어 있습니다.

sshd[9177]: pam_succeed_if(sshd:auth): error retrieving information about user
su: pam_sss(su-l:session): Request to sssd failed. Connection refuse
crond[29568]: pam_sss(crond:session): Request to sssd failed. Connection refused

추가적으로 제가 가장 먼저 알아차린 것 중 하나는 /var/log/messages 파일에 데이터가 없다는 것이었습니다. 해당 로그와 /var/log/sssd/ 로그 모두 오늘 아침 9시 3분경에 수집이 중지된 것 같습니다. /var/log/secure는 문제 없이 계속 데이터를 축적했습니다. syslog를 다시 시작하면 메시지 문제가 해결되었지만 sssd 로그는 여전히 작동하지 않습니다.

audit: backlog limit exceeded audit: audit_backlog=322 > audit_backlog_limit=320내가 마지막으로 알아차린 것은 dmesg가 및 같은 메시지로 가득 차 있다는 것입니다 audit_log_start: 122 callbacks suppressed. 나는 이것이 syslog가 제대로 작동하지 않을 때 발생한 것이라고 가정했지만 아직 확인하지 않았습니다.

저는 아직 이 문제에 대해 조사 중이며 무언가를 찾을 수 있기를 바랍니다. 하지만 사람들이 기꺼이 제공하려는 제안과 피드백을 무엇보다도 환영합니다.

정말 감사합니다!

-모든

답변1

동일한 시스템에서 실행되는 pam_ldap 및 sssd에 문제가 발생했습니다. pam과 함께 sssd 사용을 중단하려면 다음을 실행해야 합니다.

pam-config -a --ldap

그러면 pam에 LDAP가 추가되고 다음이 실행됩니다.

pam-config -d --sss

그러면 /etc/pam.d/의 pam 관련 구성 파일에서 sssd 설정이 삭제됩니다.

sss가 사용되지 않는지 확인하려면 nsswitch.conf의 올바른 위치에 ldap이 있는지(또는 최소한 sss가 없는지) 확인할 수도 있습니다. 다음은 sss가 활성화된 /etc/nsswitch.conf입니다:

#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry. 
#  
# Legal entries are:
#
#       compat                  Use compatibility setup
#       nisplus                 Use NIS+ (NIS version 3)
#       nis                     Use NIS (NIS version 2), also called YP
#       dns                     Use DNS (Domain Name Service)
#       files                   Use the local files
#       [NOTFOUND=return]       Stop searching if not found so far  
#
# For more information, please read the nsswitch.conf.5 manual page.
#

passwd: compat sss
group:  compat sss

hosts:  files mdns_minimal [NOTFOUND=return] dns
networks:   files dns

services:   files
protocols:  files
rpc:    files
ethers: files
netmasks:   files
netgroup:   files
publickey:  files

bootparams: files
automount:  files
aliases:    files
passwd_compat:  files
group_compat:   files

이 파일에는 sss가 비활성화되고 ldap이 활성화되어 있습니다.

passwd: compat ldap
group:  compat ldap

hosts:  files mdns_minimal [NOTFOUND=return] dns
networks:   files dns

services:   files
protocols:  files
rpc:    files
ethers: files
netmasks:   files
netgroup:   files
publickey:  files

bootparams: files
automount:  files
aliases:    files
passwd_compat:  files
group_compat:   files

관련 정보