Recuperar banco de dados de usuários de UIDs do diretório inicial

Recuperar banco de dados de usuários de UIDs do diretório inicial

Eu perguntei a umpergunta anteriormente sobre a recuperação de uma partição RAID 1 onde os UUIDs das partições membros foram todos zerados. Não tendo recebido resposta nesse tópico, agora sou forçado a reinstalar o CentOS na partição do sistema operacional e reconstruir o sistema.

Uma das grandes tarefas da reconstrução será tentar recuperar o banco de dados do usuário, para o qual não há backup recente. Meu objetivo é simplesmente recriar o banco de dados de usuários usando um script em uma lista de UIDs e nomes de usuários para criar contas de todos com a mesma senha, que eles podem alterar no login.

/home estava em uma matriz de ataque diferente e ainda existente, portanto, nessa partição, tenho uma lista exaustiva de usuários e, ao ler o UID do diretório de cada usuário, também tenho o UID antigo de cada usuário. O que estou enfrentando é um par de scripts. O primeiro irá iterar /home e criar um arquivo com pares correspondentes de UIDs e nome de usuário, e então o segundo usará esse arquivo de saída para criar todas essas contas na nova instalação, de modo que os UIDs dos diretórios iniciais serão então traduzidos para um usuário atual. É um servidor de arquivos samba, então durante o segundo script também criarei o nome de usuário samba correspondente.

Alguém conhece uma ferramenta ou script já escrito para fazer esta tarefa, para que eu possa evitar a recriação da roda?

Obrigado!

Responder1

Você pode criar um arquivo csv a partir 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 assim

cat /tmp/user.txt | while IFS=: read -r user home uid gid; do \
  echo useradd -d "$home" -u "$uid" -g "$gid" "$user"
done

Remova a echosaída if parece correta. Você deve ser capaz de adotar este useraddcomando de acordo com suas necessidades e também adicionar o comando samba correto ao loop.

informação relacionada