複数のユーザーホームディレクトリにディレクトリをコピーし、ユーザー/グループの所有権を変更します。

複数のユーザーホームディレクトリにディレクトリをコピーし、ユーザー/グループの所有権を変更します。

私のUbuntuサーバーには約150のシェルアカウントがあります。すべてのユーザー名はプレフィックスu12で始まります。ルートアクセス権があり、「somefiles」というディレクトリをすべてのホームディレクトリにコピーしようとしています。ディレクトリをコピーしたら、ディレクトリのユーザーとグループの所有権をユーザーの所有権に変更する必要があります。ユーザー名、グループ、およびホームディレクトリ名は同じです。これはどのように達成できますか?

答え1

ターゲットユーザーにコピーします。これにより、ターゲットファイルが自動的に生成されます。元のファイルを誰でも読むことができることを確認してください(または少なくともすべての意図したユーザーが読むことができます)。chmodコピーしたファイルを誰もが読み取れないようにするには、後で実行します。

getent passwd |
awk -F : '$1 ~ /^u12/ {print $1}' |
while IFS= read -r user; do
  su "$user" -c 'cp -Rp /original/location/somefiles ~/'
done

答え2

$ basename -a /home/* | xargs -rI{} sudo rsync -a --chown {}:{} somefiles/ /home/{}/

説明する

basename -a /home/*すべてのユーザーのホームディレクトリを選択し、パス名を削除します。

xargs -rI{}標準入力の各項目に対して、次のコマンドを個別に実行して、{}項目のテキスト(この場合はユーザーディレクトリ)を置き換えます。

rsync -a --chown {}:{} somefiles/ /home/{}/ディレクトリをsomefiles/ユーザーのホームディレクトリにコピーし、所有者とグループをユーザー名に置き換えます。

関連情報