Samba: cómo copiar /etc/passwd a contraseñas de samba en nuevas versiones del servidor ubuntu

Samba: cómo copiar /etc/passwd a contraseñas de samba en nuevas versiones del servidor ubuntu

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.

información relacionada