Associare un profilo locale Debian a un utente di dominio Samba AD
Guida per collegare la home di un utente locale già esistente su un client Debian all’identità di un utente di dominio, dopo aver completato il join descritto nella guida Unire un client Debian a un dominio Samba AD (NethServer). Include anche il comportamento di default con un utente di dominio nuovo che accede per la prima volta.
Scenario
Un utente locale (es. mario, UID 1000) ha già un profilo funzionante
sul client, con i suoi file e le sue configurazioni. Dopo il join al
dominio, si vuole che l’utente acceda con le credenziali di dominio
continuando a usare lo stesso profilo.
Il problema della collisione dei nomi
Se l’utente locale e l’utente di dominio hanno lo stesso nome breve,
con l’impostazione use_fully_qualified_names = False in SSSD il nome
breve viene risolto per primo dall’utente locale (che ha priorità nella
catena NSS), mascherando l’utente di dominio.
Per evitare ambiguità, quando il nome coincide conviene usare i nomi
completi, modificando /etc/sssd/sssd.conf:
[domain/ad.tuodominio.local]
use_fully_qualified_names = True
fallback_homedir = /home/%u
sudo systemctl restart sssd
Con questa impostazione l’utente di dominio viene identificato come
mario@ad.tuodominio.local, distinto dall’utente locale mario.
1. Disattivare l’utente locale (senza cancellarlo)
sudo usermod -L mario
Questo blocca la password locale senza eliminare l’account né i file, mantenendo una via di rientro in caso di problemi.
2. Collegare la home esistente all’utente di dominio
Si usa sss_override per associare la home locale all’utente di dominio,
senza spostare né rinominare la cartella:
sudo sss_override user-add mario@ad.tuodominio.local -h /home/mario
sudo systemctl restart sssd
Verifica che l’override sia attivo:
getent passwd mario@ad.tuodominio.local
Il campo home deve risultare /home/mario.
3. Assegnare i file al nuovo UID
L’UID dell’utente di dominio è diverso da quello locale, quindi i file vanno riassegnati. Questo passaggio va fatto da un terminale testuale (TTY), con la sessione grafica dell’utente chiusa, per evitare che la sessione in corso perda l’accesso ai propri file.
sudo chown -R mario@ad.tuodominio.local:"domain users@ad.tuodominio.local" /home/mario
In alternativa, usando gli ID numerici (ottenibili con id mario@ad.tuodominio.local):
sudo chown -R UID:GID /home/mario
4. Riassegnare i gruppi locali
L’utente di dominio non eredita automaticamente i gruppi locali dell’utente originale (audio, video, stampa, rete, ecc.). Vanno aggiunti esplicitamente:
for g in audio video plugdev netdev scanner lpadmin cdrom; do
sudo gpasswd -a 'mario@ad.tuodominio.local' $g
done
Verifica con:
getent group audio video netdev lpadmin
5. Permessi sudo
Se l’utente locale aveva sudo, va riassegnato esplicitamente a quello di dominio (vedi la guida al join per i dettagli):
echo "mario@ad.tuodominio.local ALL=(ALL) ALL" | sudo tee /etc/sudoers.d/mario-ad
sudo chmod 440 /etc/sudoers.d/mario-ad
6. Test del login
Prima di un riavvio completo, è utile testare l’accesso da un secondo terminale:
su - mario@ad.tuodominio.local
Se risponde senza errori di permessi sulla home, si può procedere con
il login grafico, scegliendo l’opzione per inserire un utente non
elencato e digitando il nome completo (mario@ad.tuodominio.local).
Il portachiavi (keyring) resta sulla vecchia password
Al primo login grafico con le credenziali di dominio può comparire la richiesta “Authentication required — the password you use to log in to your computer no longer matches that of your login keyring”. È normale: il portachiavi di GNOME era cifrato con la vecchia password locale.
Per sbloccarlo basta inserire la vecchia password locale nel campo proposto. Per evitare che la richiesta si ripresenti a ogni accesso, si può poi allineare la password del portachiavi a quella di dominio tramite l’applicazione “Password e chiavi” (Seahorse): tasto destro sul portachiavi “Login” → Cambia password, inserendo la vecchia password locale e impostando quella di dominio come nuova.
Se la vecchia password non è più disponibile, il portachiavi può essere rigenerato (con perdita delle credenziali salvate al suo interno):
mv ~/.local/share/keyrings ~/.local/share/keyrings.bak
Comportamento con un utente di dominio nuovo (primo accesso)
Quando un utente di dominio senza un profilo locale preesistente
effettua il primo accesso al client, non serve alcuna associazione
manuale: grazie a pam_mkhomedir (abilitato nella guida al join con
pam-auth-update --enable mkhomedir), SSSD/PAM crea automaticamente una
nuova home vuota al primo login, seguendo il percorso indicato da
fallback_homedir in sssd.conf (tipicamente /home/%u, cioè
/home/nomeutente@ad.tuodominio.local con i nomi completi attivi, o
/home/nomeutente con i nomi brevi).
La nuova home viene popolata con gli scheletri standard di /etc/skel,
esattamente come per un utente locale creato con adduser. Non c’è
quindi nessun collegamento automatico con profili locali eventualmente
già presenti con lo stesso nome: l’associazione a una home esistente,
come descritto nei passaggi precedenti, va sempre fatta manualmente
caso per caso.
Via di rientro
In caso di problemi, è possibile tornare all’utente locale originale:
sudo usermod -U mario
sudo chown -R 1000:1000 /home/mario