Cómo Configurar Samba

Joel Barrios Dueñas
Copyright.
© 2002 Linux Para Todos. Se permite la libre distribución y modificación de este documento por cualquier medio y formato mientras esta leyenda permanezca intacta con el documento y la distribución y modificación se hagan de de acuerdo con los términos de la Licencia Pública General GNU publicada por la Free Software Fundation; sea la versión 2 de la licencia o (a su elección) cualquier otra posterior. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción

La interconectividad entre un equipo con GNU/Linux® instalado y el resto de los equipos en red en una oficina con alguna versión de Windows® es importante, ya que esto nos permitirá compartir archivos e impresoras. Esta interconectividad se consigue exitosamente a través de SAMBA.

SAMBA es una conjunto de programas, originalmente creados por Andrew Tridgell y actualmente mantenidos por The SAMBA Team, bajo la Licencia Publica General GNU, y que implementan en sistemas basados sobre UNIX® el protocolo Server Message Block (o protocolo SMB). Este es algunas veces referido también como Common Internet File System (CIFS), LanManager o protocolo NetBIOS. Sirve como reemplazo total para Windows® NT, Warp®, NFS® o servidores Netware®.

Software requerido

Los procedimientos descritos en este manual han sido probados para poder aplicarse en un sistema con Red Hat™ Linux 7.2, con Samba 2.2.1a y Xinetd-2.3.3. Pueden utilizarse igualmente en cualquier otra versión de Red Hat (7.0 y 7.1), y otras distribuciones, aunque pueden variar las ubicaciones de algunos ficheros.

Necesitará tener instalados los siguientes paquetes, que seguramente vienen incluidos en el CD de su distribución predilecta:

  • samba-2.2.1a
  • samba-client-2.2.1a
  • samba-common-2.2.1a
  • samba-swat-2.2.1a
  • xinetd-2.3.3

Pregunte al sistema si se encuentran instalados estos paquetes, utilizando el siguiente comando:

rpm -q samba samba-client samba-common xinetd

De no estar instalados, o bien si hay paquetes más recientes entre las actualizaciones disponibles, cambie a súper usuario o bien ingrese como root al sistema. Procederemos a instalar lo necesario del siguiente modo:

rpm -Uvh samba-2.2.1a.rpm samba-client-2.2.1a.rpm samba-common-2.2.1a xinetd-2.3.3.rpm

Tómese en consideración que, de ser posible, se debe utilizar la versión estable más reciente de todo el software que vaya a instalar al realizar los procedimientos descritos en este manual, a fin de contar con los parches de seguridad necesarios. Ninguna versión de samba anterior a la 2.2.1 se considera como apropiada debido a fallas de seguridad de gran importancia, y ningún administrador competente utilizaría una versión inferior a la 2.2.1. Por favor visite el sito Web de su distribución predilecta para estar al tanto de cualquier aviso de actualizaciones de seguridad. Ejemplo: para Red Hat Linux 7.0, 7.1 y 7.2 hay paquetería de actualización en los siguientes enlaces:

  • ftp://updates.redhat.com/7.0/en/os/i386, si posee alguna distribución basada sobre Red Hat(TM) Linux 7.0
  • ftp://updates.redhat.com/7.1/en/os/i386/, si posee alguna distribución basada sobre Red Hat(TM) Linux 7.1
  • ftp://updates.redhat.com/7.2/en/os/i386/, si posee alguna distribución basada sobre Red Hat(TM) Linux 7.2

Procedimientos

Definamos primero los parámetros necesarios, como sería el NetBIOS con el que nos vería el grupo de máquinas Windows®, el grupo al que pertenecemos y el rango de direcciones IP a las que se permitirá acceder hacia la máquina con GNU/Linux.

Para fines prácticos el nombre NetBIOS debe tener un máximo de 11 caracteres. Normalmente tomaremos como referencia en nombre corto de la máquina o el nombre corto que se asigno como alias a la interfaz de red. Este lo estableceremos en el fichero /etc/samba/lmhosts (Red Hat Linux 6.x y Mandrake 6.x y 7.x utilizan /etc/lmhosts), en donde encontraremos lo siguiente:

127.0.0.1	localhost

Debemos añadir entonces el nombre que hayamos elegido asociado a la dirección IP que se tenga dentro de la red local. Adicionalmente podrá añadir también el nombre y dirección IP del resto de las máquinas que conformen su red local. Haga la separación de espacios con un tabulador.

127.0.0.1	localhost
192.168.1.5	maquinalinux
192.168.1.6	isaac
192.168.1.7	finanzas
192.168.1.8	direccion

Abra el fichero /etc/samba/smb.conf con su editor de texto favorito. En este encontrará no solo las opciones que requieren editarse, sino también un valioso instructivo que podría consultar más adelante para hacer ajustes a la configuración. Dentro de este notará que la información que le será de utilidad viene comentada con un símbolo # y los ejemplos con ; (punto y coma), siendo estos últimos los que tomaremos como referencia.

Se necesita ahora configurar los parámetros necesarios en /etc/samba/smb.conf (Red Hat Linux 6.x y Mandrake 6.x y 7.x utilizan /etc/smb.conf). Empezaremos por establecer el grupo de trabajo editando la línea workgroup, de este modo:

	workgroup = MIGRUPO

Después estableceremos, de acuerdo al fichero /etc/samba/lmhosts en la línea del parámetro netbios name:

netbios name = maquinalinux

A continuación estableceremos cierto nivel de seguridad. Primero especificando por cuales interfaces del sistema se escucharan peticiones. Cualquier interfaz omitida significará que Samba no responderá a peticiones provenientes de esa interfaz. Esto es útil cuando Samba se ejecuta en un servidor que sirve también de puerta de enlace para la red local, impidiendo se establezcan conexiones desde fuera de la red local.

	interfaces = 192.168.1.254/24

Continuamos especificando que rango de direcciones IP podrán acceder al servidor SAMBA, des-comentando y editando la línea hosts allow. Si nuestra red consiste en la máquinas con dirección IP desde 192.168.1.1 hasta 192.168.1.254, el rango de direcciones IP será 192.168.1. y este permitirá el acceso solo a dichas máquinas. Note por favor el punto al final de cada rango. Edite ésta de manera que quede del siguiente modo:

hosts allow = 192.168.1. 127.

Si queremos tener que evitar el registro de Windows® en todas las máquinas de la red local, debemos des-comentar las siguientes líneas:

encrypt passwords = Yes
smb passwd file = /etc/samba/smbpasswd

Podemos hacer transmisión (Broadcast) hacia la red local, y hacer un anuncio remoto, con el siguiente parámetro:

	remote announce = 192.168.1.25

De ser necesario, puede especificar que el servidor sea el "Maestro del domino", e incluso sobreponerse a cualquier otro en la red.

	domain master = True
	preferred master = yes

Puede habilitar convertirse en servidor WINS o bien utilizar un servidor WINS ya existente. Se puede ser un servidor WINS o un cliente WINS, pero no ambas cosas a al vez.

Si se va ser el servidor WINS, debe habilitarse lo siguiente:

	wins support = yes

Si se va a utilizar un servidor WINS ya existente, debe descomentar la siguiente línea y especificar que dirección IP utiliza dicho servidor WINS:

	wins server = 192.168.1.1

Lo siguiente es configurar las impresoras y los directorios compartidos. Para tal fin, debemos añadir solo public = yes en la sección de impresoras, de fin que quede del siguiente modo:

[printers]
        comment = El comentario que guste.
        path = /var/spool/samba
        printable = Yes
        browseable = No
        public = yes+

Para los directorios o volúmenes que se irán a compartir, en el mismo fichero de configuración encontrará distintos ejemplos para distintas situaciones particulares. En general, puede utilizar el siguiente ejemplo que funcionará para la mayoría:

[Lo_que_quiera]
        comment = Comentario que se le ocurra
        path = /cualquier/ruta/que/desee/compartir
        guest ok = Yes

Hecho todo lo anterior, solo resta inicializar el daemon correspondiente a fin de que cargue los nuevos parámetros configurados. Si iniciará SAMBA por primera vez ejecute lo siguiente:

/sbin/service smb start

Si va a reiniciar el servicio, ejecute lo siguiente:

/sbin/service smb restart

Por último, asegúrese de que SAMBA iniciará automáticamente cada vez que inicie el servidor. Puede hacerlo fácilmente desde una consola ejecutando el siguiente comando:

/sbin/chkconfig --add smb

No olvide sincronizar las cuentas entre el servidor GNU/Linux® y las estaciones con Windows®. Es decir, si en una máquina con Windows® ingresamos como el usuario "paco" con contraseña "elpatito16", en el servidor GNU/Linux® debe existir también dicha cuenta con ese mismo login y esa misma contraseña. Añada las cuentas con los comandos adduser y passwd, hágalo también con smbadduser y smbpasswd.

/usr/sbin/useradd usuariowindows
/usr/bin/passwd usuariowindows
/usr/bin/smbadduser usuariowindows:usuariowindows

O bien, si no deseamos que las cuentas que se vayan a crear puedan acceder a servicios distintos de SAMBA, como serían Telnet, SSH, etc, es decir, que no se les permita hacer login al sistema, podemos utilizar la siguiente alternativa que solo permitirá acceso a SAMBA, pero impedirá que el usuario intente acceder al servidor y obtenga un shell:

/usr/sbin/useradd -s /bin/false usuariowindows
/usr/bin/smbadduser usuariowindows:usuariowindows
/usr/bin/smbpasswd usuariowindows

Ejemplo de un fichero de configuración de SAMBA

# Samba config file created using SWAT
# from localhost.localdomain (127.0.0.1)
# Date: 2002/02/01 13:00:06

# Global parameters
[global]
	workgroup = LPT
	netbios name = LINUX
	server string = Samba Server
	interfaces = 192.168.1.254/24
	encrypt passwords = Yes
	log file = /var/log/samba/%m.log
	max log size = 0
	socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
	domain logons = Yes
	domain master = True
	preferred master = yes
	dns proxy = No
	wins support = Yes
	remote announce = 192.168.1.255
	hosts allow = 192.168.1. 127.
	printing = lprng

[homes]
	comment = Home Directories
	valid users = %S
	read only = No
	create mask = 0664
	directory mask = 0775
	browseable = No

[printers]
	comment = All Printers
	path = /var/spool/samba
	guest ok = Yes
	printable = Yes
	browseable = No

[FTP]
	comment = Directorio del servidor FTP
	path = /var/ftp/pub
	read only = No
	guest ok = Yes

Swat y la sencillez hecha al estilo Web.

¿Quiere una herramienta de interfaz amigable para configurar SAMBA? Al instalar el paquete samba, este incluye una aplicación que podrá acceder desde cualquier explorador Web desde cualquier máquina de su red local. Esta aplicación se llama Swat, y solo requiere solo que el paquete samba-swat este instalado:

rpm -q samba-swat

Si se utiliza Red Hat Linux 7.x, Mandrake Linux 8.x o cualquier otra distribución que utilice xinetd en lugar de inetd, el procedimiento difiere. El servicio se habilita con el siguiente comando:

/sbin/chkconfig swat on

También puede editar /etc/xinet.d/ y habilitar SWAT:

service swat
{
        port    = 901
        socket_type     = stream
        wait    = no
        only_from = 127.0.0.1
        user    = root
        server  = /usr/sbin/swat
        log_on_failure  += USERID
        disable = no
}

Si necesita poder acceder a Swat desde otras máquinas en la red local, debe añadir o cambiar la dirección IP de la interfaz por la que desea que swat escuche peticiones.

service swat
{
        port    = 901
        socket_type     = stream
        wait    = no
        only_from = 192.168.1.254
        user    = root
        server  = /usr/sbin/swat
        log_on_failure  += USERID
        disable = no
}

Una vez hecho esto, reinicie el servicio xinet del siguiente modo:

/sbin/service xinet restart

Conviene hacer un respaldo del fichero de configuración original, ya que Swat eliminará todas las líneas que no son necesarias en el fichero /etc/smb.conf, incluyendo la valiosa información de ayuda, y dejará solo aquellas requeridas para la configuración. Ejecute el siguiente comando a fin de hacer un respaldo para su futura consulta y estudio.

cp /etc/samba/smb.conf /etc/samba/smb.conf.respaldo

Ahora acceda con Netscape® o el navegador de su elección, a la dirección IP de su máquina con GNU/Linux y SAMBA en el puerto 901. Es decir, por ejemplo, a http://localhost.localdomain:901/. Acto seguido se le pedirá un login y una contraseña. Ponga los de root.

El resto será sencillo de entender al ver los nombre de los campos a llenar y solo requeriría que aplicase lo ya antes explicado.

Visualizando máquinas al estilo de Entorno de la red.

Modo texto, por navegación:

Indudablemente el método más práctico y seguro es el comando smbclient. Este permite acceder hacía cualquier servidor Samba o Windows® como si fuese el comando ftp en modo texto.

Para acceder al cualquier recurso de alguna máquina Windows® o servidor SAMBA determine primero que volúmenes o recursos compartidos posee está. utilice el comando smbclient del siguiente modo:

smbclient -U usuario -L alguna_maquina

Lo cual le devolvería más menos lo siguiente:

added interface ip=192.168.1.254 bcast=192.168.1.255 nmask=255.255.255.0
added interface ip=192.168.200.254 bcast=192.168.200.255 nmask=255.255.255.0
Anonymous login successful
Domain=[SU_DOMINIO] OS=[Windows]

     Sharename       Type         Comment
     ---------       -----        -------
     algún_volumen   Disk	  Mis Documentos
     HPDeskjet       Printer   

     Workgroup       Master
     ---------       -------
     MIGRUPO         ALGUNA_MAQUINA

La siguiente corresponde a la sintaxis básica para poder navegar los recursos compartidos por la máquina Windows® o el servidor SAMBA:

smbclient //alguna_maquina/recurso -U usuario

Ejemplo:

smbclient //LINUX/FTP -U jbarrios

Después de ejecutar lo anterior, el sistema solicitará se proporcione la contraseña del usuario jbarrios en el equipo denominado LINUX.

smbclient  //LINUX/FTP -U jbarrios
added interface ip=192.168.1.254 bcast=192.168.1.255 nmask=255.255.255.0
Password: 
Domain=[LPT] OS=[Unix] Server=[Samba 2.2.1a]
smb: \>

Pueden utilizarse virtualmente los mismos comandos que en el shell del comando ftp, como serían get, mget, put, del, etc.

Por montaje:

Si necesita poder visualizar desde GNU/Linux a las máquinas con Windows® e interactuar con los directorios compartidos por estás, necesitará realizar algunos pasos adicionales. De manera predeterminada, y por motivos de seguridad, solo root puede utilizar los comandos smbmount y smbumount. Deberá entonces establecer permisos de SUID a dichos comandos. Puede hacerlo ejecutando, como root lo siguiente:

chmod 4755 /usr/bin/smbmount
chmod 4755 /usr/bin/smbumount

Para acceder hacia una máquina Windows® determine primero que volúmenes o recursos compartidos posee está. utilice el comando smbclient del siguiente modo:

smbclient -U usuario -L alguna_maquina

Lo cual le devolvería más menos lo siguiente:

added interface ip=192.168.1.254 bcast=192.168.1.255 nmask=255.255.255.0
added interface ip=192.168.200.254 bcast=192.168.200.255 nmask=255.255.255.0
Anonymous login successful
Domain=[SU_DOMINIO] OS=[Windows]

     Sharename       Type         Comment
     ---------       -----        -------
     algún_volumen   Disk	  Mis Documentos
     HPDeskjet       Printer   

     Workgroup       Master
     ---------       -------
     MIGRUPO         ALGUNA_MAQUINA

En el ejemplo anterior hay un volumen compartido llamado algún_volumen. Si queremos montar este, debemos crear un punto de montaje. Éste puede crearse en cualquier directorio sobre el que tengamos permisos de escritura. Para montarlo, utilizamos entonces la siguiente línea de comando:

smbmount //alguna_maquina/algún_volumen /punto/de/montaje/

Si la máquina Windows® requiere un usuario y una contraseña, puede añadir a lo anterior las opciones -username=el_necesario -password=el_requerido -workgroup=MIGRUPO

Si la distribución de GNU/Linux utilizada es reciente, también puede utilizar el ya conocido comando mount del siguiente modo:

mount -t smbfs -o username=el_necesario,password=el_requerido 
            //alguna_maquina/algún_volumen /punto/de/montaje/ 
        

Si se genera una cuenta pcguest, similar a la cuenta nobody, podemos montar volúmenes SMB sin ingresar una contraseña pero con privilegios restringidos, o aquellos que definamos a un volumen accedido por un usuario invitado. Esto sería el método por elección para compartir volúmenes en una red de área local. Puede generarse una cuenta pcguest o bien dejar que el sistema tome al usuario nobody. Si opta por lo primero, solo de de alta la cuenta NO asigne contraseña alguna. Montar volúmenes remotos como usuarios invitado es muy sencillo. Un ejemplo real sería:

mount -t smbfs -o guest //LINUX/FTP //var/ftp 

Lo anterior monta un volumen SAMBA de una máquina con GNU/Linux en otra máquina con GNU/Linux.

Puede añadirse también una entrada en /etc/fstab de modo que sólo tenga que ser tecleado mount /punto/de/montaje. Esta línea sería de modo similar al siguiente:

//LINUX/FTP/var/ftp smbfs user,auto,guest,ro,gid=100 0 0 

Recuérdese que el volumen compartido debe estar configurado para permitir usuarios invitados:

[FTP]
        comment = Software libre (RPMS)
        path = /var/ftp/
        public = yes
        guest ok = Yes

Navegadores gráficos para Samba

Xfsamba

XFce, un excelente y muy ligero entorno gráfico, incluye un navegador Samba sumamente práctico y estable, Xfsamba, el cual corresponde a un frente gráfico para el comando smbclient. Tiene una interfaz y funcionamiento similar a la de cualquier cliente gráfico para protocolo ftp.

Gnomba

Otra herramienta, aunque algo imperfecta y con algunos detalles, es Gnomba, un frente gráfico para los comandos smbmount y smbumount, mismo que podrá encontrar en http://sourceforge.net/projects/gnomba/, o bien lo encontrará en el CD de Powertools de Red Hat(TM) Linux 6.2 y Red Hat(TM) Linux 7.x. Este le hará la vida más sencilla si va utilizar exclusivamente entorno gráfico y no quiere complicarse la existencia teniendo que ingresar comandos en la consola.

 

Hosted by www.Geocities.ws

1