Debian

Kerberos、.k5login 和 sudo

  • September 17, 2015

**背景:**我正在使用 Debian 7 系統,該系統已與 LDAP+Kerberos 系統集成,使用libnss-ldap,libpam-krb5nscd. 我已修改sudoers為允許 LDAP 組有權sudo並獲得超級使用者權限。因此,我可以作為 LDAP 組登錄來管理機器。這一切都很好,並且ssh登錄適用於 LDAP 使用者。

我只是.k5login在我的使用者帳戶的主目錄中試驗一個文件,Cosmic Ossifrage. 在文件中,我列出了:

cosmic_ossifrage@REALM.COM

這是一個有效的 Kerberos 身份。SSH 登錄,因為該使用者繼續正確使用.k5login文件。

但是,有了這個.k5login文件在我的主目錄中,我不再能夠使用它sudo -i來獲得超級使用者權限。這似乎沒有任何意義,因為 .k5login 在我的主目錄中,而不是在我的主目錄中root,所以在我看來,root使用者和sudo命令都不應受到比sudoers文件中存在的內容更進一步的限制。

但是,有了.k5login上面的文件,它們既sudo -i不能sudo su工作也不能像以前那樣工作。一旦.k5login文件被刪除,這個功能就恢復了,我又能恢復sudo了。

在日誌文件/var/log/auth.log中,此時報告的許多錯誤消息中有一條來自 sudo,說明:

[pam:sudo] krb5_kuserok failed for user cosmic_ossifrage

我是否錯過了定義 a.k5login應該做什麼的基本內容?這是預期的行為,如果是,為什麼?

根據Mark 的 評論,該.k5login文件必須滿足以下要求:

.k5login 文件每行必須包含一個主體,由使用者擁有,並且不能由組或其他人寫入(但必須由任何人讀取)。

根據 Kerberos原始碼中的註釋。

在這種情況下,.k5login除了使用者之外,任何人都無法讀取該文件Cosmic Ossifrage。儲存使用者主目錄的 NFS 掛載也強制執行 root 壓縮,甚至禁止 root 使用者訪問。通過使文件世界可讀,sudo返回到根功能。

(標記社區 wiki,因為答案最初來自評論。)

引用自:https://serverfault.com/questions/608928