Samba OpenLDAP su Etch: Configurazione Samba

Samba e OpenLDAP: creare un controller di dominio con Debian Etch

Sommario

  1. Introduzione e prerequisiti
  2. Installazione del server LDAP
  3. Installazione di Samba
  4. Configurazione del server LDAP
  5. Configurazione dei client per LDAP
  6. Configurazione di Samba
  7. Configurazione delle autenticazioni UNIX
  8. Aggiungere i primi utenti di dominio
  9. Creazione di un semplice script da eseguire al login di Windows
  10. Test e connessione al dominio
  11. Unire un server Samba al domino
  12. Backup e restore del database LDAP
  13. Interfacce web alternative per OpenLDAP
  14. Comandi utili e consigli finali

Configurazione di Samba

Prima di iniziare a configurare Samba è necessario creare le directory nelle quali risiederanno le homes degli utenti, gli script di netlogon e i profili centralizzati (o profili roaming). Alcune di queste directory sono già state indicate nel file /etc/smbldap-tools/smbldap.conf, quindi è bene stare attenti a non commettere errori.

# mkdir /dominio
# mkdir /dominio/homes
# mkdir /dominio/profiles
# mkdir /dominio/netlogon

La configurazione di Samba si riduce a modificare il file /etc/samba/smb.conf. State attenti: il file è molto lungo ed è facile tralasciare qualcosa o inserire opzioni in conflitto tra loro. Per iniziare ci si basi sul file di esempio, funzionante e testato, riportato di seguito con gli opportuni commenti:

# mv /etc/samba/smb.conf /etc/samba/smb.conf.original
# touch /etc/samba/smb.conf
# nano /etc/samba/smb.conf

/etc/samba/smb.conf:

[global]
   ### Configurazione di base del server ###
       workgroup = DOMINIO
       netbios name = SERVER
       server string = DOMINOP PDC Server - Samba %v
       
   ### Imposto il server come controller di dominio ###
       os level = 65
       preferred master = yes
       local master = yes
       domain master = yes
       domain logons = yes

   ### Opzioni di connessione e sicurezza. Configurazione Wins ###
       security = user
       guest ok = no
       encrypt passwords = yes
       null passwords = no
       hosts allow = 127.0.0.1 10.0.0.0/255.0.0.0
       wins support = yes
       idmap uid = 10000-90000
       idmap gid = 10000-90000
       idmap backend = ldap:ldap://127.0.0.1
       name resolve order = wins lmhosts host bcast
       dns proxy = no
       time server = yes
       socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192

   ### Configuro Winbind
       winbind uid = 10000-90000
       winbind gid = 10000-90000
       winbind enum users = yes
       winbind enum groups = yes
       winbind separator = +
       password server = server_name
       winbind use default domain = Yes
       encrypt passwords = yes

   ### Impedisco gli errori getpeername dei client XP
       smb ports = 139

   ### Configurazione dei log ###
       log file = /var/log/samba/log.%m
       log level = 2
       max log size = 50
       
   ### Impostazione charset corretto ###
       hide unreadable = yes
       hide dot files = yes
       unix charset = ISO8859-1

       panic action = /usr/share/samba/panic-action %d

   ### Configurazione del supporto a LDAP ###
       passdb backend = ldapsam:ldap://127.0.0.1
       ldap suffix = dc=dominio,dc=local
       ldap machine suffix = ou=machines
       ldap user suffix = ou=users
       ldap group suffix = ou=groups
       ldap admin dn = cn=admin,dc=dominio,dc=local
       enable privileges = yes

   ### Permetto il cambio password da Windows
       ldap password sync = yes

   ### Profili mobili, directory home, script di logon ###
       logon home = \\%L\homes\%U\
       logon drive = H:
       logon path = \\%L\profiles\%U
       logon script = %U.bat OR netlogon.bat

   ### Script LDAP per gestione utenti e gruppi ###
       passwd program = /usr/sbin/smbldp-passwd %u
       passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*token*updated*
       add user script = /usr/sbin/smbldap-useradd -m "%u"
       ldap delete dn = Yes
       delete user script = /usr/sbin/smbldap-userdel "%u"
       add machine script = /usr/sbin/smbldap-useradd -w "%u"
       add group script = /usr/sbin/smbldap-groupadd -p "%g"
       delete group script = /usr/sbin/smbldap-groupdel "%g"
       add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
       delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
       set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"

   ### Sistema di stampa ###
       load printers = yes
       printcap name = /etc/printcap
       printing = cups
       printcap name = cups
      ; Se desidero che solo il gruppo indicato possa amministrare le stampanti
      ; NOTA: il gruppo deve essere creato nella struttura LDAP
      ;printer admin = @sambaadmins


   ### Condivisioni ###
   
### Percorso degli script di logon
[netlogon]
       comment = Network Logon Service
       path = /dominio/netlogon
       guest ok = no
       writable = no
       browseable = no
       share modes = no

### Percorso per i roaming profiles
[profiles]
       comment = Profili degli utenti
       path = /dominio/profiles
       writeable = yes
       browseable = no
       guest ok = no
       hide files = /desktop.ini/ntuser.ini/NTUSER.*/
       create mask = 0600
       directory mask = 0700
       csc policy = disable

### Condivisione stampanti
[printers]
       comment = Stampanti
       browseable = no
       path = /var/spool/samba
       printable = yes
       public = no
       writable = no
       create mode = 0700

### I client Windows si aspettano questa cartella come fonte per i drivers
[print$]
       comment = Drivers delle stampanti
       path = /var/lib/samba/printers
       browseable = yes
       read only = yes
       guest ok = no

### Home folders degli utenti
[homes]
      path = /home/users/%U
      comment = Home directory
      browseable = no
      writeable = yes
      valid users = %S
      read only = no
      guest ok = no
      inherit permissions = yes

### Directory condivisa
[pubblica]
      path = /home/pubblica
      read only = No
      create mask = 0660
      directory mask = 2770
      hide special files = yes
      hide files = /lost+found/
      acl group control = yes
      inherit acls = yes
      map acl inherit = yes
      inherit permissions = yes
      map archive = no 

# Per condividere l'unità CD del server
;[cdrom]
      ; comment = Samba server CD
      ; writable = no
      ; locking = no
      ; path = /media/cdrom0
      ; public = yes

     ; Per il mount - umount automatico del CD
     ; Perchè funzioni il file /etc/fstab deve contenere una
     ; voce: /dev/hdc0 /media/cdrom iso9660 defaults,noauto,ro,user 0 0 
     ;preexec = /bin/mount /cdrom
     ; postexec = /bin/umount /cdrom

Una volta che abbiamo il file di configurazione pronto, possiamo verificare che non contenga errori con il comando:

# testparm

Ora possiamo cambiare la password di amministratore e riavviare il servizio:

# smbpasswd -w password
# /etc/init.d/samba restart

Popolamento del database LDAP

Per un funzionamento corretto SAMBA ha bisogno di diversi gruppi predefiniti e 2 utenti: Administrator e nobody.
La tabella seguente riepiloga i gruppi e gli utenti di default di un dominio Windows:

  Nome - UID - Tipo

Domain Administrator - 500 - Utente
Domain Guest - 501 - Utente
Domain KRBTGT - 502 - Utente
Domain Admins - 512 - Gruppo
Domain Users - 513 - Gruppo
Domain Guests - 514 - Gruppo
Domain Computers - 515 - Gruppo
Domain Controllers - 516 - Gruppo
Domain Certificate Admins - 517 - Gruppo
Domain Schema Admins - 518 - Gruppo
Domain Enterprise Admins - 519 - Gruppo
Domain Policy Admins - 520 - Gruppo
Builtin Admins - 544 - Alias
Builtin users - 545 - Alias
Builtin Guests - 546 - Alias
Builtin Power Users - 547 - Alias
Builtin Account Operators - 548 - Alias
Builtin System Operators - 549 - Alias
Builtin Print Operators - 550 - Alias
Builtin Backup Operators - 551 - Alias
Builtin Replicator - 552 - Alias
Builtin RAS Servers - 553 - Alias

Inoltre, affinché si riesca ad aggiungere computer al dominio in modo automantico (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. Per creare i gruppi predefiniti e gli utenti utilizzati da Samba è possibile procedere in due modi.

1 - Utilizzo degli script forniti con smbldap-tools

La prima via consiste nel fare uso di alcuni script forniti con il pacchetto smbldap-tools che abbiamo già installato:

# smbldap-populate -k 0
# smbldap-useradd -a -m -c "Admin" Administrator
# smbldap-usermod -G "Domain Admins" Administrator
# smbldap-usermod -u 0 Administrator
# smbldap-populate -a Administrator -k 0

Il parametro "-k 0" imposta l'UID di Administrator a 0, facendolo di fatto coincidere con l'utente root. Gli altri comandi fanno sì che Administrator sia aggiunto al gruppo dei Domain Admins. Durante l'esecuzione del comando vengono riepilogati i record aggiunti e vi verrà chiesto di cambiare (se volete) la password di Administrator; potete tranquillamente riscrivere la stessa password già impostata precedentemente.
Per verificare lo stato del database LDAP e i record aggiunti potete usare i comandi:

# ldapsearch -x | less

e:

# ldapsearch -x uid=Administrator

Su alcuni howto ho trovato suggerito, a questo punto, di cambiare ancora la password di Administrator con il comando:

# smbldap-passwd Administrator

Sebbene non mi sia chiaro il motivo, l'ho fatto, reinserendo nuovamente la stessa password utilizzata fino a questo punto della guida. Questo sarà anche il comando che dovrà essere normalmente utilizzato per la gestione delle password.

2 - Utilizzo della GUI phpLDAPadmin

Il secondo metodo prevede l'utilizzo della GUI di phpLDAPadmin. Per operazioni così lunghe e ripetitive come il popolamento iniziale di un database LDAP è un metodo che sconsiglio, ma può essere utile a questo punto osservare il funzionamento di questa GUI.
Innanzitutto bisogna collegarci con un browser al nostro server:

https://10.0.0.11/phpldapadmin

Cliccate sul link di login e inserite le seguenti informazioni:

Login DN: cn=admin,dc=dominio,dc=local
Password: password



Quindi, nella sezione di sinistra, espandete la radice LDAP relativa al vostro dominio. Cliccate sull'unità organizzativa che vi interessa (ou=Users oppure ou=Groups) e selezionate la voce Create ner entry here".

Selezionate il template corretto (Samba3 Account se volete creare un nuovo utente e Samba3 Group Mapping se volete creare un nuovo gruppo) e immettete le voci nei campi di definizione del template stesso.

  ATTENZIONE
A differenza della procedura di creazione utenti con i smbldap-tools, che essendo interfacciati con gli strumenti linux di gestione utenti coprivano automaticamente ogni aspetto della creazione di nuove entry, utilizzando phpldapadmin dovrete creare a mano la home directory del nuovo utente, dato che l'interfaccia non lo farà per voi
Per questo motivo solitamente consiglio di utilizzare i smbldap-tools per la creazione di nuovi gruppi e nuovi utenti e di utilizzare phpldapadmin per modifiche a utenti e gruppi già esistenti, quando navigare da console tra le proprietà di ogni entry può diventare difficoltoso.

Ricordatevi, al termine del processo di creazione di gruppi e utenti, di cambiare la password di Administrator come indicato nel paragrafo precedente:

smbldap-passwd Administrator