特定のフォルダを見つけて所有権を変更してください。

特定のフォルダを見つけて所有権を変更してください。

「wp-content」フォルダ(およびその中のすべてのコンテンツ)の所有権(および権限)を繰り返し変更する必要がある複数のWordPressサイトでセキュリティ上の問題が発生しました。

指定されたすべてのフォルダ(複数)を見つけて、所有者がフォルダ権限755とファイル権限644を持つようにwp-contentそのフォルダとすべての内容を変更する必要があります。nginx:nginx

これらのフォルダを見つけて所有権を変更する方法が見つかりません。

どんな手がかりがありますか? :/

答え1

findGNUと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 {} +

これにより、ディレクトリを一度クロールし、必要なだけ呼び出しを少なくし、ディレクトリchownchmod一般ファイル(シンボリックリンク、デバイス、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に変更します。

関連情報