Linux

腳本在所有文件夾上執行 chown 並將所有者設置為文件夾名稱減去尾隨 /

  • October 20, 2012

一些笨拙的跑了chown -R username。在我們的網路伺服器上的 /home 文件夾中,認為他在所需的文件夾中。不用說,伺服器拋出了很多 wobbelys。

我們有 200 多個網站,我不想將它們全部單獨列出,所以我正在嘗試製作一個腳本,將所有文件夾的所有者更改為文件夾名稱,不帶尾隨 /。

到目前為止,這就是我所擁有的,一旦我可以刪除 / 就可以了,但我還想檢查文件是否包含 . 在其中,如果沒有則執行命令,否則轉到下一個。

#!/bin/bash
for f in *

do

   test=$f;
   #manipluate the test variable
   chown -R $test $f

done

任何幫助都會很棒!

提前致謝!

假設/home/ 目錄下的所有文件夾都代表使用者名,可以使用:

for dir in /home/*/; do
   # strip trailing slash
   homedir="${dir%/}"
   # strip all chars up to and including the last slash
   username="${homedir##*/}"

   case $username in
   *.*) continue ;; # skip name with a dot in it
   esac

   chown -R "$username" "$dir"
done

我建議之前執行一個測試循環,檢查使用者名是否真的與主目錄匹配。

此 AWK 命令檢索給定使用者的主目錄。

awk -F: -v user="$username" '{if($1 == user){print $6}}' < /etc/passwd

對照現有的主目錄檢查此結果是讀者的練習。

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