Ldap
克朗834638346383463: 設置使用者憑據失敗
我有許多 docker 容器,它們的設置大多相同,它們成功地使用 cron 執行夜間備份作業。
我有另一個容器,設置基本相同,它嘗試使用 cron 執行夜間備份作業,但失敗了。
我安裝了 rsyslog 以獲取更多資訊,當 cron 執行 root 的 crontab 時,我在 syslog 文件中看到以下條目:
CRON[83463]: Failure setting user credentials
此容器與所有其他容器之間的一個區別在於,此容器允許使用者使用 LDAP 登錄。它在 Dockerfile 中有以下額外的行:
RUN echo '*;*;*;Al0000-2400;svn' >> /etc/security/group.conf COPY pam_group /usr/share/pam-configs/groups RUN echo "session required pam_mkhomedir.so skel=/etc/skel umask=077" >> /etc/pam.d/common-session RUN sed -i 's#\(.*pam_ldap.so.*\)#auth required pam_group.so\n\1#' /etc/pam.d/common-auth RUN sed -i 's#^passwd:.*#passwd: files ldap systemd#;s#^group:.*#group: files ldap systemd#;s#^shadow:.*#shadow: files ldap#' /etc/nsswitch.conf
該
pam_group
文件如下所示:Name: activate /etc/security/group.conf Default: yes Priority: 900 Auth-Type: Primary Auth: required pam_group.so
顯然,有關設置 LDAP 並嘗試確保將所有使用者添加到
svn
組(根本不起作用)的一些事情破壞了 cron 的 root 使用者會話。我查看了整個網際網路,但沒有發現這個特定的錯誤。我已經嘗試過相關的解決方案,但沒有任何效果。
更新:
pam.d/common-auth 看起來像:
auth [success=2 default=ignore] pam_unix.so nullok_secure auth required pam_group.so auth [success=1 default=ignore] pam_ldap.so use_first_pass # here's the fallback if no module succeeds auth requisite pam_deny.so # prime the stack with a positive return value if there isn't one already; # this avoids us returning an error just because nothing sets a success code # since the modules above will each just jump around auth required pam_permit.so # and here are more per-package modules (the "Additional" block) auth optional pam_cap.so
pam.d/cron 看起來像:
@include common-auth # Sets the loginuid process attribute session required pam_loginuid.so # Read environment variables from pam_env's default files, /etc/environment # and /etc/security/pam_env.conf. session required pam_env.so # In addition, read system locale information session required pam_env.so envfile=/etc/default/locale @include common-account @include common-session-noninteractive # Sets up user limits, please define limits for cron tasks # through /etc/security/limits.conf session required pam_limits.so
您的問題可能是 root 使用者不在 LDAP 中;你需要以某種方式包括
pam_unix.so
在內/etc/pam.d/cron
。例如:
auth [success=2 default=ignore] pam_unix.so nullok_secure @include common-auth
假設
common-auth
開始是這樣的:auth [success=1 default=ignore] pam_ldap.so auth requisite pam_deny.so auth required pam_permit.so