接著上一篇【 Synology AD 應用 (1) : 安裝Directory Server套件 】,本文來解說 Linux 如果在登入時用 Synology AD 驗証,還有 Samba 也靠 AD 驗証。
安裝套件
先安裝一些必需的套件
|
1 2 3 |
sudo apt update sudo apt install -y samba winbind libnss-winbind libpam-winbind krb5-user ldap-utils vim \ ldap-utils openssh-server smbclient |
安裝 krb5-user 時會問預設 Realm,填 HOMMY.LOCAL,與在 Synology AD 設的一樣。
編輯網路設定
修改nameserver
由於會改到resolv.conf,但這個檔其實會被 netmanager 或其它東西改到,所以我們用 netplan 將其固定住,而不是硬改的。編輯 /etc/netplan/*.yaml(檔名依實際為準,例如 01-netcfg.yaml):
|
1 2 3 4 5 6 7 8 9 10 11 12 |
network: version: 2 ethernets: ens33: dhcp4: yes dhcp4-overrides: use-dns: false # 不使用 DHCP 提供的 DNS nameservers: addresses: - 192.168.2.220 # Synology AD DNS search: - hommy.local |
其中 ens33 是你實際機器上的網卡介面,依實際修改。 nameserver 的 addresses 與 search,也是要指向你的 Synology AD IP 以及網域的名稱。
套用 netplay-apply
|
1 |
sudo netplan apply |
修改 hostname
編輯 /etc/hostname,修改 hostname,不要超過15個字。並將 hostname 加入 hosts
|
1 |
sudo hostnamectl set-hostname ubuntu-vm.hommy.local |
然後下達下面內容
|
1 |
echo "127.0.0.1 ubuntu-vm.hommy.local ubuntu-vm" >> /etc/hosts |
關閉 NetworkManager
|
1 2 3 4 5 |
sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager sudo systemctl mask NetworkManager sudo systemctl disable NetworkManager-wait-online.service sudo systemctl stop NetworkManager-wait-online.service |
修改完後,重新開機, IP 可能會變,從 GUI 確定後再從 ssh 登入。
設定 Kerberos
編輯 /etc/krb5.conf
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[libdefaults] default_realm = HOMMY.LOCAL dns_lookup_realm = false dns_lookup_kdc = true rdns = false [realms] HOMMY.LOCAL = { kdc = 192.168.2.220 admin_server = 192.168.2.220 } [domain_realm] .hommy.local = HOMMY.LOCAL hommy.local = HOMMY.LOCAL |
測試 Kerberos
|
1 2 |
kinit administrator@HOMMY.LOCAL klist |
輸出大概像
|
1 2 3 4 5 6 7 8 9 |
root@ubuntu-vm:~# kinit administrator@HOMMY.LOCAL Password for administrator@HOMMY.LOCAL: root@ubuntu-vm:~# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@HOMMY.LOCAL Valid starting Expires Service principal 2025-11-30T12:50:50 2025-11-30T22:50:50 krbtgt/HOMMY.LOCAL@HOMMY.LOCAL renew until 2025-12-01T12:50:40 |
設定 Samba 為 AD 成員伺服器
先下命令
|
1 |
echo "192.168.2.220 hommy.local" >> /etc/hosts |
編輯 /etc/samba/smb.conf
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
[global] workgroup = HOMMY realm = HOMMY.LOCAL security = ADS server role = member server # Kerberos / keytab kerberos method = secrets and keytab dedicated keytab file = /etc/krb5.keytab # Winbind 整合 AD 帳號 winbind use default domain = yes winbind enum users = yes winbind enum groups = yes winbind refresh tickets = yes # AD 使用者的預設 home / shell template homedir = /home/%U@%D template shell = /bin/bash # SID -> UID/GID 映射 idmap config * : backend = tdb idmap config * : range = 10000-19999 idmap config HOMMY : backend = rid idmap config HOMMY : range = 20000-999999 # 僅允許 NTLMv2 ntlm auth = ntlmv2-only lanman auth = no map to guest = never [share] path = /srv/share browseable = yes read only = no guest ok = no # 使用 AD 群組「domain users」控制存取 valid users = @"domain users" [homes] comment = Home Directories browseable = no valid users = @"HOMMY\domain users" |
加入 AD 網域
|
1 2 3 4 |
sudo systemctl restart smbd nmbd winbind sudo net ads join -U administrator sudo net ads testjoin |
應顯示 Join is OK。
編輯 NSS
編輯 /etc/nsswitch.conf,確定 winbind 有在 passwd / group 下
|
1 2 |
passwd: files systemd winbind group: files systemd winbind |
重啟 winbind
|
1 |
systemctl restart winbind |
確定以下3個指令都能正常執行
|
1 2 3 |
wbinfo -u | head wbinfo -g | head getent passwd user1 |
SSH 登入與建立 $HOME
先執行
|
1 |
sudo pam-auth-update |
並確定 【Create home directory on login】有被勾選,然後再重啟 winbind
|
1 |
sudo systemctl restart winbind |
接著從 teraterm 以 user1 登入,看看是否可以成功,並建立自己的 home 目錄。



