Hanno detto:

Il computer non è una macchina intelligente che aiuta le persone stupide, anzi è una macchina stupida che funziona solo nelle mani delle persone intelligenti.

— Umberto Eco

ArchLinux Small Business Server (10) - File Server (3)

http://www.stenoweb.it/files/blog/archlogo.png Dopo aver installato tutti i pacchetti necessari cominciamo con la configurazione di OpenLDAP e la inizializzazione del suo database con gli utenti e gruppi di default richiesti da un dominio stile microsoft.

OpenLDAP server

Abbiamo già configurato in modo basilare OpenLDAP in un precedente articolo, ora rimettiamo mano alla configurazione per includere ciò di cui ha bisogno samba.

sudo nano /etc/openldap/slapd.conf

Includiamo gli schemi necessari all'inizio (nis e samba):
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/samba.schema

Impostiamo le regole di accesso :
 access to dn.base=""
                by self write
                by * auth

 access to attrs=userPassword,sambaNTPassword,sambaLMPassword
        by dn="cn=Manager,dc=mede,dc=it" write
        by anonymous auth
        by self write
        by * none

 access to *
                by * read
                by anonymous auth

Soffermiamoci su di un aspetto: il rootdn cn=Manager,dc=mede,dc=it ha comunque accesso ai dati in lettura scrittura anche se non specifico nulla, ma di particolare importanza è la regola di accesso access to attrs=userPassword,sambaNTPassword,sambaLMPassword che di fatto permette ai singoli utenti di cambiare la propria passaword direttamente da Windows.
Per ultima cosa definiamo gli indici di ricerca per velocizzare gli accessi all'albero ldap (eliminate le voci "index" già presenti e sostituitele con queste) :
# Indices
index objectClass eq
index cn pres,sub,eq
index sn pres,sub,eq
index uid pres,sub,eq
index displayName pres,sub,eq
index uidNumber eq
index gidNumber eq
index memberUID eq
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq
index default sub

Per attivare le nuove impostazioni riavviamo il servizio:
sudo /etc/rc.d/slapd restart

Il nostro albero è pronto.

LDAP Tools:

Gli LDAP tools sono necessari per gestire utenti e gruppi, per poterli utilizzare dobbiamo configurarli a dovere. Per prima cosa diamo un file di configurazione di base a Samba :

sudo nano /etc/samba/smb.conf

e inseriamo :
 [global]
        unix charset = LOCALE
        workgroup = MEDE
        netbios name = ARCHI
        server string = %h PDC (%v)
        interfaces = eth1, lo
        bind interfaces only = Yes
        enable privileges = yes
        guest account = guest
        domain logons = Yes
        domain master = yes
        preferred master = Yes
        os level = 65
        wins support = Yes
        security = user
        ldap suffix = dc=mede,dc=it
        ldap user suffix = ou=Users
        ldap machine suffix = ou=Computers
        ldap group suffix = ou=Groups
        ldap idmap suffix = ou=Idmap
        ldap admin dn = cn=Manager,dc=mede,dc=it
        idmap backend = ldap:ldap://archi.mede.it
        idmap uid = 10000-20000
        idmap gid = 10000-20000
        ldap passwd sync = Yes
       #ldap ssl = start tls
        ldap ssl = no

Come si può notare al momento (ricordo che il servizio samba non è stato ancora avviato) forniamo sono i dati essenziali, quali il dominio (workgroup = MEDE), il nome del server (netbios name = ARCHI), il suo ruolo di Domain Controller (domain logons = Yes) e i parametri LDAP. Sugli altri parametri consiglio una buona guida di Samba o le sue manpage :).
Come secondo passo prendiamo nota del SID del nostro server:
sudo net getlocalsid

dovrei ottenere qualcosa del tipo:
SID for domain ARCHI is: S-1-5-21-1491279793-2809991009-2777690449

Ora editiamo i file di configirazione dei smbldap-tools:
nano /etc/smbldap-tools/smbldap.conf

e scorrendo i parametri impostamoli così:
#Il SID ricavato con il comando precedente
SID="S-1-5-21-1491279793-2809991009-2777690449"
sambaDomain="MEDE"
suffix="dc=mede,dc=it"
hash_encrypt="MD5"
defaultMaxPasswordAge="180"
userSmbHome=""
userProfile=""
userHomeDrive="K:"
userScript="%U.bat"
mailDomain="mede.it"

Gli altri lasciamoli con i valori di default. Salviamo e editiamo il file:
sudo nano /etc/smbldap-tools/smbldap_bind.conf

e facciamo diventare così:
slaveDN="cn=Manager,dc=mede,dc=it"
slavePw="archimede"
masterDN="cn=Manager,dc=mede,dc=it"
masterPw="archimede"

Ricordo che "archimede" è la password che ho deciso per l'amministratore LDAP, la stessa che ho messo in /etc/openldap/slapd.conf in formato MD5.
Finito questo proteggiamo i file da occhi indiscreti:
sudo chmod 0644 /etc/smbldap-tools/smbldap.conf
sudo chmod 0600 /etc/smbldap-tools/smbldap_bind.conf

Ora non ci resta che dire anche a Samba la password da utilizzare per accedere a LDAP:
sudo smbpasswd -w archimede

se ottenete una risposta del tipo:
Setting stored password for "cn=Manager,dc=mede,dc=it" in secrets.tdb

Significa che fino ad ora tutto và per il verso giusto, e possiamo proseguire.

Popolare LDAP

Per il funzionamento corretto SAMBA ha bisogno di diversi gruppi predefiniti e 2 utenti: Administrator e guest. Inoltre, affinché si riesca ad aggiungere computer al dominio in modo automatico (da macchine Windows), deve esistere un utente con uid = 0 da utilizzare per questa operazione. Tale utente può essere un utente root (da aggiungere a mano) o lo stesso Administrator cambiandogli l'uid. Quest'ultima è la scelta presa in questa configurazione, in modo da avere un utente Administrator che è Administrator per Samba e root per il "dominio" UNIX.
Gli ldap tools forniscono un comodo comando per svolgere questa operazione: smbldap-populate. Lanciamolo così con questi parametri:

sudo /usr/local/bin/smbldap-populate -a Administrator -u 5001 -g 5001 -r 5001 -b guest -l 5000

al termine ci viene chiesta la password di "Administrator", mettiamo la stessa di root per non fare confusione. Dovrei vedere qualcosa del genere :
 Populating LDAP directory for domain MEDE (S-1-5-21-1491279793-2809991009-2777690449)
(using builtin directory structure)
 
adding new entry: dc=mede,dc=it
adding new entry: ou=Users,dc=mede,dc=it
adding new entry: ou=Groups,dc=mede,dc=it
adding new entry: ou=Computers,dc=mede,dc=it
adding new entry: ou=Idmap,dc=mede,dc=it
adding new entry: uid=Administrator,ou=Users,dc=mede,dc=it
adding new entry: uid=guest,ou=Users,dc=mede,dc=it
adding new entry: cn=Domain Admins,ou=Groups,dc=mede,dc=it
adding new entry: cn=Domain Users,ou=Groups,dc=mede,dc=it
adding new entry: cn=Domain Guests,ou=Groups,dc=mede,dc=it
adding new entry: cn=Domain Computers,ou=Groups,dc=mede,dc=it
adding new entry: cn=Administrators,ou=Groups,dc=mede,dc=it
adding new entry: cn=Account Operators,ou=Groups,dc=mede,dc=it
adding new entry: cn=Print Operators,ou=Groups,dc=mede,dc=it
adding new entry: cn=Backup Operators,ou=Groups,dc=mede,dc=it
adding new entry: cn=Replicators,ou=Groups,dc=mede,dc=it
adding new entry: sambaDomainName=MEDE,dc=mede,dc=it
 
Please provide a password for the domain Administrator:
Changing UNIX and samba passwords for Administrator
New password:
Retype new password: 

Come possiamo notare smbldap-populate ha creato utenti e gruppi predefiniti in una installazione di windows server.
Per vedere se tutto funziona proviamo a creare un utente user1:
sudo netuseradd -a -m user1

e diamogli una password :
sudo netpasswd user1

ora controlliamo se l'utente c'e':
sudo getent passwd

Dovrei ottenere la lista degli utenti tra cui :
Administrator:x:0:0:Netbios Domain Administrator:/home/Administrator:/bin/false
guest:x:5000:514:guest:/dev/null:/bin/false
user1:x:5001:513:System User:/home/user1:/bin/bash

per le opzioni complete digitiamo netuseradd senza parametri e diamo una occhiata. Nell'esempio il parametro -a crea sia l'utente unix che samba e -m crea la home (/home/user1) dell'utente.

Alla prossima con la pianificazione e impostazione delle condivisioni.

ciao

ho riscontrato un problema con la popolazione di ldap nel file di configurazione di smbldap.conf ho dovuto mettere:

masterLdap="localhost"
ldapTLS="0"

così funziona... o almeno, fino a questo punto :)

ora vado avanti con i test

Mi sembra strana stà cosa, quei parametri sono così di default quando installi il pacchetto smbldap-tools ...

Ciao,
sto seguendo la tua guida ma mi sono accorto che non mi vengono creati gli utenti.

sudo /usr/local/bin/smbldap-populate -a Administrator -u 5001 -g 5001 -r 5001 -b guest -l 5000
Populating LDAP directory for domain HOME (S-1-5-21-2847697185-2044666140-4213438116)
(using builtin directory structure)

adding new entry: dc=home,dc=it
adding new entry: ou=Users,dc=home,dc=it
adding new entry: ou=Groups,dc=home,dc=it
adding new entry: ou=Computers,dc=home,dc=it
adding new entry: ou=Idmap,dc=home,dc=it
adding new entry: uid=Administrator,ou=Users,dc=home,dc=it
adding new entry: uid=guest,ou=Users,dc=home,dc=it
adding new entry: cn=Domain Admins,ou=Groups,dc=home,dc=it
adding new entry: cn=Domain Users,ou=Groups,dc=home,dc=it
adding new entry: cn=Domain Guests,ou=Groups,dc=home,dc=it
adding new entry: cn=Domain Computers,ou=Groups,dc=home,dc=it
adding new entry: cn=Administrators,ou=Groups,dc=home,dc=it
adding new entry: cn=Account Operators,ou=Groups,dc=home,dc=it
adding new entry: cn=Print Operators,ou=Groups,dc=home,dc=it
adding new entry: cn=Backup Operators,ou=Groups,dc=home,dc=it
adding new entry: cn=Replicators,ou=Groups,dc=home,dc=it
adding new entry: sambaDomainName=HOME,dc=home,dc=it

Please provide a password for the domain Administrator:
Changing UNIX and samba passwords for Administrator

Ma poi dando sudo getent passwd non mi fa vedere gli utenti creati.

Se ridò il comando mi dice already exists...quindi se ho capito bene gli utenti vengono creati ma non quelli Unix.

Giusto?
Come posso risolvere?

Il post ha quasi due anni...
non so se è ancora valida la procedura descritta qui.