在我的 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/
到用户的主目录,并用用户名替换所有者和组。