Benutzerdatenbank aus den UIDs des Home-Verzeichnisses wiederherstellen

Benutzerdatenbank aus den UIDs des Home-Verzeichnisses wiederherstellen

Ich fragte einenFrage zuvor zur Wiederherstellung einer RAID 1-Partition, bei der die UUIDs der Mitgliedspartitionen alle auf Null gesetzt wurden. Da ich in diesem Thread keine Antwort erhalten habe, bin ich nun gezwungen, CentOS auf der OS-Partition neu zu installieren und das System neu aufzubauen.

Eine der größten Aufgaben beim Neuaufbau wird der Versuch sein, die Benutzerdatenbank wiederherzustellen, für die es kein aktuelles Backup gibt. Mein Ziel ist es einfach, die Benutzerdatenbank neu zu erstellen, indem ich ein Skript auf einer Liste von UIDs und Benutzernamen verwende, um für jeden ein Konto mit demselben Passwort zu erstellen, das dann beim Anmelden geändert werden kann.

/home befand sich auf einem anderen und noch existierenden RAID-Array, sodass ich in dieser Partition eine vollständige Liste der Benutzer habe und durch Lesen der UID des Verzeichnisses jedes Benutzers auch die alte UID jedes Benutzers habe. Womit ich zu kämpfen habe, sind zwei Skripte. Das erste iteriert /home und erstellt eine Datei mit übereinstimmenden Paaren aus UIDs und Benutzernamen, und das zweite verwendet diese Ausgabedatei, um alle diese Konten bei der neuen Installation zu erstellen, sodass die UIDs der Home-Verzeichnisse dann in einen aktuellen Benutzer übersetzt werden. Es handelt sich um einen Samba-Dateiserver, sodass ich während des zweiten Skripts auch den passenden Samba-Benutzernamen erstelle.

Kennt jemand ein bereits geschriebenes Tool oder Skript für diese Aufgabe, sodass ich das Rad nicht neu erfinden muss?

Danke!

Antwort1

Sie könnten aus Ihren Home-Verzeichnissen eine CSV-Datei mit „user:home:uid:gid“ wie folgt erstellen:

find /home -mindepth 1 -maxdepth 1 -type d -not -name "lost+found*" \
  -printf "%f:%p:%U:%G\n" >/tmp/user.txt

Dann erstellen Sie die Benutzer neu mit wie folgt

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

Entfernen Sie das echo, wenn die Ausgabe korrekt aussieht. Sie sollten in der Lage sein, diesen Befehl an Ihre Bedürfnisse anzupassen useraddund auch den richtigen Samba-Befehl zur Schleife hinzuzufügen.

verwandte Informationen