Samba e OpenLDAP: creare un controller di dominio con Debian Squeeze: differenze tra le versioni

Riga 793: Riga 793:
In tal modo viene avviato visualizzando varie informazioni di debug a video.
In tal modo viene avviato visualizzando varie informazioni di debug a video.


== 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 <tt>/etc/smbldap-tools/smbldap.conf</tt>, quindi è bene stare attenti a non commettere errori.<br/>
<pre>
# mkdir /dominio
# mkdir /dominio/homes
# mkdir /dominio/profiles
# mkdir /dominio/netlogon
# mkdir /dominio/pubblica
</pre>
La configurazione di Samba si riduce a modificare il file <tt>/etc/samba/smb.conf</tt>. 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:
<pre>
# mv /etc/samba/smb.conf /etc/samba/smb.conf.original
# touch /etc/samba/smb.conf
# nano /etc/samba/smb.conf
</pre>
'''/etc/samba/smb.conf''':
<pre>
[global]
  ### Configurazione di base del server ###
      workgroup = DOMINIO
      netbios name = SERVER
      realm = dominio.local
      server string = server - dominio PDC server - Samba %v
      case sensitive = No
      username map = /etc/samba/usermap
  ### Imposto il server come controller di dominio ###
      os level = 255
      preferred master = yes
      local master = yes
      domain master = yes
      domain logons = yes
      admin users = Administrator root @"Domain Admins"
  ### Opzioni di connessione e sicurezza. Configurazione Wins ###
      security = user
      guest ok = no
      map to guest = Bad User
      encrypt passwords = yes
      null passwords = no
      hosts allow = 127.0.0.1 10.0.0.0/255.255.255.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
      keepalive = 20
      preserve case = yes
      short preserve case = yes
  ### Configuro Winbind
      winbind uid = 10000-90000
      winbind gid = 10000-90000
      winbind enum users = yes
      winbind enum groups = yes
      winbind separator = +
      password server = 10.0.0.11
      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
      dos charset = UTF-8
      display charset = UTF-8
      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=Computers
      ldap user suffix = ou=Users
      ldap group suffix = ou=Groups
      ldap idmap suffix = ou=Idmap
      ldap admin dn = cn=admin,dc=dominio,dc=local
      enable privileges = yes
      ldap delete dn = Yes
        ldap ssl = no
  ### Permetto il cambio password da Windows
  ### Nota: con questa configurazione gli utenti non potranno
  ### effettuare il login sulla shell del server, ma solo
  ### dai client XP
      ldap password sync = yes
      pam password change = Yes
      unix password sync = No
  ### Profili mobili, directory home, script di logon ###
      logon home = \\%L\homes\%U\
      logon drive = H:
      logon path = \\%L\profiles\%U
      logon script = logon.bat
  ### Script LDAP per gestione utenti e gruppi ###
      passwd program = /usr/sbin/smbldap-passwd %u
      passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authen$
      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"
  ### Comando per loggare login e logoff (Legge amministratore di sistema)
      root preexec = /etc/samba/log_access_login.bash "%L" "%U" "%G" "%H" "%u"$
      root postexec = /etc/samba/log_access_login.bash "%L" "%U" "%G" "%H" "%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 = yes
      browseable = no
      share modes = no
      admin users = @"Domain Admins"
### 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
      profile acls = Yes
### 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 = /dominio/homes/%U
      comment = Home directory
      browseable = no
      writeable = yes
      valid users = %S
      read only = no
      guest ok = no
      inherit permissions = yes
      admin users = %u
      write list = %u
      read list = %u
      create mask = 0700
      directory mask = 0700
### Directory Pubblica
[pubblica]
      path = /dominio/pubblica
      comment = Directory 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
</pre>
Una volta che abbiamo il file di configurazione pronto, possiamo verificare che non contenga errori con il comando:
<pre>
# testparm
</pre>
Modifichiamo anche il file <code>/etc/samba/usermap</code>:
<pre>
root = DOMINIO.LOCAL\root/admin
Administrator = DOMINIO.LOCAL\Administrator/admin
</pre>
e scarichiamo lo script <code>log_access_login.bash</code> che ci servirà per loggare gli accessi al dominio:
<pre>
# wget http://www.pepinet.com/download/samba/log_access_login.bash -P /etc/samba
# chmod 700 /etc/samba/log_access_login.bash
</pre>
Sistemiamo ora le ultime directory necessarie:
<pre>
# mkdir -p /var/log/samba/login-logoff
# rm -rf /etc/samba/*tdb
# rm -rf /var/lib/samba/*tdb
# rm -rf /var/lib/samba/*dat
# rm -f /var/log/samba/*
</pre>
facciamo memorizzare a samba la password dell'utente ldap da usare per la connessione:
<pre>
# smbpasswd -w password
</pre>
e riavviamo il servizio:
<pre>
# /etc/init.d/samba restart
</pre>
Adesso che abbiamo un PDC funzionante, dobbiamo prendere nota del nuovo SID:
<pre>
# net getlocalsid DOMINIO
</pre>
Quindi andiamo a modificare il file <code>/etc/smbldap-tools/smbldap.conf</code> inserendo il SID appena ottenuto, controllando nel frattempo gli indirizzi dei 2 server LDAP in modo che coincidano con il server locale (127.0.0.1).
<pre>
SID="S-1-5-21-2318037123-1631426476-2439636316"
sambaDomain="DOMINIO"
realm="dominio.local"
slaveLDAP="127.0.0.1"
slavePort="389"
masterLDAP="127.0.0.1"
masterPort="389"
</pre>
Il resto del file va lasciato invariato.
== Per approfondimenti ==
== Per approfondimenti ==
[[Samba e OpenLDAP: creare un controller di dominio]]<br/>
[[Samba e OpenLDAP: creare un controller di dominio]]<br/>