
現在、社内の Subversion リポジトリをホストしている Linux ボックスがあります。このリポジトリへのアクセスは svn+ssh 経由で行われ、マシン上のユーザー アカウントに対して認証が行われます。最近、新しいボックス (Linux もインストール済み) を入手したので、Subversion リポジトリをそのボックスに移行したいと考えています (RAID 1+0 を使用して構成された 6 つのディスクにより多くのスペースがあるため)。
リポジトリの現在のユーザーへの影響を最小限に抑えるために、現在のマシンから新しいマシンにすべてのユーザー、グループ、およびファイル情報を転送するにはどうすればよいでしょうか? 現在考えているのは、/etc/passwd および /etc/group ファイル (およびシャドウ ファイル?) から関連するエントリをコピーし、/home のユーザー フォルダーをコピーすることです。何か見落としている点はありますか?
編集: 追加情報。古いボックスは Ubuntu 8、新しいボックスは Ubuntu 9 です。約 12 人のユーザーと 12 のカスタム グループがあります。
答え1
従来の Linux ユーザー管理には、次のファイル/ディレクトリが必要です。
/etc/passwd- 各ユーザーアカウントのさまざまな情報が含まれています
/etc/シャドウ- ユーザーのアカウントの暗号化されたパスワード情報と、オプションでパスワード有効期限情報が含まれます。
/etc/グループ- ユーザーが所属するグループを定義します
/etc/gshadow- グループ シャドウ ファイル (グループの暗号化されたパスワードが含まれています)
/var/スプール/メール- 通常、ユーザーのメールはここに保存されます。
/家- すべてのユーザーデータはここに保存されます。
上記のすべてのファイルとディレクトリを古いサーバーから新しい Linux サーバーにバックアップする必要があります。
答え2
何人のユーザーについて話しているのでしょうか?
少数であれば、移行する各ユーザーに同じ uid と gid を指定して、新しいシステムで「useradd」を実行する方がはるかに安全です。
次に、新しいマシンに同じ uid/gid を持つアカウントが作成されたら、古いマシンでのログインを無効にし、rsync を使用してホーム ディレクトリを転送します。移行後に残っている手順は、パスワードをリセットすることだけです。
/etc/passwd や /etc/group などのコピーの問題は、間違えると、自分自身 (または root) が新しいシステムにログインできなくなることです。さらに、UNIX の種類によってこれらのファイルの解釈が異なる場合があるため、十分に注意する必要があります。ちょっとしたミスで、ユーザー「guest」としてログインできてしまうなど、さまざまなセキュリティ ホールが発生する可能性があります。
答え3
非常に素早く何かを書いてとても汚いこのために。CentOSサーバーの移行に役立ちましたが、ほとんどの最新のLinuxマシンで機能するはずです。ニーズに合わせて採用してください。
当然ですが、自己責任でご使用ください。
転送ユーザー.sh
#!/bin/sh
# Transfer user from old passwd / shadow to existing system. Create homedir if
# necessary
# configurables
OLDETC=/path/to/extract/old/etc
# end configurables
if [ $# -ne 1 ]; then
echo "Usage: $0 <username>"
exit 1
fi
NEWUSER=$1
OLDPWD=${OLDETC}/passwd
OLDSHDW=${OLDETC}/shadow
OLDGRP=${OLDETC}/group
OLDGSHDW=${OLDETC}/gshadow
id $NEWUSER > /dev/null 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "ERROR: user $NEWUSER already exist on this system"
exit 2
fi
grep -q "${NEWUSER}:" $OLDPWD
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "ERROR: user $NEWUSER does not exist in $OLDPWD"
exit 3
fi
# all seems good, lets blindly transfer user
grep "${NEWUSER}:" $OLDPWD >> /etc/passwd
grep "${NEWUSER}:" $OLDSHDW >> /etc/shadow
grep "${NEWUSER}:" $OLDGRP >> /etc/group
grep "${NEWUSER}:" $OLDGSHDW >> /etc/gshadow
/usr/sbin/mkhomedir_helper ${NEWUSER}
# check consistency:
pwck -r
grpck -r