Kerberos kinit crontab定時任務不生效的問題解決


問題

有這樣一個定時任務

1 */12 * * * kinit -kt xxxxxx.keytab principle

這樣寫每天 12點,執行一次。

但是服務器的應用程序報錯:

GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)] 

分析

klist 卻發現keytab過期。

手動執行 kinit -kt xxxxxx.keytab 【principle】 卻沒有問題,有效期得到延長。

查閱kinit手冊卻發現:

-c 這個參數,是指定cache file name的。
如果不指定,則讀取環境變量:KRB5CCNAME 這個變量,如果變量還是不存在,則會使用缺省值:

/tmp/krb5cc_%uid

結論

那么結論來了,正確的寫法應該是

kinit -kt xxxxxx.keytab -c FILE:/path/to/krb5cache/%uid/krb5cc_%uid 【pinciple】

所以根本不是crontab的問題。

思考

此問題通常發生在有多個用戶,使用不同的keytab進行認證的情況。

那么還有一種思路,我們可以 將KRB5CCNAME 寫入 當前用戶的/home/%user/.bashrc 中,並且在crontab表達式前面增加:

source ~/.bashrc && kinit -kt xxxxxx.keytab【pinciple】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM