Users

將目錄複製到多個使用者主目錄並更改使用者/組所有權

  • December 25, 2021

在我的 Ubuntu 伺服器上,大約有 150 個 shell 帳戶。所有使用者名都以前綴 u12.. 開頭。我有 root 訪問權限,我正在嘗試將名為“somefiles”的目錄複製到所有主目錄。複製目錄後,目錄的使用者和組所有權應更改為使用者的。使用者名、組和主目錄名稱相同。如何才能做到這一點?

以目標使用者身份進行複制。這將自動生成目標文件。確保原始文件是世界可讀的(或至少所有目標使用者都可讀)。chmod如果您不希望複製的文件是世界可讀的,請稍後執行。

getent passwd |
awk -F : '$1 ~ /^u12/ {print $1}' |
while IFS= read -r user; do
 su "$user" -c 'cp -Rp /original/location/somefiles ~/'
done
$ basename -a /home/* | xargs -rI{} sudo rsync -a --chown {}:{} somefiles/ /home/{}/

解釋

basename -a /home/*選擇所有使用者的主目錄並去除他們的路徑名稱。

xargs -rI{}為標準輸入上的每個條目分別執行以下命令,並替換{}為條目的文本(在我們的例子中是使用者的目錄)。

rsync -a --chown {}:{} somefiles/ /home/{}/將您的目錄複製somefiles/到使用者的主目錄,並將所有者和組替換為使用者名。

引用自:https://unix.stackexchange.com/questions/48767