Unire un client Debian a un dominio Samba AD (NethServer)
Guida per collegare una macchina Debian a un dominio Active Directory
gestito da Samba AD su NethServer, usando realmd e sssd.
Prerequisiti
- Un dominio Samba AD funzionante (es. su NethServer)
- Un client Debian con rete funzionante
- Un utente con permessi di join sul dominio (es.
administrator) - Il DNS del client deve poter risolvere i record del dominio AD
1. Installazione dei pacchetti
sudo apt update
sudo apt install -y realmd sssd sssd-tools adcli samba-common-bin \
libnss-sss libpam-sss krb5-user packagekit oddjob oddjob-mkhomedir chrony
Durante l’installazione di krb5-user viene chiesto il realm Kerberos predefinito: va inserito in maiuscolo, ad esempio: AD.TUODOMINIO.LOCAL
Le due schermate successive (server Kerberos e server amministrativo) possono essere compilate con l’IP o l’hostname del controller di dominio, oppure lasciate vuote: realmd li scopre comunque via DNS.
2. Configurazione del DNS
Il client deve usare come server DNS uno che sappia risolvere i record del dominio AD (tipicamente il controller di dominio stesso, o un resolver che lo inoltra correttamente).
Verifica con:
nslookup -type=SRV _ldap._tcp.ad.tuodominio.local
Deve restituire un record simile a:
_ldap._tcp.ad.tuodominio.local service = 0 100 389 nome-dc.ad.tuodominio.local.
Se la richiesta fallisce con NXDOMAIN, il problema è quasi sempre il DNS: il resolver in uso non conosce il dominio e va corretto prima di proseguire (vedi la sezione successiva se usi Pi-hole o un altro resolver locale).
Nota: DNS locale con Pi-hole o altro resolver
Se in rete è presente un resolver locale (es. Pi-hole) che i client usano come DNS primario, va configurato un inoltro condizionale per il dominio AD verso il controller di dominio, altrimenti le richieste per quel dominio falliranno.
Su Pi-hole v6: Settings → DNS → Conditional forwarding, aggiungendo una riga con il range di rete, l’IP del controller di dominio e il nome del dominio AD.
3. Verifica e join al dominio
sudo realm discover ad.tuodominio.local
L’output deve indicare type: kerberos e server-software: active-directory. A quel punto:
sudo realm join -U administrator ad.tuodominio.local
Viene richiesta la password dell’utente di join. Al termine, verifica:
sudo realm list
Deve comparire configured: kerberos-member.
4. Configurazione di SSSD
Modifica /etc/sssd/sssd.conf per abilitare la creazione automatica delle home e, se necessario, decidere se usare nomi utente brevi o completi (vedi Associare un profilo locale Debian a un utente di dominio Samba AD per i dettagli).
sudo pam-auth-update --enable mkhomedir
Riavvia il servizio dopo ogni modifica:
sudo systemctl restart sssd
5. Verifica finale
id nomeutente@ad.tuodominio.local
Se restituisce UID, GID e gruppi, l’utente di dominio è correttamente risolto dal client. Il login può ora essere testato da terminale (su - nomeutente@ad.tuodominio.local) o dalla schermata grafica di accesso, scegliendo l’opzione per inserire un utente non elencato.
Permessi sudo per utenti di dominio
Per concedere sudo a un singolo utente di dominio:
echo "nomeutente@ad.tuodominio.local ALL=(ALL) ALL" | sudo tee /etc/sudoers.d/nomeutente-ad
sudo chmod 440 /etc/sudoers.d/nomeutente-ad
sudo visudo -c
Per un intero gruppo di dominio:
echo '%domain\ admins ALL=(ALL) ALL' | sudo tee /etc/sudoers.d/domain-admins
Risoluzione problemi comuni
realm: command not found: il binario sta in/usr/sbin, non sempre nelPATHutente. Usasudo realm ...oppure il percorso completo.No such realm found: problema DNS. Verifica che il client interroghi un resolver che conosce il dominio AD.- Errori Kerberos legati all’orologio: lo scarto tra client e controller di dominio non deve superare i 5 minuti. Verifica con
chronyc tracking.