Samba OpenLDAP su Etch: Configurazione autenticazioni UNIX
Configurazione delle autenticazioni Unix
A questo punto occorre configurare il nostro server affinchè veda gli utenti LDAP come normali utenti unix di sistema.
Installazione del demone name service caching daemon (nscd)
Poichè il nostro server LDAP sarà consultato in maniera continuativa, potrebbe essere una buona idea installare un servizio di cache per alcuni dati degli utenti. In questo modo i dati contenuti in cache saranno forniti senza eseguire un accesso al database LDAP, velocizzando di conseguenza i tempi di risposta del server. Il demone nscd (name service caching daemon) esegue esattamente questa cosa:
# apt-get install nscd
La configurazione di default è più che sufficiente per i nostri scopi.
Questo potrebbe inoltre essere un buon momento per riavviare il demone di Samba:
# /etc/init.d/samba restart
Installazione di libnss-ldap
Per prima cosa installeremo il pacchetto libnss-ldap, con il classico comando:
apt-get install libnss-ldap
Non preoccupatevi delle domande che vi vengono poste durante l'installazione. Non appena terminata, infatti, andremo a riconfigurare il pacchetto con il comando:
# dpkg-reconfigure libnss-ldap
Rispondete in questo modo alle domande che vi vengono poste dall'installer:
- Server LDAP: 127.0.0.1
- Distinguished Name (DN): dc=dominio,dc=local
- LDAP Version: 3
- E' richiesto l'utente per il database LDAP: no
- Privilegi speciali LDAP per root: sí
- Configurazione leggibile e scrivibile solo dal propietario: sí
- Account LDAP per root cn=admin,dc=dominio,dc=local
- Password LDAP di root: password
A questo punto bisogna modificare il file /etc/nsswitch.conf cambiando le tre linee
passwd: compat group: compat shadow: compat
con
passwd: compat ldap group: compat ldap shadow: compat ldap
Il contenuto del file dovrebbe essere il seguente:
/etc/nsswitch.conf
# /etc/nsswitch.conf ## Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat ldap group: compat ldap shadow: compat ldap hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
Per verificare la correttezza delle modifiche eseguite il comando
getent group
Il risultato dovrebbe elencarvi sia gli utenti locali unix sia gli utenti e i gruppi creati in LDAP.
A causa di un bug documentato (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=375077) e a cui il team di sviluppo di Debian ha fornito una soluzione parziale (è stato eliminato il problema, ma non i messaggi d'errore generati al boot) è possibile che al reboot compaiano messaggi di errore simili ai seguenti:
... udevd[1350]: nss_ldap: could not connect to any LDAP server as cn=admin,dc=home,dc=tld - Can't contact LDAP server udevd[1350]: nss_ldap: failed to bind to LDAP server ldap://127.0.0.1: Can't contact LDAP server udevd[1350]: nss_ldap: could not search LDAP server - Server is unavailable udevd[1350]: lookup_user: error resolving user 'tss': Illegal seek ...
Una possibile via per eludere il problema è quella di aggiungere a mano gli utenti di sistema mancanti:
addgroup --system tss addgroup --system kvm addgroup --system rdma addgroup --system fuse addgroup --system scanner addgroup --system nvram adduser --system tss
Installazione di libpam-ldap
L'installazione del pacchetto libpam-ldap viene eseguita allo stesso modo di quella precedente:
# apt-get install libpam-ldap # dpkg-reconfigure libpam-ldap
rispondendo in questo modo alle domande poste dall'installer:
- Server LDAP: 127.0.0.1
- Distinguished name (DN): dc=dominio,dc=local
- LDAP version: 3
- Make local root Database admin: sí
- Si richiede utente per database LDAP: no
- LDAP account for root cn=admin,dc=dominio,dc=local
- LDAP root password: password
- Local crypt to use when changing passwords: md5
Ora è necessario andare a modificare i quattro files che gestiscono la configurazione di pam per LDAP in modo che il loro contenuto sia:
/etc/pam.d/common-account
# #/etc/pam.d/common-account - authorization settings common to all services ## This file is included from other service-specific PAM config files, # and should contain a list of the authorization modules that define # the central access policy for use on the system. The default is to # only deny service to users whose accounts are expired in /etc/shadow. # #account required pam_unix.so account sufficient pam_ldap.so account required pam_unix.so try_first_pass
/etc/pam.d/common-auth
# # /etc/pam.d/common-auth - authentication settings common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of the authentication modules that define # the central authentication scheme for use on the system # (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the # traditional Unix authentication mechanisms. # #auth required pam_unix.so nullok_secure auth sufficient pam_ldap.so auth required pam_unix.so nullok_secure use_first_pass
/etc/pam.d/common-password
# /etc/pam.d/common-password - password-related modules common to all services ## This file is included from other service-specific PAM config files, # and should contain a list of modules that define the services to be #used to change user passwords. The default is pam_unix # The "nullok" option allows users to change an empty password, else # empty passwords are treated as locked accounts. # # (Add `md5' after the module name to enable MD5 passwords) # # The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in # login.defs. Also the "min" and "max" options enforce the length of the # new password. #password required pam_unix.so nullok obscure min=4 max=8 md5 # Alternate strength checking for password. Note that this # requires the libpam-cracklib package to be installed. # You will need to comment out the password line above and # uncomment the next two in order to use this. # (Replaces the `OBSCURE_CHECKS_ENAB', `CRACKLIB_DICTPATH') # # password required pam_cracklib.so retry=3 minlen=6 difok=3 # password required pam_unix.so use_authtok nullok md5 password sufficient pam_ldap.so password required pam_unix.so nullok obscure min=4 max=8 md5 use_first_pass
/etc/pam.d/common-session
session sufficient pam_ldap.so session required pam_unix.so
Assegnazione dei permessi agli utenti di dominio
Affinchè le directory dei profili e altre cosette funzionino senza intoppi è necessario assegnare i giusti permessi agli utenti di dominio:
net -S DEBIAN -U Administrator rpc rights grant "DOMAIN\Domain Admins" \SeMachineAccountPrivilege SePrintOperatorPrivilege SeAddUsersPrivilege \SeDiskOperatorPrivilege SeRemoteShutdownPrivilege
net -S DEBIAN -U Administrator rpc rights grant "DOMAIN\Print Operators" \SePrintOperatorPrivilege
dove DEBIAN è il nome Samba assegnato al server.