
Estoy escribiendo un script para copiar las contraseñas de los usuarios de Linux a samba en el servidor ubuntu 10.04. Estoy usando samba 3 con backend tdbsam.
1) ¿Cómo copio (si es posible) cuentas (usuario/contraseña) de Linux a Samba usando un script de Shell?
2) ¿Cómo puedo saber en mi script si un determinado usuario está en la base de datos de usuario de samba y tiene una contraseña y está activada? Necesito esto porque mi script se ejecuta con más frecuencia y en ejecuciones posteriores necesitaría averiguar si el usuario ya está presente. No copiaría ni establecería una contraseña ni la activaría si no fuera necesario.
Este es el jefe de mi configuración:
[global]
workgroup = WORKGROUP
server string = %h server
security = SHARE
obey pam restrictions = Yes
pam password change = no
passdb backend = tdbsam
unix password sync = no
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
panic action = /usr/share/samba/panic-action %d
encrypt passwords = true
invalid users = root
hosts allow = 192.168.0.1/24
Respuesta1
El archivo de contraseña de samba y los archivos ocultos de su sistema tienen diferentes esquemas de hash. Creo que ninguno de ellos es reversible, por lo que no hay forma de convertir entre uno y otro. La única forma de sincronizar las contraseñas es en el momento en que se cambian actualizando ambos archivos simultáneamente desde la entrada del usuario. Ese es el objetivo de la configuración de sincronización de contraseñas de Unix.
Respuesta2
Decidí volver a smbpasswd por ahora. Y decidí no sincronizar contraseñas. Necesito soluciones simples que funcionen aquí ahora.
Este es el jefe de la configuración ahora:
[global]
workgroup = WORKGROUP
security = SHARE
passdb backend = smbpasswd:/etc/samba/smbpasswd
unix password sync = no
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
Y este es el script que ejecutaré en la instalación inicial y de vez en cuando:
USER=samwin
cat /etc/samba/smbpasswd | grep -e "^$USER:"
if [ $? -ne 0 ]; then
echo "Adding Samba user USER:"
smbpasswd -a $USER
else
echo "Samba user $USER already present."
fi
Todavía tengo curiosidad por la respuesta a mi pregunta anterior para futuras instalaciones y aceptaré la respuesta que mejor se adapte.