У меня есть несколько контейнеров докеров, настроенных в основном одинаково, которые успешно используют cron для запуска ночных заданий резервного копирования.
У меня есть еще один контейнер, настроенный в основном идентично, который безуспешно пытается использовать cron для запуска ночного задания резервного копирования.
Я установил rsyslog, чтобы получить больше информации, и когда cron запускает crontab root, я вижу следующую запись в файле syslog:
CRON[83463]: Ошибка установки учетных данных пользователя
Единственное отличие этого контейнера от всех остальных заключается в том, что он позволяет пользователям входить в систему с помощью LDAP. В Dockerfile есть следующие дополнительные строки:
RUN echo '*;*;*;Al0000-2400;svn' >> /etc/security/group.conf
КОПИРОВАТЬ pam_group /usr/share/pam-configs/groups
RUN echo "Требуется сеанс pam_mkhomedir.so skel=/etc/skel umask=077" >> /etc/pam.d/common-session
RUN sed -i 's#\(.*pam_ldap.so.*\)#требуется аутентификация pam_group.so\n\1#' /etc/pam.d/common-auth
RUN sed -i 's#^passwd:.*#passwd: файлы ldap systemd#;s#^group:.*#group: файлы ldap systemd#;s#^shadow:.*#shadow: файлы ldap#' / и т.д./nsswitch.conf
pam_group
файл выглядит так:
Имя: активировать /etc/security/group.conf
По умолчанию: да
Приоритет: 900
Тип аутентификации: Первичная аутентификация:
требуется pam_group.so
Ясно, что что-то с настройкой LDAP и попыткой гарантировать, что все пользователи будут добавлены в свн
group (которая вообще не работает) прервала сеанс пользователя root для cron.
Я просмотрел весь Интернет, но не нашел эту конкретную ошибку. Я пробовал связанные решения, но ничего не работает.
ОБНОВИТЬ:
pam.d/common-auth выглядит так:
auth [успех=2 по умолчанию=игнорировать] pam_unix.so nullok_secure
требуется авторизация pam_group.so
auth [success=1 default=ignore] pam_ldap.so use_first_pass
# вот запасной вариант, если ни один модуль не работает
реквизиты авторизации pam_deny.so
# заполнить стек положительным возвращаемым значением, если его еще нет;
# это позволяет избежать возврата ошибки только потому, что ничто не устанавливает код успеха
# так как модули выше будут просто прыгать
требуется авторизация pam_permit.so
# а вот еще попакетные модули (блок "Дополнительно")
авторизация необязательная pam_cap.so
pam.d/cron выглядит так:
@include общая аутентификация
# Устанавливает атрибут процесса loginuid
требуется сеанс pam_loginuid.so
# Чтение переменных окружения из файлов pam_env по умолчанию, /etc/environment
# и /etc/security/pam_env.conf.
требуется сеанс pam_env.so
# Кроме того, прочитать информацию о локали системы
требуется сеанс pam_env.so envfile=/etc/default/locale
@include общая учетная запись
@include общий-сеанс-неинтерактивный
# Устанавливает пользовательские ограничения, пожалуйста, определите ограничения для задач cron
# через /etc/security/limits.conf
требуется сеанс pam_limits.so