ホームディレクトリに「その他」権限があることを確認する方法

ホームディレクトリに「その他」権限があることを確認する方法

今は毎日実行されるスクリプトがあり、ホームディレクトリをchmodsし、ディレクトリからすべての「その他」権限と「グループ」書き込み権限を削除します。下記をご覧ください。

#Removing all other permissions on all home directories and write from group

ls /home | sed 's/ //g' |
while read i; do
  chmod -R o-rwx /home/$i
  chmod -R g-w /home/$i
done

これはうまくいきます。ただし、必要があるかどうかにかかわらず、毎回この操作を実行するよりも変更する必要があるファイルがあることを確認してから、そのファイルに対してアクションを実行するスクリプトを好みます。

私はすべてをステートメント内のサブ関数に入れることができると仮定していますが、そのステートメント内でどのテストを実行するのかわかりifません。if

ディレクトリを変更する必要があるかどうかをテストする方法は?

ベストアンサー1

検索を使用する:

find /home/* -type d -maxdepth 0 -perm /g+w,o+rwx -exec chmod g-w,o-rwx '{}' +

この操作を再帰的に実行するには(-R例で使用されているように)、次のようにします。

find /home/* -perm /g+w,o+rwx -exec chmod g-w,o-rwx '{}' +

編集する:

検索オプションの簡単な説明ですman find。詳細については、次を参照してください。

-permwith は/mode任意のビットを設定することを意味します。

古典的な-exec構文はです-exec command '{}' ';'。これらの文字は{}ファイル名に置き換えられ、引用符はシェルからそれらを保護するためのものです。ほとんどのシェルではこれは必要ありませんが、問題にはなりません。';'はコマンドの終わりです。ほとんどのシェルではこの引用符が必要ですが、代替形式はです\;。欠点は、chmodが変更された各ファイルに対して一度呼び出されることです。これは、終了コマンドの代替形式を使用して回避できます+。このフォームは複数の名前でexecを呼び出します。これは同様の効果を持ち、xargs呼び出しコストも節約しますxargs

おすすめ記事