Samba: como copiar /etc/passwd para senhas do samba em novas versões do servidor Ubuntu

Samba: como copiar /etc/passwd para senhas do samba em novas versões do servidor Ubuntu

Estou escrevendo um script para copiar as senhas dos usuários do Linux para o samba no servidor Ubuntu 10.04. Estou usando o samba 3 com backend tdbsam.

1) Como (se possível) copio contas (usuário/senha) do Linux para o samba usando um script de shell?

2) Como descubro no meu script se determinado usuário está no banco de dados de usuários do samba e possui senha e está ativado? Preciso disso porque meu script é executado com mais frequência e nas execuções subsequentes eu precisaria descobrir se o usuário já está presente. Eu não copiaria ou definiria senha ou ativaria se fosse desnecessário.

Este é o cabeçalho da minha configuração:

[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

Responder1

O arquivo de senha do samba e os arquivos shadow do sistema possuem esquemas de hash diferentes. Acredito que nenhum deles seja reversível, então não há como converter entre um e outro. A única forma de sincronizar as senhas é no momento em que elas são alteradas, atualizando os dois arquivos simultaneamente a partir da entrada do usuário. Esse é o objetivo da configuração de sincronização de senha unix.

Responder2

Decidi voltar para o smbpasswd por enquanto. E decidi não sincronizar senhas. Preciso de uma solução simples que funcione aqui agora.

Este é o chefe da configuração agora:

[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

E este é o script que executarei na instalação inicial e de tempos em tempos:

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

Ainda estou curioso para saber a resposta da minha pergunta acima para futuras instalações e aceitarei a resposta que melhor se adequar.

informação relacionada