web-dev-qa-db-ja.com

最初の出力に基づいて2つのコマンドを実行します

UNIXコマンドは初めてですが、必要があります。 Win/Macが混在する環境で、ユーザーアカウントにWin ADを使用し、ファイルストレージとしてMacを使用しています。

私の状況では、ユーザーのホームフォルダーを自動的に作成し、適切なアクセス許可 'createhomedir-s'を設定するコマンドがMacにあります。このコマンドの出力は次のとおりです。

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 Webホスト)を提供します。OwnCloud.orgを使用してユーザーファイルにWebベースのクラウドアクセスを提供します。 。

これを実現するために実行する2つのコマンドは次のとおりです。

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

すべてのユーザーとサブフォルダーの「data」フォルダー全体に対してこれらの2つのコマンドを実行すると、時間がかかり(973ユーザーアカウント!)、サーバーの速度が大幅に低下します。私がやりたいのは、最初のコマンドから新しく作成されたユーザーに対してこれら2つのコマンドを実行するだけで、時間とオーバーヘッドを大幅に削減することです。

私はgrep、awkなどを読んでいますが、これを実現する方法がよくわかりません。

したがって、基本的にはcreatehomedir -sを実行し、このコマンドの出力から各ユーザー名を抽出し、これらのユーザー名を使用して、「data」フォルダーの代わりに2つのchmodを実行します(代わりに/ data /%USERNAME%) )。

2
user36541

簡単です...次のようにラップするだけです(注意:作成ビットが成功し、createhomedirの出力がSTDERRではなくSTDOUTにあると想定しています):

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

コマンドの正気に満足している場合は、「エコー」を取り除きます。

3
tink