Linux

修復目錄和文件所有權的 Bash 腳本

  • May 30, 2010

我的客戶讓我將一些文件夾部署到他的客戶網站的一堆主目錄中。我使用 Bash 腳本執行此操作,但最終使用了 root 帳戶權限。

如何製作一個 Bash 腳本,獲取 /home/使用者下的每個文件夾(不是隱藏文件或文件夾),獲取該文件夾的使用者和組所有權,然後執行 chown -R {user}.{group} /home /使用者

伺服器執行 CentOS Linux。

我必須在上面給凱爾勃蘭特完整的功勞。因此,如果您喜歡下面的答案,請點擊他文章上的向上三角形以提升他的狀態。

但是,我改進了他的例行程序,並覺得我有責任將其張貼在這裡並將其標記為最終答案。

我在 Kyle 的常式中添加的所有內容是確保我們只接觸主目錄,即其中帶有星號的行。然後,我確保這個主目錄實際上仍然存在。之後,我做 chown 聲明。就像凱爾說的——刪除“迴聲”關鍵字,它實際上會執行任務。然後,我在 chown 上添加了“-R”以使其遞歸工作,以防問題可能深入到一個人的家庭目錄中。

#!/bin/bash

while IFS=':' read -r login pass uid gid uname homedir comment; do
   if [[ "$homedir" = **/home/** ]]; then
       if [ -d "$homedir" ]; then
           echo chown -R $uid:$gid "$homedir";
       fi
   fi
done < /etc/passwd

我認為你問的方式有點倒退。您不想獲取每個文件夾然後找到使用者,而是想要獲取使用者並找到他們的主文件夾。

#!/bin/bash
while IFS=':' read -r login pass uid gid uname homedir comment; do 
   echo chown $uid:$gid "$homedir"; 
done < /etc/passwd

當然,您需要刪除迴聲,並且需要以 root 權限執行它。我也總是推荐一個 while 循環而不是一個 for 循環ls。你可以保存這個循環來做任何事情/etc/passwd

引用自:https://serverfault.com/questions/140528