ファイルの種類に応じて実行ビットを正しく設定しますか?

ファイルの種類に応じて実行ビットを正しく設定しますか?

私の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どこかに効果があると思います-execchmod。また、選択メカニズムでは、[おそらく間違っている]実行ビットや[おそらく欠けている]拡張に頼るのではなく、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特定の要件に合わせてパラメータを変更することもできます。

おすすめ記事