
私は尋ねた以前、メンバーパーティションのUUIDがすべてゼロになったRAID 1パーティションの回復について質問がありました。そのスレッドで応答が得られなかったため、OS パーティションに CentOS を再インストールし、システムを再構築せざるを得なくなりました。
再構築の大きなタスクの 1 つは、最近のバックアップがないユーザー データベースを回復することです。私の目標は、UID とユーザー名のリストにスクリプトを使用してユーザー データベースを再作成し、ログイン時に変更できる同じパスワードを持つすべてのユーザーのアカウントを作成することです。
/home は別の、まだ存在する RAID アレイ上にありました。そのため、そのパーティションには完全なユーザー リストがあり、各ユーザーのディレクトリの UID を読み取ることで、各ユーザーの古い UID も取得できます。私が苦労しているのは、2 つのスクリプトです。最初のスクリプトは /home を反復処理し、一致する UID とユーザー名のペアを含むファイルを作成します。2 番目のスクリプトは、その出力ファイルを使用して、新しいインストールですべてのアカウントを作成します。これにより、ホーム ディレクトリの UID が現在のユーザーに変換されます。これは samba ファイル サーバーなので、2 番目のスクリプト中に、一致する 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
出力が正しい場合は削除します。このコマンドをニーズに合わせて採用し、適切な samba コマンドをループに追加することもecho
できます。useradd