У меня есть сервер, на котором работает OpenLDAP, и проблемы, с которыми я сталкиваюсь, связаны с моим клиентом. Мой клиент работает с SSSD с NSS.

При первой загрузке у меня нет проблем, и команды sudo выдаются нормально.

У меня возникают проблемы после попытки установить или изменить пакет. Иногда aurman , иногда он загружается немедленно. Когда он проходит загрузку, он останавливается при Creating system user accounts... , Creating temporary files... или Arming ConditionNeedsUpdate...

Ниже приведен результат выполнения команды sudo journalctl --follow при выполнении aurman -S accountsservice :

Jul 26 16:39:52 test sudo[1400]: REDACTED_USER : problem with defaults entries ; TTY=pts/2 ; PWD=/home/REDACTED_USER ; USER=root ;
Jul 26 16:39:52 test sudo[1399]: REDACTED_USER : TTY=pts/2 ; PWD=/home/REDACTED_USER ; USER=root ; COMMAND=validate
Jul 26 16:39:52 test sudo[1400]: REDACTED_USER : TTY=pts/2 ; PWD=/home/REDACTED_USER ; USER=root ; COMMAND=/usr/bin/pacman --sync --asdeps -- lightdm
Jul 26 16:39:52 test sudo[1400]: pam_unix(sudo:session): session opened for user root by REDACTED_USER(uid=0)
Jul 26 16:39:53 test systemd[1]: Reloading.
Jul 26 16:39:53 test systemd-fstab-generator[1437]: x-systemd.device-timeout ignored for REDACTED_HOSTNAME:/srv/nfs/home/
Jul 26 16:39:53 test sudo[1400]: pam_unix(sudo:session): session closed for user root
Jul 26 16:39:53 test sudo[1449]: REDACTED_USER : problem with defaults entries ; TTY=pts/2 ; PWD=/home/REDACTED_USER ; USER=root ;
Jul 26 16:40:18 test systemd[1]: Failed to get initial list of names: Connection timed out
Jul 26 16:40:25 test dbus-daemon[374]: Unknown username "systemd-timesync" in message bus configuration file
Jul 26 16:40:45 test dbus-daemon[374]: [system] Reloaded configuration
Jul 26 16:41:10 test dbus-daemon[374]: [system] Failed to activate service 'org.freedesktop.systemd1': timed out (service_start_timeout=25000ms)
Jul 26 16:41:10 test sudo[1449]: REDACTED_USER : TTY=pts/2 ; PWD=/home/REDACTED_USER ; USER=root ; COMMAND=/usr/bin/pacman -D --asexplicit lightdm
Jul 26 16:41:10 test sudo[1449]: pam_unix(sudo:session): session opened for user root by REDACTED_USER(uid=0)
Jul 26 16:41:10 test sudo[1449]: pam_unix(sudo:session): session closed for user root

Ниже приведен результат sudo journalctl --follow при запуске sudo -i :

Jul 26 17:02:00 test sudo[1645]: REDACTED_USER : problem with defaults entries ; TTY=pts/0 ; PWD=/home/REDACTED_USER ; USER=root ;
Jul 26 17:02:25 test dbus-daemon[374]: [system] Failed to activate service 'org.freedesktop.systemd1': timed out (service_start_timeout=25000ms)
Jul 26 17:02:28 test sudo[1645]: pam_sss(sudo:auth): authentication success; logname=REDACTED_USER uid=8102 euid=0 tty=/dev/pts/0 ruser=REDACTED_USER rhost= user=REDACTED_USER
Jul 26 17:02:28 test sudo[1645]: REDACTED_USER : TTY=pts/0 ; PWD=/home/REDACTED_USER ; USER=root ; COMMAND=/bin/bash
Jul 26 17:02:28 test sudo[1645]: pam_unix(sudo:session): session opened for user root by REDACTED_USER(uid=0)

Это мой файл sssd.conf:

[sssd]
config_file_version = 2
services = nss, pam
domains = LDAP

[domain/LDAP]
cache_credentials = true
enumerate = true

id_provider = ldap
auth_provider = ldap
chpass_provider = ldap

ldap_uri = ldaps://REDACTED_HOSTNAME
ldap_search_base = dc=REDACTED,dc=HOST,dc=NAME
ldap_id_use_start_tls = true
ldap_tls_reqcert = demand
ldap_tls_cacert = /etc/openldap/certs/slapdcert.pem
ldap_chpass_uri = ldaps://REDACTED_HOSTNAME

Это мой файл nsswitch.conf (ПРИМЕЧАНИЕ: я играл с sss на sudoers, services, netgroup и той же проблеме):

passwd: files sss mymachines systemd
group: files sss mymachines systemd
shadow: files sss
sudoers: files sss

publickey: files

hosts: files mymachines myhostname resolve [!UNAVAIL=return] dns
networks: files

protocols: files
services: files sss
ethers: files
rpc: files

netgroup: files sss

Ниже приведен результат выполнения time sudo strace -r -o trace_5.log sudo echo hi , каждый пришел в разное время, когда я отлаживал (повторюсь, каждая строка - это отдельный файл, и задержка 25 с была для вызова sudo ):

25.007024 recvmsg(6, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="l\3\1\1e\0\0\0\3\0\0\0m\0\0\0\6\1s\0\5\0\0\0", iov_len=24}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = 24
25.025124 openat(AT_FDCWD, "/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
25.025143 openat(AT_FDCWD, "/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
25.019033 recvmsg(6, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="l\3\1\1e\0\0\0\3\0\0\0m\0\0\0\6\1s\0\5\0\0\0", iov_len=24}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = 24
25.025170 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0

Два openat были, когда существовал файл /etc/lcoale.conf, когда я удалил его, он остановился. Наиболее распространенной проблемой был вызов recvmsg несколько раз. Но getent hosts закончили нормально. Тем не менее, getent passwd занимает около 25 секунд, и в sudo journctl --follow:

Jul 26 17:11:47 test dbus-daemon[374]: [system] Failed to activate service 'org.freedesktop.systemd1': timed out (service_start_timeout=25000ms)

Любая помощь будет принята с благодарностью ...

[РЕДАКТИРОВАТЬ]

Когда я запускаю strace -r -o trace_8 getent passwd я получаю:

25.025198 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0

1 ответ1

0

Ваши модули "passwd" и "group" в nsswitch.conf расположены в неправильном порядке: sss должен быть после systemd .

Когда systemd запускает сервис, он должен разрешить свое имя пользователя (если оно есть) в UID. Когда dbus-daemon загружает свою конфигурацию, он также должен разрешить имена пользователей, найденные в политиках безопасности, в UID. Это происходит через nsswitch так же, как и все остальные учетные записи пользователей.

Обычно эти сопоставления для всех системных сервисов находятся в /etc /passwd (который является модулем "files" nsswitch), но, возможно, из-за неверного решения (теперь возвращенного в Git), некоторые системные сервисы не создают там свои учетные записи пользователей. - вместо этого они запрашивают динамический UID через модуль "systemd" nsswitch.

В вашей текущей конфигурации сетевой модуль passwd (sss) указан перед модулем "systemd". Поэтому всякий раз, когда systemd или dbus-daemon пытаются найти UID, например, для systemd-timesyncd , они в конечном итоге проходят через SSSD. Но SSSD ставится в очередь для запуска после systemd-timesyncd, что приводит к тупику (циклическая зависимость, если хотите).

Хотя я подозреваю, что это не единственная причина ваших проблем. Но это почти определенно причина ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .