将目录复制到多个用户主目录并更改用户/组所有权

将目录复制到多个用户主目录并更改用户/组所有权

在我的 Ubuntu 服务器上大约有 150 个 shell 帐户。所有用户名都以前缀 u12 开头。我具有 root 访问权限,并且正在尝试将名为“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/到用户的主目录,并用用户名替换所有者和组。

相关内容