Diferència entre revisions de la pàgina «Samba»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
 
(Hi ha 38 revisions intermèdies del mateix usuari que no es mostren)
Línia 14: Línia 14:
 
Referències:
 
Referències:
 
* [http://www.oreilly.com/openbook/samba/book/index.html Llibre online '''Using Samba''' de O'Reilly], és una bona referència.
 
* [http://www.oreilly.com/openbook/samba/book/index.html Llibre online '''Using Samba''' de O'Reilly], és una bona referència.
* [https://help.ubuntu.com/lts/serverguide/openldap-server.html Ubuntu OpenLDAP Server].
 
* [https://help.ubuntu.com/lts/serverguide/samba-ldap.html#samba-ldap-samba-configuration Ubuntu Samba i LDAP].
 
 
* [http://samba.org Samba.org]
 
* [http://samba.org Samba.org]
  
 
Acrònims varis:
 
Acrònims varis:
* DC: Domain Controller
+
* DC: Domain Controller (Controlador de domini de Active Directory)
 
** PDC: Primary DC
 
** PDC: Primary DC
 
** BDC: Backup DC
 
** BDC: Backup DC
* NetBIOS
+
* NetBIOS , WINS : sistema de noms del protocol SMB (independent del sistema DNS)
 
** MB: Master Browser
 
** MB: Master Browser
 
*** LMB: Local MB
 
*** LMB: Local MB
Línia 39: Línia 37:
 
* Impressores
 
* Impressores
  
=== Configuració ===
+
=== Instal·lació ===
El principal arxiu de configuració és '''/etc/samba/smbd.conf'''.
+
# apt-get install samba smbclient samba-doc
 +
 
 +
=== Configuració típica dels ''shares'' ===
 +
El principal arxiu de configuració és '''/etc/samba/smb.conf'''.
  
 
En general, cada secció marcada amb claudàtors correspon a un ''share'' (carpeta compartida). Per exemple:
 
En general, cada secció marcada amb claudàtors correspon a un ''share'' (carpeta compartida). Per exemple:
Línia 61: Línia 62:
  
 
== Quick Reference ==
 
== Quick Reference ==
 +
Abans de començar convé posar el nom de la màquina [[FQDN]] ben posat (fully qualified domain name).
 +
 
Paquets a instal·lar:
 
Paquets a instal·lar:
  # apt-get install samba smbclient samba-doc smbldap-tools
+
  # apt-get install samba smbclient samba-doc
 
 
 
Arxius de conf:
 
Arxius de conf:
  /etc/samba/smbd.conf
+
  /etc/samba/smb.conf
  
 
Arxius de log (principal, n'hi ha molts més):
 
Arxius de log (principal, n'hi ha molts més):
Línia 74: Línia 76:
 
Comandes Linux útils:
 
Comandes Linux útils:
 
* smbclient -L //maquina/ -U usuari <pre>$ smbclient -L //server/ -U guest -N</pre>
 
* smbclient -L //maquina/ -U usuari <pre>$ smbclient -L //server/ -U guest -N</pre>
* smbtree [-N]
+
* smbtree [-N] : per veure totes les màquines i els seus recursos (s'extreu de la BD local)<pre>$ smbtree -N</pre>
 +
* smbtree -D : mostra dominis disponibles<pre>$ smbtree -D</pre>
 
* nmblookup <nom_netbios_maquina> (retorna IP)
 
* nmblookup <nom_netbios_maquina> (retorna IP)
 
* nmblookup -A localhost
 
* nmblookup -A localhost
Línia 88: Línia 91:
 
Referència [https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/samba-pdc.html Samba com a PDC a Samba.org].
 
Referència [https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/samba-pdc.html 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).
+
Partirem d'un Ubuntu Server LTS i anirem modificant la configuració del '''/etc/samba/smb.conf''' (no l'esborreu sencer, anirem modificant i afegint parts).
  
 
Per activar la màquina com a ''samba server'' cal fer:
 
Per activar la màquina com a ''samba server'' cal fer:
Línia 107: Línia 110:
 
  [netlogon]
 
  [netlogon]
 
     comment = Enricus Logon Service
 
     comment = Enricus Logon Service
     path = /etc/samba/netlogon        ; ULL! Cal crear la carpeta (o no funcionarà el logon)
+
     path = /home/samba/netlogon        ; ULL! Cal crear la carpeta (o no funcionarà el logon)
 
     guest ok = no
 
     guest ok = no
 
     read only = yes
 
     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:
+
Cal crear la '''carpeta ''logon''''' on podrem posar ''scripts'' d'inici i així particularitzar configuracions quan algú es logui a les màquines (muntar carpetes de xarxa, etc):
 +
# mkdir -p /home/samba/netlogon
 +
 
 +
 
 +
=== Comptes de màquina ===
 +
Cada màquina que afegim al domini requereix un "compte de màquina" (un usuari Unix) que estarà dins el grup ''machines'' (tal i com hem configurat el ''add_machine_script'' del smb.conf). Caldrà crear, doncs, el grup:
 
  # addgroup machines
 
  # 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):
+
Els "comptes de màquina" no requereixen que tinguin entrada al sistema operatiu (de fet, millor que no en tingui). Per tant, aquests usuaris no tindran contrasenya ni ''home directory''.
guest ok = no
 
  
<br>
+
En principi, si ho hem configurat tot bé, '''les màquines es donaran d'alta automàticament''' mercès a la comanda que figura a ''add machine script''.
 +
 
 +
Si volem crear "a mà" una màquina podem fixar-nos aquesta comanda de ''add machine script''. '''Els noms de màquina Windows/Samba seran el nom que configurem a la màquina client amb el signe "$" al final.'''. Per exemeple, si volem afegir la màquina "xipiron", farem:
 +
# useradd -N -g machines -c Machine -d /var/lib/samba -s /bin/false '''xipiron$'''
  
 
=== Comptes Samba i Unix ===
 
=== Comptes Samba i Unix ===
Línia 143: Línia 153:
 
Per tal d'[https://help.ubuntu.com/lts/serverguide/samba-dc.html habilitar Samba com a servidor de domini per a clients Windows] caldrà aplicar alguns ajustos.
 
Per tal d'[https://help.ubuntu.com/lts/serverguide/samba-dc.html 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.
+
El més rellevant és ajustar el rol del server:
  # net groupmap add ntgroup="Domain Admins" unixgroup=sysadmin rid=512 type=d
+
[global]
 +
    ...
 +
    server role = '''classic primary domain controller'''
 +
 
 +
El valor típic és ''standalone server'' que ja va bé per fer ''shares'' i demés, però no per fer de PDC i permetre afegir màquines i logons centralitzats.
 +
 
 +
Seguidament cal mapejar el "Domain Admins" al grup d'administradors UNIX de la màquina server, '''grup ''adm''''' en el cas d'Ubuntu 14.04. En Windows el grup d'Administradors té UID=512). Qualsevol usuari UNIX que pertanyi a aquest grup podrà donar d'alta màquines al domini.
 +
  # net groupmap add ntgroup="Domain Admins" unixgroup='''adm''' rid=512 type=d
  
I donar a aquest usuari una contrasenya Samba:
+
Crearem un usuari dins del grup ''adm'' per afegir màquines al domini (cal donar-li també la contrasenya Samba):
  # smbpasswd -a sysadmin
+
# adduser jefe
 +
# adduser jefe adm
 +
  # smbpasswd -a jefe
  
 
Finalment, donar els privilegis adequats per tal que les màquines Windows s'hi afegeixin al domini "sin rechistar":
 
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 \
+
  # net rpc rights grant -U '''jefe''' "EXAMPLE\Domain Admins" SeMachineAccountPrivilege \
 
   SePrintOperatorPrivilege SeAddUsersPrivilege SeDiskOperatorPrivilege \
 
   SePrintOperatorPrivilege SeAddUsersPrivilege SeDiskOperatorPrivilege \
 
   SeRemoteShutdownPrivilege
 
   SeRemoteShutdownPrivilege
Línia 156: Línia 175:
 
<br>
 
<br>
  
== Samba com a client ==
+
== Clients Windows ==
...
+
Pots afegir màquines Windows amb normalitat a un domini realitzat amb Samba, sempre i quan estigui actuant com a PDC (veure més amunt).
 +
 
 +
Tingueu en compte, però:
 +
* Windows XP (xipiron): funciona a la primera sense problema (segueix els consells de més avall).
 +
* Windows 7:
 +
** Cal fer uns [http://www.enterprisenetworkingplanet.com/windows/article.php/3849061/Use-Samba-With-Windows-7-Clients.htm canvis en el registre del client] abans d'unir-se al domini.
 +
** Crear el compte de la màquina "a mà" en el server (veure més amunt).
 +
 
 +
 
 +
Normalment afegim la màquina des del menú de canvi de nom (de la màquina client). Hi ha 2 passes:
 +
# Indicar que ens unim al domini (el què haguem posat al ''workgroup'' del fitxer smb.conf).
 +
#: Quan fem això ens ha de sortir un diàleg d'autenticació. Si no ens surt pot ser per diversos motius:
 +
#* No hem posat correctament <code>server role = classic primary domain controller</code>
 +
#* De vegades cal reiniciar les màquines (en principi reiniciant serveis hi ha prou, però de vegades cal reiniciar).
 +
#* No estem mirant el domini correcte.
 +
#* Podeu testejar des d'una màquina linux si existeix el domini fent<pre>$ smbtree -N</pre>
 +
#* Podeu intentar canviar el ''grup de treball'' del client, aviam si així veu el server.
 +
# Quan ens surt la pantalla d'autenticació posem usuari/passwd (del "jefe" o altre usuari del grup ''adm'')
 +
#: Si no ens valida OK:
 +
#* Comprovar que hem mapejat correctament el grup UNIX ''adm'' al grup "Domain Admins" (GID=512) tal com s'indica més amunt.
 +
#* Comprovar que hem creat la carpeta del ''netlogon''
  
 
<br>
 
<br>
  
== Windows com a client de Samba ==
+
== Home directories i profiles ==
...
+
* '''''Home directories'''''
 +
** Espai que el servidor posa a disposició dels usuaris (en Unix típicament a <code>/home</code>).
 +
** El client Windows sol muntar-ho a la unitat H:
 +
** Per poder-ho activar cal haver publicat la secció [homes] al '''smb.conf''' del servidor.
 +
* '''''Profiles'''''
 +
** Arxius que l'usuari de domini guarda en el <u>client</u>, normalment a les típiques carpetes "Mis Documentos", "Escritorio", etc.
 +
** Si no es configuren de cap manera cada client tindrà diferents arxius en diferents màquines client.
 +
** Si es configura com a '''"perfils mòbils"''' els clients guarden els arxius al servidor quan es tanca la sessió. Això permet que l'usuari trobi els mateixos arxius encara que treballi en diferents màquines. Cal anar al tanto amb aquesta configuració, ja que si l'usuari guarda arxius molt voluminosos (com màquines virtuals i similars) pot carregar molt el trànsit de xarxa i l'espai de disc del server.
 +
 
 +
Un cop aclarides aquestes diferències podem entendre que hi ha 2 tipus diferents de configuracions típiques:
 +
* Profiles dins el home: situem la carpeta "profile" dins del ''home directory'' de cada usuari i així al server només cal que tinguem 1 sol share (els homes).
 +
* Profiles i homes separats: el server guarda els ''homes'' i els ''profiles'' en espais diferents. Això també permet activar els profiles sense activar els ''home directories''
 +
 
 +
En ambdós casos '''cal que habiliteu la secció [homes] de smb.conf''' per publicar les carpetes de cada usuari (''home directories''). La típica secció [homes] habilitarà que qualsevol usuari pugui accedir al seu ''home directory'' a través de la ruta \\<server>\<usuari>
 +
 
 +
=== Configuració home+profile ===
 +
És més senzilla, ja que NO cal habilitar la secció <code>[profiles]</code>.
 +
 
 +
La seva configuració vindria a ser aquesta (secció <code>[global]</code>), situant la logon home sobre la unitat H:, i així fent-se disponible per a l'usuari en qualsevol moment. Fixeu-vos en què la carpeta "profile" (logon path) està dins de la mateixa carpeta del ''logon home'' \\<server>\<usuari> (que és la ruta del home directory).
 +
logon path = '''\\%N\%U\profile'''
 +
logon drive = H:
 +
logon home = \\%N\%U
 +
logon script = logon.cmd
 +
 
 +
Si activem tot això, veureu que al entrar amb el client Windows disposarem de la unitat H: sobre la que podem escriure en el nostre ''home directory'' del servidor Samba.
 +
 
 +
A més, podem col·locar alguna configuració particular a l'arxiu logon.cmd per muntar altres unitats de xarxa, etc.
 +
 
 +
=== Configuració home i profile separada ===
 +
Caldrà activar la secció [profiles] i configurar-la adequadament.
 +
 
 +
Els paràmetres del logon han de quedar així:
 +
logon path = '''\\%N\profiles\%U'''
 +
logon drive = H:
 +
logon home = \\%N\%U
 +
logon script = logon.cmd
 +
 
 +
A més, caldrà que quan creem un usuari Unix, també creem la seva carpeta de ''profile'', i això depèn del què posem a la secció [profiles]. Típicament a <code>/home/samba/profiles/usuari</code>
 +
 
 +
Si seguim aquesta estratègia convé que adequem el /etc/skel o creem algun script per facilitar que quan creem un usuari nou, també creem una carpeta per al perfil mòbil.
 +
 
 +
<br>
 +
 
 +
== Clients Linux ==
 +
Podem accedir als ''shares'' a través d'un Nautilus: fent CTRL+L i posant l'adreça smb://ip_del_server/recurs
 +
 
 +
S'entén que "recurs" és el ''share'' que hem posat a l'arxiu smb.conf . També es pot accedir als ''homes'' de cada usuari posant el nom d'usuari (si ho hem configurat adequadament).
 +
 
 +
En el fons, el què voldrem al afegir una màquina Linux a un domini Samba és:
 +
* '''Autenticació centralitzada o ''logon''''': configurant [[PAM]] amb WINBIND i nsswitch.conf
 +
* '''Compartició del ''home directory''''' de l'usuari logat.
 +
 
 +
 
 +
Opcions de software per configurar el ''logon'' de clients Linux sobre un AD:
 +
* '''SSSD (recomanat)''' : és el sistema més modern i amb més avantatges com és la caché de credencials per quan perdem connexió amb el server.
 +
** Doc oficial: [https://fedorahosted.org/sssd/ System Security Services Daemon].
 +
** [https://www.unixmen.com/how-to-join-an-ubuntu-desktop-into-an-active-directory-domain Tutorial RECOMANAT de SSSD per a Ubuntu]. Provat exitosament amb Ubuntu 16.04. Utilitza REALMD per connectar-se al AD.
 +
** [https://help.ubuntu.com/lts/serverguide/sssd-ad.html Doc oficial SSSD d'Ubuntu]. Enlloc de realmd utilitzen Samba per connectar-se al AD.
 +
* '''Winbind''' : permet connectar el PAM a l'autenticació remota d'usuaris a un AD, però sembla donar problemes i estar menys actualitzat que SSSD.
 +
** [http://ubuntuforums.org/showthread.php?t=2213342 Tutorial de ''Winbind'' en Ubuntu forums]. Utilitzant Winbind, podem introduir la màquina al domini.
 +
* Likewise: era una eina gràfica que anava força bé però que malauradament està descartada.
 +
* PowerBroker (pbis): el substitut de Likwise, sembla que mig funciona però dona força problemes i cal fer bastants ''hacks''.
 +
** [http://askubuntu.com/questions/452904/likewise-open-14-04-other-easy-way-to-connect-ad Tutorial hàbil amb PowerBroker (pbis)]. En teoria aquest soft/script hauria de facilitar afegir la màquina al domini, però al final s'han de fer tants parches que no sé si val la pena. Si us dona l'error "No logon server" tingueu en compte afegir al smb.conf del client <code>wins server = <ip_del_server></code> i reiniciar el smbd.
 +
 
 +
 
 +
Comprova també que pots:
 +
* Entrar amb usuari de domini amb el ''lighdm''. Potser hauràs de modificar-ho per deshabilitar la sessió automàtica i habilitar els ''logins manuals''.
 +
* Habilitar els usuaris del grup "domain admins" en el SUDOERS
 +
* Canviar la password de l'usuari. No sol funcionar passwd, pel que caldrà utilitzar<pre>$ smbpasswd -r <ip_server></pre>
  
 
<br>
 
<br>
  
 
== Samba + LDAP ==
 
== Samba + LDAP ==
Abans d'abordar aquesta secció cal:
+
Tens la informació a l'article [[Samba amb LDAP]].
# Muntar un [[LDAP|Servidor LDAP amb encriptació TLS]]. Recomano crear un LDAP nou. En el procés de configuració podem perdre les dades existents, així que millor fer-ho a part des del principi. A més, els comptes de Samba son lleugerament diferents dels Posix.
 
# Incorporar el ''schema'' de Samba al nostre DIT de LDAP:
 
#* Per realitzar-ho, recomano la [https://help.ubuntu.com/lts/serverguide/samba-ldap.html#samba-ldap-samba-configuration pàgina oficial d'Ubuntu sobre '''Samba + LDAP'''].
 
# Configurar Samba per utilitzar LDAP com a ''passdb backend''.
 
  
 +
<br>
  
En realitat el meollo està en canviar la BD del ''backend'':
+
== Troubleshooting ==
  [global]
+
El més important (com sempre) és mirar el fitxer de log:
    #passdb backend = tdbsam
+
  $ tail -f /var/log/samba/log.smbd
    passdb backend = ldapsam:"ldap:///"
 
 
 
Habitualment està en ''tdbsam'' que és un arxiu intern de Samba (ja hem vist que les contrasenyes son independents entre el sistema operatiu i Samba, tot i que es poden sincronitzar).
 
  
Caldrà, però, alguns ajustos extra segons el nostre domini:
+
La comanda testparm també ens dona informació sobre si hi ha errors a smbd.conf:
  # LDAP Settings
+
  $ testparm
  passdb backend = ldapsam:"ldap:///"
 
  ldap suffix = dc=enric,dc=local
 
  ldap user suffix = ou=usuaris
 
  ldap group suffix = ou=grups
 
  ldap machine suffix = ou=maquines
 
  ldap idmap suffix = ou=Idmap
 
  ldap admin dn = cn=admin,dc=enric,dc=local
 
  ldap ssl = start tls
 
  ldap passwd sync = yes
 
...
 
  add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w "%u"
 
  
 
<br>
 
<br>

Revisió de 17:28, 27 abr 2017

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ó[modifica]

Referències:

Acrònims varis:

  • DC: Domain Controller (Controlador de domini de Active Directory)
    • PDC: Primary DC
    • BDC: Backup DC
  • NetBIOS , WINS : sistema de noms del protocol SMB (independent del sistema DNS)
    • 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.

Funcionalitats[modifica]

Samba serveix per substituir algunes funcionalitats d'un Active Directory (per suposat, no totes elles). Les més importants son:

  • Netlogon: comptes d'usuari centralitzats
  • Shares: carpetes de xarxa
  • Impressores

Instal·lació[modifica]

# apt-get install samba smbclient samba-doc

Configuració típica dels shares[modifica]

El principal arxiu de configuració és /etc/samba/smb.conf.

En general, cada secció marcada amb claudàtors correspon a un share (carpeta compartida). Per exemple:

[documents]
    path = /home/enric/documents    ; carpeta a compartir
    guest ok = no                   ; si admetem usuari convidat
    valid users = enric             ; usuaris vàlids (amb @ seria un grup)
    read only = no                  ; es pot escriure
    browseable = yes                ; el servidor mostra la carpeta com a disponible quan visualitzem \\MAQUINA

Hi ha, però, les excepcions següents com a seccions de configuració global:

  • [global]
  • [homes]
  • [netlogon]
  • [printers]
  • [print$]
  • [profiles]


Quick Reference[modifica]

Abans de començar convé posar el nom de la màquina FQDN ben posat (fully qualified domain name).

Paquets a instal·lar:

# apt-get install samba smbclient samba-doc

Arxius de conf:

/etc/samba/smb.conf

Arxius de log (principal, n'hi ha molts més):

/var/log/samba/log.smbd

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] : per veure totes les màquines i els seus recursos (s'extreu de la BD local)
    $ smbtree -N
  • smbtree -D : mostra dominis disponibles
    $ smbtree -D
  • nmblookup <nom_netbios_maquina> (retorna IP)
  • nmblookup -A localhost
  • per buscar master browsers:
    $ nmblookup -M -
  • ...

Comandes Windows útils:

  • net use


Samba Server[modifica]

Referència Samba com a PDC a Samba.org.

Partirem d'un Ubuntu Server LTS i anirem modificant la configuració del /etc/samba/smb.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 = /home/samba/netlogon         ; ULL! Cal crear la carpeta (o no funcionarà el logon)
   guest ok = no
   read only = yes

Cal crear la carpeta logon on podrem posar scripts d'inici i així particularitzar configuracions quan algú es logui a les màquines (muntar carpetes de xarxa, etc):

# mkdir -p /home/samba/netlogon


Comptes de màquina[modifica]

Cada màquina que afegim al domini requereix un "compte de màquina" (un usuari Unix) que estarà dins el grup machines (tal i com hem configurat el add_machine_script del smb.conf). Caldrà crear, doncs, el grup:

# addgroup machines

Els "comptes de màquina" no requereixen que tinguin entrada al sistema operatiu (de fet, millor que no en tingui). Per tant, aquests usuaris no tindran contrasenya ni home directory.

En principi, si ho hem configurat tot bé, les màquines es donaran d'alta automàticament mercès a la comanda que figura a add machine script.

Si volem crear "a mà" una màquina podem fixar-nos aquesta comanda de add machine script. Els noms de màquina Windows/Samba seran el nom que configurem a la màquina client amb el signe "$" al final.. Per exemeple, si volem afegir la màquina "xipiron", farem:

# useradd -N -g machines -c Machine -d /var/lib/samba -s /bin/false xipiron$

Comptes Samba i Unix[modifica]

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[modifica]

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[modifica]

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

El més rellevant és ajustar el rol del server:

[global]
    ...
    server role = classic primary domain controller

El valor típic és standalone server que ja va bé per fer shares i demés, però no per fer de PDC i permetre afegir màquines i logons centralitzats.

Seguidament cal mapejar el "Domain Admins" al grup d'administradors UNIX de la màquina server, grup adm en el cas d'Ubuntu 14.04. En Windows el grup d'Administradors té UID=512). Qualsevol usuari UNIX que pertanyi a aquest grup podrà donar d'alta màquines al domini.

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

Crearem un usuari dins del grup adm per afegir màquines al domini (cal donar-li també la contrasenya Samba):

# adduser jefe
# adduser jefe adm
# smbpasswd -a jefe

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

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


Clients Windows[modifica]

Pots afegir màquines Windows amb normalitat a un domini realitzat amb Samba, sempre i quan estigui actuant com a PDC (veure més amunt).

Tingueu en compte, però:

  • Windows XP (xipiron): funciona a la primera sense problema (segueix els consells de més avall).
  • Windows 7:


Normalment afegim la màquina des del menú de canvi de nom (de la màquina client). Hi ha 2 passes:

  1. Indicar que ens unim al domini (el què haguem posat al workgroup del fitxer smb.conf).
    Quan fem això ens ha de sortir un diàleg d'autenticació. Si no ens surt pot ser per diversos motius:
    • No hem posat correctament server role = classic primary domain controller
    • De vegades cal reiniciar les màquines (en principi reiniciant serveis hi ha prou, però de vegades cal reiniciar).
    • No estem mirant el domini correcte.
    • Podeu testejar des d'una màquina linux si existeix el domini fent
      $ smbtree -N
    • Podeu intentar canviar el grup de treball del client, aviam si així veu el server.
  2. Quan ens surt la pantalla d'autenticació posem usuari/passwd (del "jefe" o altre usuari del grup adm)
    Si no ens valida OK:
    • Comprovar que hem mapejat correctament el grup UNIX adm al grup "Domain Admins" (GID=512) tal com s'indica més amunt.
    • Comprovar que hem creat la carpeta del netlogon


Home directories i profiles[modifica]

  • Home directories
    • Espai que el servidor posa a disposició dels usuaris (en Unix típicament a /home).
    • El client Windows sol muntar-ho a la unitat H:
    • Per poder-ho activar cal haver publicat la secció [homes] al smb.conf del servidor.
  • Profiles
    • Arxius que l'usuari de domini guarda en el client, normalment a les típiques carpetes "Mis Documentos", "Escritorio", etc.
    • Si no es configuren de cap manera cada client tindrà diferents arxius en diferents màquines client.
    • Si es configura com a "perfils mòbils" els clients guarden els arxius al servidor quan es tanca la sessió. Això permet que l'usuari trobi els mateixos arxius encara que treballi en diferents màquines. Cal anar al tanto amb aquesta configuració, ja que si l'usuari guarda arxius molt voluminosos (com màquines virtuals i similars) pot carregar molt el trànsit de xarxa i l'espai de disc del server.

Un cop aclarides aquestes diferències podem entendre que hi ha 2 tipus diferents de configuracions típiques:

  • Profiles dins el home: situem la carpeta "profile" dins del home directory de cada usuari i així al server només cal que tinguem 1 sol share (els homes).
  • Profiles i homes separats: el server guarda els homes i els profiles en espais diferents. Això també permet activar els profiles sense activar els home directories

En ambdós casos cal que habiliteu la secció [homes] de smb.conf per publicar les carpetes de cada usuari (home directories). La típica secció [homes] habilitarà que qualsevol usuari pugui accedir al seu home directory a través de la ruta \\<server>\<usuari>

Configuració home+profile[modifica]

És més senzilla, ja que NO cal habilitar la secció [profiles].

La seva configuració vindria a ser aquesta (secció [global]), situant la logon home sobre la unitat H:, i així fent-se disponible per a l'usuari en qualsevol moment. Fixeu-vos en què la carpeta "profile" (logon path) està dins de la mateixa carpeta del logon home \\<server>\<usuari> (que és la ruta del home directory).

logon path = \\%N\%U\profile
logon drive = H:
logon home = \\%N\%U
logon script = logon.cmd

Si activem tot això, veureu que al entrar amb el client Windows disposarem de la unitat H: sobre la que podem escriure en el nostre home directory del servidor Samba.

A més, podem col·locar alguna configuració particular a l'arxiu logon.cmd per muntar altres unitats de xarxa, etc.

Configuració home i profile separada[modifica]

Caldrà activar la secció [profiles] i configurar-la adequadament.

Els paràmetres del logon han de quedar així:

logon path = \\%N\profiles\%U
logon drive = H:
logon home = \\%N\%U
logon script = logon.cmd

A més, caldrà que quan creem un usuari Unix, també creem la seva carpeta de profile, i això depèn del què posem a la secció [profiles]. Típicament a /home/samba/profiles/usuari

Si seguim aquesta estratègia convé que adequem el /etc/skel o creem algun script per facilitar que quan creem un usuari nou, també creem una carpeta per al perfil mòbil.


Clients Linux[modifica]

Podem accedir als shares a través d'un Nautilus: fent CTRL+L i posant l'adreça smb://ip_del_server/recurs

S'entén que "recurs" és el share que hem posat a l'arxiu smb.conf . També es pot accedir als homes de cada usuari posant el nom d'usuari (si ho hem configurat adequadament).

En el fons, el què voldrem al afegir una màquina Linux a un domini Samba és:

  • Autenticació centralitzada o logon: configurant PAM amb WINBIND i nsswitch.conf
  • Compartició del home directory de l'usuari logat.


Opcions de software per configurar el logon de clients Linux sobre un AD:

  • SSSD (recomanat) : és el sistema més modern i amb més avantatges com és la caché de credencials per quan perdem connexió amb el server.
  • Winbind : permet connectar el PAM a l'autenticació remota d'usuaris a un AD, però sembla donar problemes i estar menys actualitzat que SSSD.
  • Likewise: era una eina gràfica que anava força bé però que malauradament està descartada.
  • PowerBroker (pbis): el substitut de Likwise, sembla que mig funciona però dona força problemes i cal fer bastants hacks.
    • Tutorial hàbil amb PowerBroker (pbis). En teoria aquest soft/script hauria de facilitar afegir la màquina al domini, però al final s'han de fer tants parches que no sé si val la pena. Si us dona l'error "No logon server" tingueu en compte afegir al smb.conf del client wins server = <ip_del_server> i reiniciar el smbd.


Comprova també que pots:

  • Entrar amb usuari de domini amb el lighdm. Potser hauràs de modificar-ho per deshabilitar la sessió automàtica i habilitar els logins manuals.
  • Habilitar els usuaris del grup "domain admins" en el SUDOERS
  • Canviar la password de l'usuari. No sol funcionar passwd, pel que caldrà utilitzar
    $ smbpasswd -r <ip_server>


Samba + LDAP[modifica]

Tens la informació a l'article Samba amb LDAP.


Troubleshooting[modifica]

El més important (com sempre) és mirar el fitxer de log:

$ tail -f /var/log/samba/log.smbd

La comanda testparm també ens dona informació sobre si hi ha errors a smbd.conf:

$ testparm