使用 FQDN 而不是短主機名的 Sudo ldap
在我的工作場所,我們正在使用 sudo-ldap 從集中式商店通過網路提供 sudo 權限。我們根據使用者名加上他們正在執行 sudo 的主機名來執行此操作,例如:
sudoHost: foo1 sudoUser: user1
我希望能夠根據 FQDN 而不是短主機名匹配 sudoHost 屬性,以便我們可以將 DNS 子域用於不同的環境 - 例如
web1.dev.example.com
在開發環境和web1.test.example.com
測試環境中使用等等。但是,現在 sudoHost 僅匹配短主機名。即這有效:
sudoHost: foo1
但這不起作用:
sudoHost: foo1.dev.example.com
僅具有短主機名 (
foo1
) 的問題在於它匹配所有環境 -foo1.dev
、foo1.test
、foo1.staging
等。我希望它比這更細化。是否有可能讓 sudo-ldap 基於 FQDN(由返回
hostname -f
)而不是短主機名進行查詢?我用Google搜尋沒有成功。我在手冊頁或線上上找不到任何內容;談論sudoHost屬性時最接近的是:
須藤主機
主機名、IP 地址、IP 網路或主機網路組(以“+”為前綴)。特殊值 ALL 將匹配任何主機。
沒有提到 FQDN 與短主機名。在配置 ldap.conf 部分中也沒有提到 FQDN 與短主機名。
有問題的主機正在執行 Ubuntu 10.04。
鑑於 sudo 本身僅匹配
sudoHost
屬性提到的相同內容,我傾向於認為,如果沒有侵入性sudo
修補,您將無法獲得所需的內容。有一種可能性——您是將機器主機名設置為短名稱還是 FQDN?如果您正在執行前者,請嘗試後者並查看 sudo 是否切換為辨識 FQDN(不過,您可能會失去匹配短名稱的能力)。老實說,我更喜歡將我的主機名設置為 FQDN,我認為它在像你描述的那樣的多域設置中提供了更多的價值(順便說一下,我為你的所作所為鼓掌,我希望每個人都會做)。
如果我冒險(有根據地)猜測為什麼您不能(老實說,不應該)基於 FQDN(或者,更具體地說,由 提供的數據
hostname -f
)而不是主機名進行匹配,我會說這是因為該值 (hostname -f
) 是通過 NSS 獲得的——含義/etc/hosts
或 DNS (而 sudo 無法分辨是哪個)。所以你突然有一個安全漏洞,如果攻擊者可以操縱 DNS 結果,他就會得到你的主機限制 sudo 設置 pwned。作為一個不太有用但仍有潛在價值的選項(如果無法將 FQDN 設置為主機名),請切換到使用 IP 地址。如果您必須重新編號,這不太明顯並且有點維護痛苦,但是除非您手動編輯 LDAP 記錄,否則您的 sudo-config-maintenance-tool-thingy 至少可以通過解析名稱/地址和給你玩的名字和 sudo IP 地址。