
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.