Nivel: | medio |
Sistema: | linux |
Arquitectura: | todas |
Distribución: | todas |
Sección: | comunicaciones |
Función: | configuracion |
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.
Nos bajamos las fuentes del samba ( "apt-get source samba" , o a partir de http://www.samba.org).
Editamos el /smbd/server.c de forma que acepte la nueva opción -P
Añadimos lo siguiente en la funcion usage()
printf("\t-P Archivo PID Nombre del archivo PID\n"); |
Añadimos lo siguiente en main()
char archivo_PID[32] = "smbd"; |
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:"))) |
Añadimos lo siguiente en el case de la función main()
case 'P': pstrcpy(archivo_PID,optarg); break; |
Modificamos la siguiente linea de la funcion main()
pidfile_create("smbd"); |
por
pidfile_create(archivo_PID); |
Editamos nmbd/nmbd.c para que también acepte -P
Añadimos lo siguiente en la función usage()
printf("\t-P Archivo PID Nombre del archivo PID\n"); |
Añadimos lo siguiente en la función main()
char archivo_PID[32] = "nmbd"; |
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:"))) |
Añadimos lo siguiente en el case de la función main()
case 'P': pstrcpy(archivo_PID,optarg); break; |
Modificamos la siguiente linea de la función main()
pidfile_create("nmbd"); |
por
pidfile_create(archivo_PID); |
/configure ; make ; make install |
Ya tenemos a samba en /usr/local/samba.
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.
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 |
Metemos ese script en /etc/init.d/samba.sh como ejecutable, y ya tá ;)
Jaume Sabater - Ousman - ous_a_ousman_punt_com
© 2001, La Espiral.