私のApache Webサーバーに対する権限を消去しようとしています。実行ビットを含む多くのファイルは、通常、実行ビットが存在しないか、または存在しないことを発見しました。
$ sudo find /var/www/html -executable -type f | grep '.png'
/var/www/html/.../jquery.ui/themes/smoothness/images/ui-icons_2e83ff_256x240.png
/var/www/html/.../jquery.ui/themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
/var/www/html/.../jquery.ui/themes/smoothness/images/ui-icons_cd0a0a_256x240.png
...
通常、実行ビットを含む一般ファイル(プログラム、PHPページ、Bashスクリプトなど)に実行ビットを設定し、通常実行ビットを持たない一般ファイル(TXT、PNG、JPG、ZIPファイルなど)?
find
どこかに効果があると思います-exec
chmod
。また、選択メカニズムでは、[おそらく間違っている]実行ビットや[おそらく欠けている]拡張に頼るのではなく、shebangや他のマジックヘッダを考慮したいと思います。しかし、私の検索では正解は出ませんでした。より、Linuxで特定のディレクトリにある実行可能ファイルのみを見つける方法は?そして再帰的に実行可能ファイルを見つける。
ベストアンサー1
その後、ファイルを繰り返し、ファイルfile
が実行可能であると思われるかどうかに応じて実行可能ビットを設定します。
find /var/www/html -type f -exec bash -c 'if file -b "$1" | grep -q executable; then chmod +x "$1"; else chmod -x "$1"; fi' None {} \;
コマンドはfind
あなたのコマンドと非常によく似ています。変更は、bashコマンドが追加されたことです。次のように複数行にわたって表示すると、わかりやすくなります。
if file -b "$1" | grep -q executable
then
chmod +x "$1"
else
chmod -x "$1"
fi
もちろん、chmod
特定の要件に合わせてパラメータを変更することもできます。