Samba
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.
Contingut
Introducció
Podeu consultar online el llibre Using Samba de O'Reilly, és una bona referència.
Acrònims varis:
- DC: Domain Controller
- PDC: Primary DC
- BDC: Backup DC
- NetBIOS
- MB: Master Browser
- LMB: Local MB
- DMB: Domain MB
- MB: Master Browser
- 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
Referència Samba com a PDC a Samba.org.
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] workgroup = CACAUNET ; nom WINS del domini server role = standalone server ; podria ser domain controller tambe security = user ; alternatives: share (per recursos), domain (per fer de BDC) domain logons = yes ; habilita autenticació de logons de clients os level = 34 preferred master = yes domain master = yes ; yes=PDC , no=BDC wins support = yes ; fa de serivdor WINS (resolució de noms NetBIOS) time server = yes passdb backend = tdbsam ; despres hi posarem ldapsam! (de moment es BD interna) ; aquesta linia es per crear comptes de màquina. Caldrà crear el grup machines add machine script = sudo /usr/sbin/useradd -N -g machines -c Machine -d /var/lib/samba -s /bin/false %u [netlogon] comment = Enricus Logon Service path = /etc/samba/netlogon ; ULL! Cal crear la carpeta (o no funcionarà el logon) guest ok = no read only = yes
Cada màquina que afegim al domini requereix un compte de màquina que estarà dins el grup machines (tal i com hem configurat el add_machine_script del smbd.conf). Caldrà crear, doncs, el grup:
# addgroup machines
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
...