Obs: La instalación de los paquetes se hara bajando los paquetes precompilados ya que no hay binarios disponibles
para las versiones de pdb.
Caracteristicas del SO.
Linux Ubuntu 8.1 Intrepid Main
version del kernel 2.6.27-7-generic
1ro- Checkear los apt-sources list en el archivo /etc/apt/sources.list y descomentar todo lo que empiece con deb.
2- Ejecutar apt-get update.
3- Crear un directorio en /root llamado sources para colocar ahi el codigo fuente.
su
Contraseña:
mkdir sources
cd sources
Instalamos las librerias necesarias para compilación de paquetes C y para soporte para mysql del pdb.
4-apt-get install buid-essential autoconf libmysql++-dev subversion
Instalamos(Bajamos) las fuentes oficiales del samba, esta es importante para dos cosas.
-Compilar el modulo de acceso a la base de datos (pdb)
-Instalar despues este samba para que las versiones sean correlativas.
5-apt-get source samba
Esperamos un ratito bajara unos 23 mb aprox.
5.1-luego cd samba-3.2.3
5.2-./autogen
5.3- ./configure
5.4- make proto
5.5- SAMBADIR=/root/sources/samba-3.2.3/source
6- Bajamos el souce del pdb
wget http://ufpr.dl.sourceforge.net/sourceforge/pdbsql/pdbsql_32-0.4-rc1.tar.bz2
6.1- tar -xvf pdb....
6.2 cd pdb....
6.3- ./autogen.sh
6.4- ./configure --with-samba-dir=$SAMBADIR
6.5- PDBDIR=/root/sources/pdb...
Recordemos que $SAMBADIR es una variable que declaramos y que apunta al source de samba, ver apartado 5.5.
7. Volvamos al source de samba para terminar la instalación
7.1-cd $SAMBADIR
7.2-make
7.3-make install
Aca nos instalaran todos los paquetes en /usr/local/samba, recordemos que /usr/local es el directorio de facto para paquetes compilados
8. Regresemos al directorio del pdb para finalizar la compilación
8.1 cd $PDBDIR
-solo resta hacer make y make install pero hay un pequeño traspie.
-al compilar pide tres archivos que le falta al $SAMBADIR estos son talloc.h, util_tdb.h, tdb.h que por algun motivo el samba source no los trae, pero no nos deseperemos.
8.1-regresemos al samba source
8.2-cd $SAMBADIR
8.3-creamos una carpeta samba-svn
mkdir samba-svn
cd samba-svn
8.4-recurramos a la ultima version del samba source ejecutando la sgte linea, este si tiene los tres archivos que nos falta para compilar exitosamente el tdb
svn co svn://svnanon.samba.org/samba/branches/SAMBA_3_0 samba_3.
Esperamos un ratito, al finalizar nos crea una carpeta samba_3.
ejecutamos las sgtes tres lineas para copiar los tres archivos faltantes de nuestro pdb
cp `find /$SAMBADIR/samba-svn -iname talloc.h` /$SAMBADIR/source
cp `find /$SAMBADIR/samba-svn -iname util_tdb.h` /$SAMBADIR/source
cp `find /$SAMBADIR/samba-svn -iname tdb.h` /$SAMBADIR/source
luego repetimos el apartado 8 hasta 8.1, de ahi hacemos lo sgte
-make
-make install
Al final veremos que compila y copia dos archivos, el mysql.so y el multi.so y lo copia a /usr/local/samba/lib/pdb
Ahora configuremos el samba
nano /usr/local/samba/lib/smb.conf
[global]
workgroup = TESTGROUP
netbios name = TESTGROUP
security = user
obey pam restrictions = Yes
encrypt passwords = yes
update encrypted = no
#client lanman auth = yes
#client plaintext auth = yes
#Esta es la parte que nos interesa
#Explicaremos esto en un apartado exclusivo
passdb backend = mysql:mysql
mysql:mysql host = localhost
mysql:mysql user = samba
mysql:mysql password =
mysql:mysql database = samba
mysql:fullname column = nt_fullname:
mysql:domain column = 'TESTGROUP':
mysql:lanman pass column = NULL:
mysql:nt pass column = NULL:
mysql:plain pass column = plain_pw:
mysql:unknown_3 column = NULL
mysql:sid column = user_sid
#security = user
#encrypt passwords = yes
smb passwd file = /etc/samba/private/smbpasswd
Ahora le toca a la BBDD
mysql -u root -p
Password:
mysql-> create database samba;
mysql-> GRANT ALL ON samba.* TO ''@'localhost' IDENTIFIED BY '';
mysql-> use samba;
mysql-> CREATE TABLE user (
logon_time int(9) default NULL,
logoff_time int(9) default NULL,
kickoff_time int(9) default NULL,
pass_last_set_time int(9) default NULL,
pass_can_change_time int(9) default '0',
pass_must_change_time int(9) default '2147483647',
username varchar(255) default NULL,
domain varchar(255) default NULL,
nt_username varchar(255) default NULL,
nt_fullname varchar(255) default NULL,
home_dir varchar(255) default NULL,
dir_drive varchar(4) default NULL,
logon_script varchar(255) default NULL,
profile_path varchar(255) default NULL,
acct_desc varchar(255) default NULL,
workstations varchar(255) default NULL,
unknown_str varchar(255) default NULL,
munged_dial varchar(255) default NULL,
uid int(9) NOT NULL PRIMARY KEY auto_increment,
gid int(9) default NULL,
user_sid varchar(255) default NULL,
group_sid varchar(255) default NULL,
lm_pw varchar(255) default NULL,
nt_pw varchar(255) default NULL,
acct_ctrl int(9) default '528',
logon_divs int(9) default '168',
hours_len int(9) default '21',
unknown_6 int(9) default "1260",
bad_password_count int(9) default NULL,
logon_count int(9) default '0',
logon_hours varchar(42) default NULL,
password_history text default NULL,
plain_pw int(10) NOT NULL,
KEY username(username),
);
CREATE TABLE groups (
groupname varchar(255) default NULL
);
quit
10- Ahora arranquemos el samba.
en un archivo startsamba.sh
escribamos
#!/bin/sh
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/winbindd -B
/usr/local/samba/sbin/nmbd -D
cerramos y le damos +w para que sea ejecutable
abrimos el archivo /etc/inetd.conf que es el capo en conocer puertos y conexiones y le agregamos
netbios-ssn stream tcp nowait root /usr/local/samba/sbin/smbd smbd
netbios-ns dgram udp wait root /usr/local/samba/sbin/nmbd nmbd
cerramos y ejecutamos
./startsamba
comprobamos su ejecución de dos formas
1- ps -aux | grep smbd nmbd
2- more /usr/local/samba/var/log.smbd
el log.smbd tiene que arrojar esto
Copyright Andrew Tridgell and the Samba Team 1992-2008
[2009/05/24 01:04:11, 1] pdb_mysql.c:mysqlsam_init(607)
Connecting to database server, host: localhost, user: samba, database: samba, port: 3306
12- Probamos
cd /usr/local/samba/bin/
./findsmb
root@pablo-desktop:/usr/local/samba/bin# ./findsmb
*=DMB
+=LMB
IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION
---------------------------------------------------------------------
10.154.50.2 pablo-desktop.local+[TESTGROUP] [Unix] [Samba 3.2.3]
Agregamos un usuario via consola
root@pablo-desktop:/usr/local/samba/bin# ./smbpasswd -a pablo
Connecting to database server, host: localhost, user: samba, database: samba, port: 3306
Connecting to database server, host: localhost, user: samba, database: samba, port: 3306
new password:
retype new password:
Unix username: juanperez
NT username:
Account Flags: [U ]
User SID: S-1-5-21-717355791-1739714386-2837643533-3002
Primary Group SID: S-1-5-21-717355791-1739714386-2837643533-513
Full Name:
Home Directory: \\testgroup\juanperez
HomeDir Drive:
Logon Script:
Profile Path: \\testgroup\juanperez\profile
Domain: TESTGROUP
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: dom, 24 may 2009 00:43:13 PYT
Password can change: dom, 24 may 2009 00:43:13 PYT
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
#Aca hay un detalle , que mas que detalle es un error de los diseñadores y es bastante discutido en los foros
al poner el password se supone que este debera ser guardado en la BBDD de forma encriptada en MD5-hash, pero solo guarda
el numero 16, obiamente al autenticar fallara, asi que modifique la forma que le pasa el samba a la BBDD el password y lo puse en plaintex
en el smb.conf fijense
mysql:lanman pass column = NULL:
mysql:nt pass column = NULL:
mysql:plain pass column = plain_pw:
las columnas lanman y nt solo aceptan encriptados, creando una columna adicional llamada plain_pw y colocandola a esta el password del usuario correspondiente la autenticación funciona.
root@pablo-desktop:/usr/local/samba/bin# ./smbclient -L localhost -U pablo
Enter pablo's password:
Domain=[TESTGROUP] OS=[Unix] Server=[Samba 3.2.3]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba 3.2.3)
Domain=[TESTGROUP] OS=[Unix] Server=[Samba 3.2.3]
Server Comment
--------- -------
TESTGROUP Samba 3.2.3
Workgroup Master
--------- -------
TESTGROUP TESTGROUP
root@pablo-desktop:/usr/local/samba/bin#
Bueno es todo, que falta por hacer;
Realizar una tabla mas personalizada y probar a piacere el smb.conf de acuerdo a esa tabla,
Guardar el password en encriptacion md5 en la BBDD, porque guardar en texto plano es un riesgo de seguridad.
Hacer un codigo php capaz de modificar crear usuarios etc.















