Samba

De Cacauet Wiki
Salta a la navegació Salta a la cerca

Samba és la implementació del protocol SMB (també conegut com a CIFS i creat per IBM i Microsoft) per gestió de directori i recursos compartits.

És una peça clau per integrar recursos Windows i Linux en la mateixa xarxa.

S'ha implementat com a enginyeria inversa de la implementació en Windows.



Introducció

  • DC: Domain Controller
    • PDC: Primary DC
    • BDC: Backup DC
  • NetBIOS
    • MB: Master Browser
      • LMB: Local MB
      • DMB: Domain MB
  • Usuari guest (sense pass)
  • Daemons:
    • smbd (servidor de recursos compartits)
    • nmbd (servidor de noms NetBIOS)

Protocol pensat per autoexploració i autonegociació de master/slave. Produeix molts broadcast i omple la xarxa de paquets (pot arribar a provocar molt problemes). Un correcte ajustament del servidor NetBIOS redueix dràsticament aquest problema.


Quick Reference

Paquets a instal·lar:

  • Samba
  • smbclient

Arxius de conf:

/etc/samba/smbd.conf

Inicialment disposem de l'usuari guest i sense contrasenya (mapejat en nobody).

Comandes Linux útils:

  • smbclient -L //maquina/ -U usuari
    $ smbclient -L //server/ -U guest -N
  • smbtree [-N]
  • nmblookup <nom_netbios_maquina> (retorna IP)
  • nmblookup -A localhost
  • per buscar master browsers:
    $ nmblookup -M -
  • ...

Comandes Windows útils:

  • net use


Samba Server

Partirem d'un Ubuntu Server LTS i anirem modificant la configuració del /etc/samba/smbd.conf (no l'esborreu sencer, anirem modificant i afegint parts).

Per activar la màquina com a samba server cal fer:

[global]
   server role = standalone server    ; podria ser domain controller tambe
   security = user
   domain logons = yes                ; habilita autenticació de logons de clients
   preferred master = yes
   domain master = yes                ; yes=PDC , no=BDC
   wins support = yes                 ; resolució de noms NetBIOS
   time server = yes
   passdb backend = tdbsam            ; despres hi posarem ldapsam! (de moment es BD interna)
[netlogon]
   comment = Enricus Logon Service
   path = /home/samba/netlogon
   guest ok = no
   read only = yes

Per poder testejar correctament tots els canvis que farem, aconsello deshabilitar l'accés de convidat. Per tant, modifiquem /etc/samba/smbd.conf i busquem tots els guest ok i els posem a "no" (particularment en el netlogon):

guest ok = no


Comptes Samba i Unix

Els comptes de Samba estan lligats a Unix. És a dir, per poder tenir un usuari Samba cal necessàriament que hi hagi una entrada a /etc/passwd. Si volem, podem deshabilitar el compte Unix i mantenir el funcionament del client Samba.

La BBDD de contrasenyes Samba és independent de la de Unix. Per activar un compte Samba cal crear l'usuari i donar-li una contrasenya Samba:

# adduser lola
# smbpasswd -a lola

Si no ho fem, no podrem entrar com a l'usuari.

Sincronitzar passwords Samba i Unix

Si volem sincronitzar les contrasenyes dels comptes Unix --> Samba (oju, només en aquest sentit) cal instal·lar libpam-smbpass:

# apt-get install libpam-smbpass

I configurar (normalment ja ve per defecte):

[global]
  ...
  unix password sync = yes
  passwd program = /usr/bin/passwd %u
  passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
  pam password change = yes


Samba com a PDC

Per tal d'habilitar Samba com a servidor de domini per a clients Windows caldrà aplicar alguns ajustos.

Primer, mapejar el "Domain Admins" al grup de l'usuari principal de la nostra màquina. OJU: per sysadmin s'entén el 1r usuari de la màquina amb permisos de sudo, habitualment amb UID=1000 (en Windows és el Administrador amb UID=512). Aquest serà l'usuari que utilitzarem per donar d'alta les màquines Windows al domini.

# net groupmap add ntgroup="Domain Admins" unixgroup=sysadmin rid=512 type=d

I donar a aquest usuari una contrasenya Samba:

# smbpasswd -a sysadmin

Finalment, donar els privilegis adequats per tal que les màquines Windows s'hi afegeixin al domini "sin rechistar":

# net rpc rights grant -U sysadmin "EXAMPLE\Domain Admins" SeMachineAccountPrivilege \
  SePrintOperatorPrivilege SeAddUsersPrivilege SeDiskOperatorPrivilege \
  SeRemoteShutdownPrivilege


Samba com a client

...


Windows com a client de Samba

...


Samba + LDAP

...