如果單純只是要設定 Samba 作為 AD Server, 這系列的前兩篇就足夠了.
後面的部份我也沒有設定過, 因為手上沒有可以加入網域的 windows client (隨機版的 windows 10 沒有加入網域的功能).
原本對 Samba 的印像還停留在很久前, 最多就是設定為 PDC BDC 之類的.
看了這系列文章, 加上正好公司進了台 Synology NAS, 因此找了台 linux 設定為 AD DC , 然後將 Synoloy NAS 加入網域並同步帳號, 來讓 NAS 的使用管理上更為方便.
基本上照文章來設定, 大致上不會遇到什麼問題, 很容易就設定好一台 AD DC.
在設定過程中, 會因為測試或管理的需求, 使用到很多平常不會用到的指令.
samba-ad-dc 管理上主要的指令是 samba-tool , 最常見的 user / group 的管理, 指令本身的 help 做的很完善, 大部份參數都很直覺, 一看就知道用途 , 例如:
- samba-tool user add duan #網域裡新增使用者 duan
- samba-tool user list
- samba-tool group add mygroup
- samba-tool group addmembers mygroup duan #使用者 duan 加入 mygroup 群組
- samba-tool user setpassword duan
這篇文章 有蠻完整的 samba-tool 指令介紹.
將 Synoloy NAS 和 AD DC 同步帳號
在控制台的 "網域/LDAP" 設定裡, 設定網域的部份- 勾選 "加入網域"
- 設定 "網域名稱" "DNS 伺服器" , 後者即設定為 samba AD DC 的 IP
- 勾選 "進階網域選項"
- 設定 "DC IP/FQDN" (DNS 伺服器) "網域的 Netbios 名稱" "網域 FQDN"
管理 AD DC 裡的使用者/群組資料
我要讓 AD DC 裡的使用者/群組資料同步的來源是 mysql , 因此自己寫 php script 先從 mysql 拉資料出來, 然後用 shell script 讀資料同步到 samba AD DC 裡.script 寫的不好, 就不在這裡獻醜了. 不過有兩個經驗可以分享:
1. 在用 samba-tool add user 時, 有參數可以直接設定 password .
但是平日太習慣一遇到問題就 google, 沒去查 samba-tool 本身的文件, 直接 google 網路上其他人的設定經驗, 結果大部份文件因為不是用 script 處理, 所以沒有需求要直接帶參數設定密碼, 結果繞了半天路才發現可以直接設定, 浪費了不少時間. samba-tool 在新增使用者時, 可以直接設定一些 attribute , 例如:
samba-tool user create $user $passwd --mail-address "$email" --department "$depart" --description "$name"
2. samba-tool 本身不提供 "修改" 使用者資訊的功能, 除了密碼以外.
也就是如果要修改使用者資訊, 要透過其他方式.
如果刪除使用者重新新增, 實際上會是不一樣的使用者 (ID). 這點從 Synology 同步過後的資料可以明顯看出.
如果在同步後刪除了某個使用者, 再新增名稱一樣的使用者, 從 Synology 同步後會發現該使用者的家目錄是一個新的位置, 原本的家目錄就只有 admin 可以看到了.
變更 AD DC 使用者資料的方法
要修改使用者資料 ( attribute , 例如 email ) , 要透過 samba 本身提供的 ldap 相關指令.使用上和 openldap 的指令很像但又有些差異, 所以一開始我誤以為是 openldap 的指令, 試了半天才發現錯了.
例如 openldap 有 ldapsearch , samba 是 ldbsearch, openldap 有 ldapmodify, samba 是 ldbmodify . 指令看起來很像, 但參數不一樣, 而且 samba 的 ldb series 是不直接吃 stdin.
要用 ldbmodify 來修改 attribute, 預設是要先編寫一個 ldif file , 裡面定義好要 modify/add/delete 的參數和指令, 然後再把 ldif file 餵給 ldbmodify 指令來執行
如果要在 script 下指令, 會類似這樣的 command
echo -e "dn: CN=duan,CN=Users,DC=piip,DC=pro\nchangetype: modify\nreplace: department\ndepartment: 資訊室\n" | ldbmodify -H ldap://www2 -k yes -b CN=duan,CN=Users,DC=piip,DC=pro
在執行 ldbmodify 之前, 要先用 kinit 登入 administrator 以取得權限
所以在用 samba-tool 新增使用者之前, 一定要小心, 否則修改起來前會很麻煩的.
最後貼上當初設定 AD DC 做的簡易筆記, 從一些訊息可以大略看出當初設定遇到的小問題, 像是 password 預設要求的 policy 太嚴格之類的.
http://weiwenku.net/d/152352
https://www.tecmint.com/install-samba4-active-directory-ubuntu/
1. sudo apt-get install samba krb5-user krb5-config winbind libpam-winbind libnss-winbind smbldap-tools ldb-tools
kerb5 server : www2.piip.pro
2. cd /etc/samba; mv smb.conf /tmp
3. samba-tool domain provision --use-rfc2307 --interactive
"ERROR(ldb): uncaught exception - 0000052D: Constraint violation - check_password_restrictions: the password does not meet the complexity criteria!" : password too weak , re-run command
4. systemctl start samba-ad-dc.service
"Failed to start samba-ad-dc.service: Unit samba-ad-dc.service is masked." : systemctl unmask samba-ad-dc , systemctl enable samba-ad-dc
5. verify
a. samba-tool domain level show
b. kinit administrator@PIIP.PRO
"kinit: Cannot find KDC for realm "PIIP.PRO" while getting initial credentials" : edit /etc/kerb5.conf
6 extra
a. sudo samba-tool domain passwordsettings set --complexity=off , no complex password needed
b. sudo samba-tool domain passwordsettings show , show policy of password
c. sudo samba-tool domain passwordsettings set --min-pwd-age=0
sudo samba-tool domain passwordsettings set --max-pwd-age=0
sudo samba-tool domain passwordsettings set --min-pwd-length=6
https://lists.samba.org/archive/samba/2013-August/174949.html
http://weiwenku.net/d/157028
1. sudo samba-tool user create duan // add samba user
2. samba-tool user list
3. samba-tool user delete [username]
4. samba-tool user setpassword [username]
5. samba-tool user enable/disable [username]
6. samba-tool gorup add/list/delete/listmembers/addmembers/removemembers
7. sudo systemctl disable winbind.service; sudo systemctl stop winbind.service ; sudo service samba-ad-dc restart
8. wbinfo -g
9. wbinfo -u
10. wbinfo -i [username]
https://linux.cn/article-8097-1.html
1. sudo apt-get install ntp ntpdate
a. http://www.pool.ntp.org/zone/asia , select ntp server
b. edit /etc/ntp.conf
change the pool server to "tw.pool.ntp.org"
add config under 'driftfile', "ntpsigndsocket /var/lib/samba/ntp_signd/"
add config under 'restrict source', "restrict default kod nomodify notrap nopeer mssntp"
c. sudo chown root:ntp /var/lib/samba/ntp_signd/
d. sudo chmod 750 /var/lib/samba/ntp_signd/
e. sudo systemctl restart ntp
f. verify
sudo netstat -tulpn | grep ntp
ntpq -p
g. force sync, ntpdate -qu www2
1 則留言:
張貼留言