特定の名前のフォルダが作成されないようにできますか?

特定の名前のフォルダが作成されないようにできますか?

私はLAMP Webアプリケーションを開発しており、どこかにshopサイトルートにあるフォルダを作成し続けるスケジュールされたプロセスがあります。これが発生するたびにアプリケーションの書き換え規則と競合が発生しますが、これは悪いことです。

問題のスクリプトが見つかるまでルートディレクトリにというshopフォルダが作成されないようにする方法はありますか?コンテンツが変更されないようにフォルダの権限を変更できることはわかっていますが、特定の名前のフォルダが作成されるのを防ぐ方法が見つかりませんでした。

ベストアンサー1

ディレクトリを作成したユーザーには、親ディレクトリに書き込むための十分な権限があるため、そうすることはできません。

inotify代わりに、Linuxカーネルが提供する一連のシステムコールを利用して、ディレクトリがすでにmv作成されている場合(またはオプションで-ed)、指定されたディレクトリでディレクトリの作成(およびオプションで-ing)を監視できます。shopmvrm

この場合、必要なユーザースペースプログラムはinotifywait(一緒に提供されます。inotify-tools必要に応じて最初にインストールしてください)。


ディレクトリがディレクトリ内にshopあると仮定し、生成監視を/foo/bar設定し、生成直後にそれを見てみましょう。/foo/bar/shoprm

inotifywait -qme create /foo/bar | \
             awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
  • inotifywait -qme create /foo/bar/foo/bar作成できるすべてのファイル/ディレクトリのディレクトリを監視します。つまり、すべてのcreateイベントを監視します。

  • 作成された場合は、そのファイルが()awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'という名前のディレクトリであることを確認し、そうである場合はそのディレクトリ()を確認します。shop/,ISDIR shop$/rmsystem("rm -r -- /foo/bar/shop")

ディレクトリから削除するには、ディレクトリへの書き込み権限を持つユーザーとしてコマンドを実行する必要があります/foo/barshop


-ingジョブを監視するには、mvイベント監視も追加しますmoved_to

inotifywait -qme create,moved_to /foo/bar | \
             awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'

ディレクトリの代わりに名前付きファイルを探す場合は、次の点に注意してくださいshop

inotifywait -qme create /foo/bar | \
                 awk '$NF == "shop" { system("rm -- /foo/bar/shop") }'

inotifywait -qme create,moved_to /foo/bar | \
                 awk '$NF == "shop" { system("rm -- /foo/bar/shop") }'

おすすめ記事