Macintosh
根據第一個的輸出執行兩個命令
我是 unix 命令的新手,但有需要。我有一個混合的 Win/Mac 環境,我使用 Win AD 作為使用者帳戶和 Mac 作為文件儲存。
Mac上有一個命令可以自動為使用者創建主文件夾並在我的情況下設置適當的權限’createhomedir -s’。該命令的輸出是:
creating home directories for (cloud.mc.net.mackillop) created (/Network/Servers/cloud.mc.net.mackillop/data/18goodki/files) created (/Network/Servers/cloud.mc.net.mackillop/data/18langre/files) created (/Network/Servers/cloud.mc.net.mackillop/data/16gibsga/files) created (/Network/Servers/cloud.mc.net.mackillop/data/17gibssa/files) created (/Network/Servers/cloud.mc.net.mackillop/data/99bowmam/files) created (/Network/Servers/cloud.mc.net.mackillop/data/99newtal/files) created (/Network/Servers/cloud.mc.net.mackillop/data/99daypa/files)
然後我還需要對這些新創建的主文件夾設置額外的權限,為自己提供讀/寫訪問權限以及 _www(Apache 網路主機),因為我們使用 OwnCloud.org 為使用者文件提供基於 Web 的雲訪問.
這是我為實現此目的而執行的兩個命令:
sudo chmod -R +ai "_www allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" data sudo chmod -R +ai "ittech allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" data
在所有使用者和子文件夾的整個“數據”文件夾上執行這兩個命令需要很長時間(973 個使用者帳戶!)並且確實降低了伺服器的速度。我想要的只是從第一個命令開始對新創建的使用者執行這兩個命令,以大大減少時間和成本。
我一直在閱讀 grep、awk 等,但不確定如何實現這一點。
所以基本上我想開始
createhomedir -s
執行,然後從該命令的輸出中提取每個使用者名,然後使用這些使用者名執行兩個 chmod 來代替“數據”文件夾(改為 /data/%USERNAME%)。
很簡單……只需將其包裝在以下內容中(警告:我們假設創建位成功,並且 createhomedir 的輸出在 STDOUT 而不是 STDERR 上):
for i in $(createhomedir -s | grep -o 'data/[^\/]*' ) do echo sudo chmod -R +ai "_www allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" $i echo sudo chmod -R +ai "ittech allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" $i done
如果您對命令的合理性感到滿意,請去掉“迴聲”。