4 069
contributi
Riga 1 149: | Riga 1 149: | ||
</pre> | </pre> | ||
== 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: | |||
<pre> | |||
# apt-get install nscd | |||
</pre> | |||
La configurazione di default è più che sufficiente per i nostri scopi.<br/> | |||
Questo potrebbe inoltre essere un buon momento per riavviare il demone di Samba: | |||
<pre> | |||
# /etc/init.d/samba restart | |||
</pre> | |||
=== Installazione di libnss-ldap === | |||
Per prima cosa installeremo il pacchetto libnss-ldap, con il classico comando: | |||
<pre> | |||
# apt-get install libnss-ldap | |||
</pre> | |||
Non preoccupatevi delle domande che vi vengono poste durante l'installazione. Non appena terminata, infatti, andremo a riconfigurare il pacchetto con il comando: | |||
<pre> | |||
# dpkg-reconfigure libnss-ldap | |||
</pre> | |||
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 <tt>/etc/nsswitch.conf</tt> cambiando le tre linee | |||
<pre> | |||
passwd: compat | |||
group: compat | |||
shadow: compat | |||
</pre> | |||
con | |||
<pre> | |||
passwd: files ldap | |||
group: files ldap | |||
shadow: files ldap | |||
hosts: files dns ldap | |||
</pre> | |||
Il contenuto del file dovrebbe essere il seguente:<br/> | |||
'''/etc/nsswitch.conf''' | |||
<pre> | |||
# /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: files ldap | |||
group: files ldap | |||
shadow: files ldap | |||
hosts: files dns ldap | |||
hosts: files dns | |||
networks: files | |||
protocols: db files | |||
services: db files | |||
ethers: db files | |||
rpc: db files | |||
netgroup: nis | |||
</pre> | |||
Modificate inotre il file '''/etc/libnss-ldap.conf''', decommentando e modificando le righe seguenti e lasciando decommentate quelle di default: | |||
<pre> | |||
host 127.0.0.1 | |||
base dc=dominio,dc=local | |||
ldap_version 3 | |||
scope one | |||
pam_filter objectclass=posixaccount | |||
pam_login_attribute uid | |||
pam_member_attribute gid | |||
bind_policy soft | |||
pam_password md5 | |||
nss_base_passwd ou=Users,dc=dominio,dc=local?sub | |||
nss_base_passwd ou=Computers,dc=dominio,dc=local?sub | |||
nss_base_shadow ou=Users,dc=dominio,dc=local?sub | |||
nss_base_group ou=Groups,dc=dominio,dc=local?one | |||
</pre> | |||
<br/> | |||
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: | |||
<pre> | |||
... | |||
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 | |||
... | |||
</pre> | |||
Una possibile via per eludere il problema è quella di aggiungere a mano gli utenti di sistema mancanti: | |||
<pre> | |||
# addgroup --system tss | |||
# addgroup --system kvm | |||
# addgroup --system rdma | |||
# addgroup --system fuse | |||
# addgroup --system scanner | |||
# addgroup --system nvram | |||
# adduser --system tss | |||
</pre> | |||
=== Installazione di libpam-ldap === | |||
L'installazione del pacchetto libpam-ldap viene eseguita allo stesso modo di quella precedente: | |||
<pre> | |||
# apt-get install libpam-ldap | |||
# dpkg-reconfigure libpam-ldap | |||
</pre> | |||
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 | |||
Modificate come segue il file '''/etc/pam_ldap.conf''': | |||
<pre> | |||
bind_policy soft | |||
nss_base_passwd dc=dominio,dc=local?sub | |||
nss_base_shadow dc=dominio,dc=local?sub | |||
nss_base_group ou=Groups,dc=dominio,dc=local?one | |||
</pre> | |||
Ora è necessario andare a modificare i quattro files che gestiscono la configurazione di pam per LDAP in modo che il loro contenuto sia:<br/><br/> | |||
'''/etc/pam.d/common-account'''<br/> | |||
<pre> | |||
# | |||
#/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 | |||
</pre> | |||
<br/> | |||
'''/etc/pam.d/common-auth'''<br/> | |||
<pre> | |||
# | |||
# /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 [success=1 default=ignore] pam_unix.so | |||
#auth required pam_ldap.so use_first_pass | |||
auth sufficient pam_ldap.so | |||
auth required pam_unix.so nullok_secure use_first_pass | |||
</pre> | |||
<br/> | |||
'''/etc/pam.d/common-password'''<br/> | |||
<pre> | |||
# /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 md5 use_first_pass | |||
</pre> | |||
<br/> | |||
'''/etc/pam.d/common-session'''<br/> | |||
<pre> | |||
session sufficient pam_ldap.so | |||
session required pam_unix.so | |||
</pre> | |||
Infine registriamo la password di root di OpenLDAP con i comandi: | |||
<pre> | |||
echo -n "password" > /etc/libnss-ldap.secret | |||
echo -n "password" > /etc/pam_ldap.secret | |||
</pre> | |||
=== Test di funzionamento === | |||
Riavviate il vostro server e controllate eventuali messaggi di errore al boot. | |||
Una volta ripartito, con i comandi: | |||
<pre> | |||
getent passwd | |||
getent group | |||
</pre> | |||
dovremmo vedere elencati anche gli utenti e i gruppi di dominio OpenLDAP. | |||
Il comando: | |||
<pre> | |||
smbclient -L localhost -U Administrator | |||
</pre> | |||
dovrebbe, dopo aver richiesto la password di Administrator, mostrarci le condivisioni samba del nostro server. | |||
== Per approfondimenti == | == Per approfondimenti == | ||
[[Samba e OpenLDAP: creare un controller di dominio]]<br/> | [[Samba e OpenLDAP: creare un controller di dominio]]<br/> |