從主目錄 UID 還原使用者資料庫

從主目錄 UID 還原使用者資料庫

我問了一個先前關於恢復 RAID 1 分割區的問題,其中成員分割區的 UUID 已全部清零。由於在該線程中沒有收到任何回應,我現在被迫在作業系統分割區上重新安裝 CentOS 並重建系統。

重建的主要任務之一是嘗試還原沒有最近備份的使用者資料庫。我的目標只是透過使用 UID 和用戶名清單上的腳本來重新建立用戶資料庫,以使用相同的密碼建立每個人的帳戶,然後他們可以在登入時更改該密碼。

/home 位於另一個但仍然存在的 raid 陣列上,因此在該分區中我有一份詳盡的用戶列表,並且通過讀取每個用戶目錄的 UID,我還擁有每個用戶的舊 UID。我正在努力解決的是一對腳本。第一個將迭代 /home 並建立一個包含匹配的 UID 和使用者名稱對的文件,然後第二個將使用該輸出檔案在新安裝上建立所有這些帳戶,因此主目錄的 UID 將轉換為目前使用者。它是一個 samba 檔案伺服器,因此在第二個腳本中我也會建立相符的 samba 使用者名稱。

有誰知道已經編寫了用於執行此任務的工具或腳本,這樣我就可以避免重新創建輪子?

謝謝!

答案1

您可以從您的主目錄建立一個包含「user:home:uid:gid」的 csv 文件,如下所示:

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

然後像這樣重新創建用戶

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

echo如果輸出看起來正確,則刪除。您應該能夠useradd根據您的需求採用此命令,並將正確的 samba 命令新增至循環中。

相關內容