私はLAMP Webアプリケーションを開発しており、どこかにshop
サイトルートにあるフォルダを作成し続けるスケジュールされたプロセスがあります。これが発生するたびにアプリケーションの書き換え規則と競合が発生しますが、これは悪いことです。
問題のスクリプトが見つかるまでルートディレクトリにというshop
フォルダが作成されないようにする方法はありますか?コンテンツが変更されないようにフォルダの権限を変更できることはわかっていますが、特定の名前のフォルダが作成されるのを防ぐ方法が見つかりませんでした。
ベストアンサー1
ディレクトリを作成したユーザーには、親ディレクトリに書き込むための十分な権限があるため、そうすることはできません。
inotify
代わりに、Linuxカーネルが提供する一連のシステムコールを利用して、ディレクトリがすでにmv
作成されている場合(またはオプションで-ed)、指定されたディレクトリでディレクトリの作成(およびオプションで-ing)を監視できます。shop
mv
rm
この場合、必要なユーザースペースプログラムはinotifywait
(一緒に提供されます。inotify-tools
必要に応じて最初にインストールしてください)。
ディレクトリがディレクトリ内にshop
あると仮定し、生成監視を/foo/bar
設定し、生成直後にそれを見てみましょう。/foo/bar/shop
rm
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$/
rm
system("rm -r -- /foo/bar/shop")
ディレクトリから削除するには、ディレクトリへの書き込み権限を持つユーザーとしてコマンドを実行する必要があります/foo/bar
。shop
-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") }'