= PAM e winbind = '''NOTA BENE: In Debian 9 e 10 installando Samba 4 e Winbind l'integrazione in PAM è DI DEFAULT. Potete controllare se in effetti è impostata di default oppure no usando il comando {{{pam-auth-update}}}.''' '''Questo documento è obsoleto!''' Lo scopo di questa configurazione e` permettere a un utente del dominio Active Directory di fare login in shell su una macchina Linux (che sia lo stesso DC o un qualsiasi server membro del dominio). Questa configurazione e` una mezza porcata, sappiatelo. In questa configurazione uso Samba 4.2 scaricato da Sernet installata su una Debian 7. Probabilmente se usassi Samba 4.1 di Debian (magari su un member server) la cosa sarebbe piu` semplice, perche` c'e` una migliore integrazione dei vari componenti in Debian rispetto ai pacchetti Samba di Sernet. Tuttavia, questa era la configurazione che mi serviva e quindi procediamo con questa. L'installazione della integrazione di PAM in questo caso e` fatta sulla macchina stessa che ospita il Domain Contoller Samba4. == Installazione == * Installare i pacchetti {{{libnss-winbind libpam-winbind}}} * Prima di tutto, assicurarsi di avere in {{{/etc/nsswitch.conf}}} questa configurazione: {{{ passwd: compat winbind group: compat winbind }}} * Poi, creare il file {{{/usr/share/pam-configs/winbind}}} (o un altro nome a vostra scelta). Considerate che questo file e` specifico per Debian. E` un modo comodo per configurare PAM in Debian, ma non va bene su altre distribuzioni. Il contenuto del file e` questo: {{{ Name: Winbind NT/Active Directory authentication Default: yes Priority: 192 Auth-Type: Primary Auth: [success=end default=ignore] pam_winbind.so try_first_pass Auth-Initial: [success=end default=ignore] pam_winbind.so Account-Type: Primary Account: [success=end new_authtok_reqd=done default=ignore] pam_winbind.so Password-Type: Primary Password: [success=end default=ignore] pam_winbind.so use_authtok try_first_pass Password-Initial: [success=end default=ignore] pam_winbind.so Session-Type: Additional Session: optional pam_winbind.so }}} * Poi, modificare {{{smb.conf}}} aggiungendo queste righe (l'unica VERAMENTE necessaria e` "template shell"): {{{ # login su Linux via Samba template shell = /bin/bash template homedir = /home/%D/%U winbind enum groups = yes winbind enum users = yes }}} * Eseguire il comando {{{pam-auth-update}}} e nel menu` abilitare l'autenticazione con il file che abbiamo appena creato (winbind in questo caso) * Per finire, riavviare Samba == Test == Ora si puo` provare a fare login via ssh con un utente del dominio, cosi`: {{{ ssh dominio\\utente@localhost }}} Dovrebbe essere possibile accedere in ssh correttamente, pero` la home directory (/home/NOME_DOMINIO/utente) non esiste e non viene automaticamente creata, quindi occorre crearla manualmente e dargli i permessi giusti. Forse in futuro faro` una configurazione per auto-crearla, per ora non mi serve. == Anomalie == Ci sono alcune anomalie che non mi tornano. * Prima di tutto, in questa configurazione dovrebbe essere obbligatorio usare la sintassi dominio\\utente per il login, e invece e` possibile anche fare login come "utente" senza specificare il dominio. Dato che in Samba l'opzione {{{ winbind use default domain}}} e` impostata a "no", questo non dovrebbe succedere. * Poi, usando il comando {{{getent passwd}}} dovrei poter vedere elencati tutti gli utenti di Samba oltre a quelli di Linux, ma questo non succede, nonostante in samba sia impostata l'opzione {{{winbind enum users = yes}}}. Lo stesso vale per {{{getent group}}}.