現在、内部のSubversionリポジトリをホストしているLinuxボックスがあります。このリポジトリへのアクセスはsvn + sshを介して行われ、認証はマシン上のユーザーアカウントに対して行われます。私は最近、光沢のある新しいボックス(Linuxにもインストールされています)を取得し、Subversionリポジトリをそのボックスに移行したいと考えています(RAID 1 + 0を使用して構成された6つのディスクにまたがるスペースが多いため)。
リポジトリの現在のユーザーへの影響を最小限に抑えるために、現在のマシンから新しいマシンにすべてのユーザー、グループ、およびファイル情報を転送するにはどうすればよいですか?私の現在の考えは、/ etc/passwdファイルと/ etc/groupファイル(およびシャドウファイル?)から関連するエントリをコピーし、/ home内のユーザーフォルダをコピーすることです。足りないものはありますか?
編集:追加情報。古いボックスはUbuntu8、新しいボックスはUbuntu9です。約12のユーザーと12のカスタムグループがあります。
従来のLinuxユーザー管理には、次のファイル/ディレクトリが必要です。
/ etc/passwd-各ユーザーアカウントのさまざまな情報が含まれています
/ etc/shadow-ユーザーのアカウントの暗号化されたパスワード情報と、オプションのパスワードエージング情報が含まれます。
/ etc/group-ユーザーが属するグループを定義します
/ etc/gshadow-グループシャドウファイル(グループの暗号化されたパスワードが含まれています)
/ var/pool/mail-通常、ユーザーの電子メールはここに保存されます。
/ home-すべてのユーザーデータがここに保存されます。
上記のすべてのファイルとディレクトリを古いサーバーから新しいLinuxサーバーにバックアップする必要があります。
何人のユーザーについて話しているのですか?
数が少ない場合は、新しいシステムで「useradd」を実行する方がはるかに安全です。移行するユーザーごとに同じuidとgidを指定してください。
次に、同じマシンで同じuid/gidを使用してアカウントを作成したら、古いマシンでのログインを無効にし、rsyncを使用してホームディレクトリに転送します。残りの唯一のステップは、移行後にパスワードをリセットすることです。
/ etc/passwdや/ etc/groupのようなものをコピーする際の問題は、失敗した場合、自分(またはroot)が新しいシステムにログインできないようにすることです。さらに、UNIXフレーバーによって、これらのファイルの解釈が異なる可能性があるため、注意が必要です。 1つの小さな伝票で、ユーザー「ゲスト」またはその他のセキュリティホールとしてログインを開くことができます。
非常に速く何かを書いた非常に汚いこれのために。 CentOSサーバーの移行に役立ちましたが、最近のほとんどのLinuxマシンで機能するはずです。ニーズに合わせて
もちろん、ご自身の責任で使用してください。
transferuser.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