近頃コンテンツ移行の案件を担当することが多く、その中で所有ユーザ、グループ移行を
簡単に行う方法を発見したので共有したいと思います。
コンテンツを移行すると移行したファイルの
所有ユーザ、グループも移動先のサーバであわせる必要があると思います。
移行前、移行先でユーザのUIDやGIDが重複している場合は
対象のデータを移動してその後、所有ユーザ、グループの作成
移行前の権限にあわせるよう、chownコマンドで調整していましたが
以下の方法をとることで簡単に移行できることが分かりました。
▼結論
事前に移行前のユーザ、グループを移行先のサーバに作成しておくことで
UID、GIDが異なっていてもくユーザ名、グループ名が優先して適応される
▼検証内容
サーバA → サーバBへデータ移行
移行先サーバにファイルの所有ユーザ、グループが存在している状態と
存在していない状態でデータ移行を実施
▼作業内容
検証1 ユーザが重複して移行先に移行元のユーザが存在しない場合
アカウント作成
・サーバAにてユーザを作成
ID:A_3000
UID:3000
GID:3000
1 2 3 4 |
# groupadd -g 3000 A_3000 # useradd -u 3000 -g 3000 A_3000 # id A_3000 uid=3000(A_3000) gid=3000(A_3000) groups=3000(A_3000) |
・サーバBにてユーザを作成
ID:B_3000
UID:3000
GID:3000
1 2 3 4 |
# groupadd -g 3000 B_3000 # useradd -u 3000 -g 3000 B_3000 # id B_3000 uid=3000(B_3000) gid=3000(B_3000) groups=3000(B_3000) |
データ移行
・サーバA
#移行対象ファイルを準備
1 2 |
# ls -ld test -rw-r--r-- 1 A_3000 A_3000 0 Jun 30 05:15 test |
サーバA → サーバBへデータ移行
1 |
# rsync -avz --delete -e ssh /home/A_3000/rsync/* 10.0.10.23:/home/B_3000/rsync/ |
サーバBにて移行後のファイル確認
1 2 |
# ls -ld test -rw-r--r-- 1 B_3000 B_3000 0 Jun 30 05:15 test |
UID,GIDベースで移行が行われる。
サーバAではUID,GID3000はA_3000だったが
サーバBではUID,GID3000はB_3000なので
所有ユーザ、グループはB_3000になってしまう
しかし、事前にUID、GIDが異なっていても移行元の
ユーザを作成しておくことで所有ユーザは合わせることができる
検証2:UID,GIDは異なるが移行前と同名のユーザ、グループを作成し
再度データ移行を実施
#サーバBにてUID,GIDが異なるA_3000を作成
ID:A_3000
UID:4000
GID:4000
1 2 3 4 |
# groupadd -g 4000 A_3000 # useradd -u 4000 -g 4000 A_3000 # id A_3000 uid=4000(A_3000) gid=4000(A_3000) groups=4000(A_3000) |
#再度データ移行を実施
1 |
rsync -avz --delete -e ssh /home/A_3000/rsync/* 10.0.10.23:/home/B_3000/rsync/ |
#所有者はどちらになるか確認を行う
1 2 |
# ls -ld test -rw-r--r-- 1 A_3000 A_3000 0 Jun 30 05:15 test |
▼まとめ
UID,GIDが異なっていても以下のように事前にユーザとグループを作成しておけば
簡単に所有ユーザ、グループをあわせることができます。
1.移行対象データの所有ユーザ、グループ確認
※treeコマンドなどが調査に便利です。
2.移行先にユーザを作成
3.該当データを移行
以上です。
投稿者プロフィール
最新の投稿
- AWS2021年12月2日AWS Graviton3 プロセッサを搭載した EC2 C7g インスタンスが発表されました。
- セキュリティ2021年7月14日ゼロデイ攻撃とは
- セキュリティ2021年7月14日マルウェアとは
- WAF2021年7月13日クロスサイトスクリプティングとは?