「wp-content」フォルダ(およびその中のすべてのコンテンツ)の所有権(および権限)を繰り返し変更する必要がある複数のWordPressサイトでセキュリティ上の問題が発生しました。
指定されたすべてのフォルダ(複数)を見つけて、所有者がフォルダ権限755とファイル権限644を持つようにwp-content
そのフォルダとすべての内容を変更する必要があります。nginx:nginx
これらのフォルダを見つけて所有権を変更する方法が見つかりません。
どんな手がかりがありますか? :/
答え1
find
GNUとGNUを使用xargs
してディレクトリを検索wp-content
し、NULで終わった結果をシェルスクリプトに渡すことができます。
find /path/to/directory -type d -name 'wp-content' -print0 | xargs -0 sh -c '
for dir; do
# change user and group recursively to nginx
chown -R nginx:nginx "$dir"
# change dirs to 755
find "$dir" -type d -exec chmod 755 {} +
# change files to 644
find "$dir" -type f -exec chmod 644 {} +
done
' sh
あるいは、スクリプト部分をシェルスクリプトに保存することもできますmyscript.sh
。
#!/bin/sh
for dir; do
# change user and group recursively to nginx
chown -R nginx:nginx "$dir"
# change dirs to 755
find "$dir" -type d -exec chmod 755 {} +
# change files to 644
find "$dir" -type f -exec chmod 644 {} +
done
次に、シェルスクリプトを実行可能にします。
chmod +x myscript.sh
このアクションを使用して実行しfind
(GNU実装である必要はありません)、-exec
結果をスクリプトに渡します。
find /path/to/directory -type d -name 'wp-content' -exec ./myscript.sh {} +
答え2
次のことができます。
LC_ALL=C find . '(' -name wp-content -type d -o \
-path '*/wp-content/*' '(' -type d -o -type f ')' \
')' -exec chown nginx:nginx {} + \
-exec chmod u=rwX,g=rX,o=rX {} +
これにより、ディレクトリを一度クロールし、必要なだけ呼び出しを少なくし、ディレクトリchown
とchmod
一般ファイル(シンボリックリンク、デバイス、FIFOなどを除く)の所有権/権限のみを変更します。
いくつかのfind
実装を使用する'(' -type d -o -type f ')'
と-type f,d
。
答え3
次のコマンドを使用してこれを実行することもできます。
find some-folder-path -type d -name wp-content -exec chown new-user:new-group {} \;
上記のコマンドは、wp-contentという名前のすべてのフォルダの所有権とグループを変更します。
find some-folder-path -type d -exec chmod 755 {} \;
find some-folder-path -type f -exec chmod 644 {} \;
上記のコマンドは、ファイルの権限を644に、フォルダの権限を755に変更します。