Configuración de SAMBA en Linux

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

SAMBA es un servicio de Linux que se utiliza para compartir recursos de Linux en servidores Windows. Por ejemplo, un filesystem o una impresora.

Con el protocolo CIFS podemos compartir un filesystem SAMBA en otro servidor Linux (como si fuera un NFS). Es importante no compartir por NFS y SAMBA el mismo FS, ya que la interacción de ambos protocolos al mismo tiempo podría corromper datos.

Como norma general, el fichero de configuración de SAMBA se encuentra en /etc/samba/smb.conf, del cuál, podemos destacar las siguientes directivas:

  • workgroup: Es el nombre del grupo de trabajo de los servidores Windows que van a interactuar con los recursos SAMBA.
  • Permisos de acceso a nivel de IP: Podemos permitir el acceso a un recurso SAMBA a una determinada IP o red. Lo haremos con la directiva allow: hosts allow = 192.168.1. localhost.
  • Permisos de acceso a nivel de usuario: Podemos restringir los usuarios que van a poder acceder al recurso SAMBA: valid users = usuario1, usuario2
  • Compartir recursos: 

[nombre para el recurso compartido] comment = Mi directorio compartido
path = /directorio del sistema UNIX
browseable = yes → El recurso es visible
writable = yes → El recurso tiene permisos de escritura create mask = 0777
directory mask = 0777

Ejemplo de configuración de un servidor Samba

# grep -v «#» smb.conf |grep -v ^\; |grep -v ^$
[global]
client lanman auth = yes
client ntlmv2 auth = no
rpc_server:netlogon=disabled
workgroup = cpd1.intranet.gencat.cat
server string = Samba Server Version %v
username map = /etc/samba/smbusers
smb passwd file = /etc/smbpasswd
encrypt passwords = Yes
guest account = nobody
map to guest = Bad User
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[T07V5_pro]
comment = FS /serveis/dades/PRO/NAS07/T07V5 – srvsmb0
hosts allow = 10.48.16.11 10.48.16.12 10.48.16.15
path = /serveis/dades/PRO/NAS07/T07V5
guest ok = yes
guest only = yes
browseable = yes
writable = yes
; read only = yes
public = yes
create mask = 0775
directory mask = 0775
#

En este caso es un Linux RedHat 6. Una vez configurado el fichero smb.conf, arranco el servicio con service smb start.

Si instalamos cifs-utils, podremos montar el filesystem SAMBA en otro servidor Linux. Ejemplo:

# grep -i cifs /etc/fstab |grep -v «#»
//srvsmb0/T07V5_pre /serveis/dadessmb cifs guest,uid=52801,noperm,iocharset=utf8,codepage=unicode,unicode 0 0
# df -hP /serveis/dadessmb
Filesystem Size Used Avail Use% Mounted on
//srvsmb0/T07V5_pre 9.9G 5.5G 4.0G 59% /serveis/dadessmb
#

Compartir un filesystem con el usuario invitado guest

  • En la sección [global] añadimos las siguientes directivas:
[global]

workgroup = WORKGROUP
security = user
username map = /etc/samba/smbusers
smb passwd file = /etc/smbpasswd
encrypt passwords = Yes

guest account = smbuser
map to guest = Bad User
  • Creamos el usuario smbuser en el sistema, ya que hemos elegido esta cuenta para este ejemplo, tal y como se puede observar.
  • El el fichero smbusers configuramos el usuario invitado:
[[email protected] samba]# cat smbusers.rpmsave
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
smbuser = guest pcguest smbguest
[[email protected] samba]#

He añadido el «nobody» porque es la cuenta de invitado por defecto en el sistema.

  • Configuramos un recurso que vamos a compartir con Samba:
[CASOS_ESPECIALES]
        comment = FS /CASOS_ESPECIALES
        path = /CASOS_ESPECIALES
        create mask = 0755
        directory mask = 0775
        guest ok = yes
        guest only = yes
        browseable = yes
        writable = yes
        public = yes
        hosts allow = 10.48.0.247 10.49.0.247 30.32.0.53 30.32.48.82 30.32.0.80 30.32.0.83
  • Montamos el FS por cifs para comprobar que el acceso al recurso compartido no pide contraseña:
[[email protected] ~]# mount -t cifs -o username=guest,password="" //30.32.0.15/CASOS_ESPECIALES /david
[[email protected] ~]# df -hP /david
Filesystem                     Size  Used Avail Use% Mounted on
//30.32.0.15/CASOS_ESPECIALES  985G   72M  935G   1% /david
[[email protected] ~]#

Se puede probar cualquier usuario invitado que hayamos configurado.

Línea de comandos de SAMBA

  • smbclient -L hostMuestra los recursos compartidos en el servidor host. Ejemplo:

# smbclient -L 30.34.9.25 -U tomcat
Enter tomcat’s password:
Domain=[GENCAT.ECS.HP.COM] OS=[Unix] Server=[Samba 3.6.9-168.el6_5]

Sharename Type Comment
——— —- ——-
IPC$ IPC IPC Service (Samba Server Version 3.6.9-168.el6_5)
dades Disk FS /serveis/dades – lprenax0
tomcat Disk Home Directories
Domain=[GENCAT.ECS.HP.COM] OS=[Unix] Server=[Samba 3.6.9-168.el6_5]

Server Comment
——— ——-

Workgroup Master
——— ——-
#

  • smbmount //servidor_samba/nombre_recurso /mnt/samba: Monta un filesystem por SAMBA.

smbmount //host/nombredelrecurso /mnt/samba -o username=<usuario>

Con smbumount lo desmontaremos.

  • nmblookup host: Nos muestra la IP del servidor host.
  • nbtscan: Escanea la red en busca de recursos SAMBA compartidos.
  • smbstatus: Muestra el estado de SAMBA. Quién hay conectado a los recursos.

Autentificación de un usuario en un recurso SAMBA

La opción más sencilla es crear un usuario en el sistema operativo Linux y darle una contraseña “Samba”. Por ejemplo, si queremos que sea el usuario “tomcat” el que pueda autentificarse le asignaremos una contraseña de Samba:

smbpasswd -a tomcat

Cuando compartamos el recurso, por ejemplo, el filesystem /serveis/dades, añadiremos la directiva:

valid users = tomcat

También podemos dar acceso a un grupo de usuarios:

valid users = @tomcatgrp

Consultar la base de datos de SAMBA

# pdbedit -L -v

Unix username: tomcat
NT username:
Account Flags: [U ]
User SID: S-1-5-21-626409855-111919127-1373880083-1000
Primary Group SID: S-1-5-21-626409855-111919127-1373880083-513
Full Name: Usuario aplicacion Tomcat
Home Directory: \lprenax0\tomcat
HomeDir Drive:
Logon Script:
Profile Path: \lprenax0\tomcat\profile
Domain: LPRENAX0
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 16:06:39 CET
Kickoff time: Wed, 06 Feb 2036 16:06:39 CET
Password last set: Wed, 28 May 2014 14:09:17 CEST
Password can change: Wed, 28 May 2014 14:09:17 CEST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
#

Montaje de un filesystem con CIFS

Un filesystem que está compartido con Samba no puede compartirse con NFS al mismo tiempo debido a que hay dos protocolos diferentes actuando sobre el mismo sistema de archivo y podría producirse una corrupción de datos. Por eso, a veces, es necesario montar en Linux un filesystem que se está compartiendo con Samba. Esto se hace con CIFS.

Para montar el filesystem por samba desde la maquina cliente, ejecutaremos el siguiente comando:

Nueva sintaxis – A partir de cifs-utils-6.0

editranpre: Es el nombre que le hemos dado al recurso compartido desde el servidor de Samba.

mount -t cifs //lipexet0/editranpre /serveis/editran-pre -o username=gciadm,password=gciadm

El fichero /etc/fstab quedaría configurado así:

[[email protected] ~]# tail -1 /etc/fstab
//lipexet0/editranpre   /serveis/editran-pre    cifs    username=gciadm,password=gciadm 0 0
[[email protected] ~]#

Sintaxis antigua

[[email protected] ~]# umount /mnt/samba
[[email protected] ~]# mount -t cifs  -o username=guest,defaults,uid=8402895 //10.49.0.13/AQUARIUS /mnt/samba
Password for [email protected]//10.49.0.13/AQUARIUS:
[[email protected] ~]# touch /mnt/samba/kk
[[email protected] ~]# ll /mnt/samba/
total 0
-rw-r--r--. 1 hpddpers 52801 0 Jan 24 14:36 kk
drwx------. 2 hpddpers root  0 Jan 22 14:35 lost+found
[[email protected] ~]#

Como vemos, hemos podido escribir sin problemas un fichero como usuario invitado.

Si hemos protegido el recurso Samba para que sólo se pueda acceder con un usuario y contraseña concretos, podemos montar el filesystem de la siguiente manera:

mount -t cifs  -o username=sftpAquarius,defaults,uid=8402895 //10.49.0.13/AQUARIUS /mnt/samba

Problemas encontrados

Denied connection from X.X.X.X

Desde Windows 2016 no era posible conectarse al servidor de Samba versión samba4-4.2.10-12 en RedHat 6.9. El error que daba era:

[2019/01/28 11:01:44.745739,  0] ../source3/lib/access.c:338(allow_access)
  Denied connection from 10.49.64.14 (10.49.64.14)

Solución:

En el fichero de configuración de Samba, he sustituido el nombre del host permitido por su IP, a pesar de que el ping y el nslookup podrían resolver la IP apuntando al nombre. Detalles de la línea sustituida:

Antigua:

hosts allow = waqtwit01 waqtwit02 10.49.0.47 10.49.0.224

Nueva:

hosts allow = 10.49.64.14 10.49.64.15 10.49.0.47 10.49.0.224

WARNING: using NFS syntax for mounting CIFS shares is deprecated and will be removed in cifs-utils-6.0. Please migrate to UNC syntax.

Este error da cuando intentamos montar un filesystem por CIFS utilizando la sintaxis antigua que empleábamos para montar filesystems por NFS. A partir de cifs-utils-6.0, hay que montar los filesystems apuntando al nombre del recurso compartido de Samba.

Repito el ejemplo que ponía en un punto anterior de este artículo:

[[email protected] ~]# mount -t cifs //lipexet0/editranpre /serveis/editran-pre -o username=gciadm,password=gciadm

Te puede interesar

¿Te ha gustado? ¡Compártelo!

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

SUSCRÍBETE A PUERTO53

Recibe un email periódico con los artículos más interesantes de Puerto53.com

Antes de suscribirte lee los términos y condiciones. Gracias.

Contenido Relacionado

Artículos Recientes

Deja un comentario

About Author