星期一, 6月 20, 2022

以 AD 管理 Linux 的帳密(以 CentOS 7 為例)

過去筆者手下眾多 Linux 都是用本機帳號維運,每到稽核規定的密碼修改週期就是一次不小的工程。既然公司是以 AD 為主,不如來研究看看如何讓 Linux 也加入 AD Domain,並且授權為 Linux 上的管理者。

在 CentOS 7,要先安裝一些套件: 

sudo yum install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python

然後是決定要加入的網域與帳號,我的帳號是 david_chou,要加入 dev.gss 這個網域。

sudo realm join --user=david_chou dev.gss

打完正確的密碼後,可以用 realm list 確認一下,像我的結果會是這樣:













上圖也可以在提示符號看出,hostname 是 QAC-ELASTALERT,這待會兒要用到。接下來我們要先修正幾個問題,細節在,懶人請直接跟我來。sudo vi /etc/sssd/sssd.conf 編輯一個設定檔:
















存檔後重啟服務 systemctl restart sssd 就會生效。換成網域帳號登入看看:











因為我們有設 default_domain_suffix 的關係,帳號只要 david_chou 而不用 david_chou@dev.gss 這麼長。最後記得再用舊的本機管理權限帳號登入,授權給網域帳號 sudo usermod -aG wheel david_chou@dev.gss,以後就可以只靠網域帳號做事了。

附帶一提,當網域密碼變更後,可能因快取的關係導致新密碼不能登入,可採取以下步驟:

  • login (old password)
  • sudo sss_cache -E (old password)
  • systemctl restart sssd (old password)
  • logout
  • login (new password)
[2022/12/22] 在 RockyLinux 9 的經驗,需要的套件有一個名稱變了,policycoreutils-python 要改成 policycoreutils-python-utils。

[2023/06/13] 經同事認證,sudo realm join --user=... 看起來很正常,其實會把該網域下所有的使用者都列進去可登入名單了,所以後面記得「用另一個管理帳號」 sudo realm deny --all; sudo realm permit david_chou@dev.gss 才不會過度授權,也不會把自己關在外面。