Como hacer correr SAMBA con distintas configuraciones

Jaume Sabater

19 de octubre de 2001

(e IPs)

Esto nos va a servir para emular varios servidores NT con sus respectivas configuraciones y servicios, lo que nos va a permitir tener dos "dominios NT" o mas, en una sola maquina Linux.

Antes de nada, hay que tener tantas IPs como servidores samba queramos, ya que cada uno va a correr sobre una IP distinta. Para tener varias IPs en una sola interfaz es ... es otro HowTo ;)

La idea es de modificar el smbd y el nmbd para que admitan distintos nombres en el archivo donde se guarda el PID, de forma que para cada configuracion distinta del smbd/nmbd tendremos un archivo distinto con un PID distinto.

1.

Nos bajamos las fuentes del samba ("apt-get source samba", o a partir de http://www.samba.org).

1.

Editamos el /smbd/server.c de forma que acepte la nueva opción -P

1.

Añadimos lo siguiente en la funcion usage()

printf("\t-P Archivo PID          Nombre del archivo PID\n");
1.

Añadimos lo siguiente en main()

char archivo_PID[32] = "smbd";
1.

Modificamos la siguiente linea de la funcion main()

while (EOF != (opt = getopt(argc, argv, "O:l:s:d:Dp:h?Vaof:")))

por

while (EOF != (opt = getopt(argc, argv, "O:l:s:d:Dp:P:h?Vaof:")))
1.

Añadimos lo siguiente en el case de la función main()

case 'P':
pstrcpy(archivo_PID,optarg);
break;
1.

Modificamos la siguiente linea de la funcion main()

pidfile_create("smbd");

por

pidfile_create(archivo_PID);
1.

Editamos nmbd/nmbd.c para que también acepte -P

1.

Añadimos lo siguiente en la función usage()

printf("\t-P Archivo PID          Nombre del archivo PID\n");
1.

Añadimos lo siguiente en la función main()

char archivo_PID[32] = "nmbd";
1.

Modificamos la siguiente linea de la función main()

while (EOF != (opt = getopt(argc,argv,"Vaos:T:I:C:bAB:N:Rn:l:d:Dp:hSH:G:f:")))

por

while (EOF != (opt = getopt(argc,argv,"Vaos:T:I:C:bAB:N:Rn:l:d:Dp:P:hSH:G:f:")))
1.

Añadimos lo siguiente en el case de la función main()

case 'P':
pstrcpy(archivo_PID,optarg);
break;
1.

Modificamos la siguiente linea de la función main()

pidfile_create("nmbd");

por

pidfile_create(archivo_PID);
1.
/configure ; make ; make install

Ya tenemos a samba en /usr/local/samba.

1.

Haremos tantos archivos de configuración como servidores distintos queramos. Habrá que tener en cuenta que en cada configuración le tendremos que especificar una IP distinta.

1.

Nos creamos un script para arrancarlo y pararlo (evidentemente, mejorable: por ejemplo, se tendría que poder matar un smbd/nmbd segun su respectivo archivo_PID)

case $1 in
start)
/usr/local/samba/bin/nmbd -D -s /etc/samba/smb-1.conf -l
/var/log/samba-1.log -P nmbd-1
/usr/local/samba/bin/smbd -D -s /etc/samba/smb-1.conf -l
/var/log/samba-1.log -P smbd-1
/usr/local/samba/bin/nmbd -D -s /etc/samba/smb-2.conf -l
/var/log/samba-2.log -P nmbd-2
/usr/local/samba/bin/smbd -D -s /etc/samba/smb-2.conf -l
/var/log/samba-2.log -P smbd-2
/usr/local/samba/bin/nmbd -D -s /etc/samba/smb-3.conf -l
/var/log/samba-3.log -P nmbd-3
/usr/local/samba/bin/smbd -D -s /etc/samba/smb-3.conf -l
/var/log/samba-3.log -P smbd-3
# etc...
;;
stop)
killall smbd
killall nmbd
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
;;
esac
1.

Metemos ese script en /etc/init.d/samba.sh como ejecutable, y ya tá ;)

Jaume Sabater - Ousman - ousaousmanpuntcom




Página creada en: 2004-11-04 11:41:02 +0000
© Copyright 2001, 2002, 2003, 2004, La Espiral, debian-laespiral@lists.debian.org
Permitida la copia y distribución textual, integral, siempre y cuando se mantenga este aviso.