Рейтинг:0

CRON[83463]: Ошибка установки учетных данных пользователя

флаг us

У меня есть несколько контейнеров докеров, настроенных в основном одинаково, которые успешно используют 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
Рейтинг:1
флаг pk

Ваша проблема, вероятно, в том, что пользователь root не входит в LDAP; вам нужно будет включить pam_unix.so в /etc/pam.d/cron как-то.

Например:

auth [успех=2 по умолчанию=игнорировать] pam_unix.so nullok_secure
@include общая аутентификация

При условии, что общая авторизация начинается примерно так:

авторизация [успех=1 по умолчанию=игнорировать] pam_ldap.so
реквизиты авторизации pam_deny.so
требуется авторизация pam_permit.so
флаг us
Я добавил больше информации к вопросу. Я думаю, что у меня есть то, что вы предлагаете, в том, что у меня есть строка "auth" pam_unix.so перед строками LDAP в файле (common-auth), который включен в файл pam.d/cron.
András Korn avatar
флаг pk
Бит `success=2` неверен. Он перейдет к pam_deny.so. Сделайте это `success=3`.
флаг us
Спасибо за помощь и совет. Я попробую завтра. Чтобы я мог узнать больше, у меня есть вопрос. Ваш пример дает `"success=2"`, и это тоже значение по умолчанию. Что означает число и почему оно должно быть 3?
András Korn avatar
флаг pk
Число указывает PAM, сколько следующих модулей в этом стеке следует пропустить, если результат, о котором сообщает этот модуль, является «успехом». Если хотите, это условное `goto`. В вашей конфигурации `success=2` приводит к тому, что `pam_group` и `pam_ldap` будут пропущены, если `pam_unix` будет успешным. Вы также можете пропустить `pam_deny`, потому что это всего лишь универсальный способ все отрицать. Идея с правилами `success=X` состоит в том, чтобы пропустить `pam_deny` и перейти к любым необязательным модулям.
флаг us
Спасибо.Это действительно помогает.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.