Linux
修復目錄和文件所有權的 Bash 腳本
我的客戶讓我將一些文件夾部署到他的客戶網站的一堆主目錄中。我使用 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
。