miércoles, 5 de marzo de 2008

Conversión de smbpaswd a tdbsam

En este artículo veremos la forma de modificar la configuración de un servidor Samba para que las cuentas de los usuarios pasen de almacenarse en el formato smbpasswd (específicamente en el archivo /etc/samba/smbpasswd, por ejemplo), al formato tdbsam.

Esta nota nace como respuesta a algunas necesidades planteadas por usuarios de Samba 3 que, luego de haber estado trabajando un buen tiempo con este producto, descubrieron que un error en la configuración del archivo smb.conf implicó que las cuentas de los usuarios se almacenen en el archivo smbpasswd, en lugar de en la base de datos tdbsam, como es conveniente.

En uno de los casos particulares, se produjo el error de, en lugar de agregar, en el archivo de configuración smb.conf la entrada "passdb backend = tdbsam", se había agregado la entrada "passwd backend = tdbsam", con lo cual, al ejecutar el comando smbstatus, aparecía el mensaje:

Unknown parameter encountered: "passwd backend"
Ignoring unknown parameter "passwd backend"

Como no se había advertido dicho error, se agregaron usuarios, los que fueron depositados en el archivo smbpasswd, en lugar de en la base tdbsam, como se deseaba.

El error lo pude reproducir, y encontré que mi usuario, en la base smbpasswd, aparecía de la siguiente forma:

hecsa:1002:ABBF1A51422B62ABB14FD58A657A9CA6:D4356FE201D376F0FEE4B2A355BA1FB1:[U
         ]:LCT-47CF4463:

Como dato anecdótico, veamos que el UID que aparece en este archivo es el mismo que aparece en /etc/passwd para este usuario:

hecsa:x:1002:1002::/home/hecsa:/bin/sh

Ahora bien, manos a la obra! Lo que tenemos que hacer es usar el comando pdbedit, con las opciones de exportación e importación de contenidos, de manera que el usuario "hecsa" aparezca en la base de datos tdbsam.

Cambiaremos la entrada en el archivo /etc/samba/smb.conf, pasando de ser "passwd backend = tdbsam" a ser "passdb backend = tdbsam", bajaremos y subiremos el servicio de samba con el comando "/etc/init.d/samba stop; /etc/init.d/samba start".

Entonces ejecutaremos:

servidor:/etc/samba# pdbedit -i smbpasswd -e tdbsam
Importing accout for hecsa...ok

...y listo!

Ya podemos verificar a nuestro usuario, que ahora se encuentra en la base de datos tdbsam.