Você pode criar um arquivo csv de seus diretórios iniciais contendo "user: home: uid: gid" assim:
find /home -mindepth 1 -maxdepth 1 -type d -not -name "lost+found*" \
-printf "%f:%p:%U:%G\n" >/tmp/user.txt
Em seguida, recrie os usuários com isso
cat /tmp/user.txt | while IFS=: read -r user home uid gid; do \
echo useradd -d "$home" -u "$uid" -g "$gid" "$user"
done
Remova o echo
se a saída parece correta. Você deve ser capaz de adotar este comando useradd
para suas necessidades e adicionar o comando samba correto ao loop também.