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.
Argomenti nel blog
ArchLinux Small Business Server (10) - File Server (3)
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.