chmod -R は何らかの理由で子フォルダ内のファイルを読み取り不可能にします

chmod -R は何らかの理由で子フォルダ内のファイルを読み取り不可能にします

いくつかの WordPress テーマを設定するときに権限を調整していて、chmod 664 -R theme-dir/*次のように実行しました。ディレクトリのルートにあるファイルでは正常に動作しましたが、サブディレクトリ内のすべてのファイルは次のように表示されますls -l

?---------  ? ? ? ?            ? core_functions.php
?---------  ? ? ? ?            ? css
?---------  ? ? ? ?            ? custom_functions.php
?---------  ? ? ? ?            ? images
?---------  ? ? ? ?            ? import_settings.php
?---------  ? ? ? ?            ? js
?---------  ? ? ? ?            ? options_trim.php
?---------  ? ? ? ?            ? page_templates
?---------  ? ? ? ?            ? post_thumbnails_trim.php
?---------+ ? ? ? ?            ? shortcodes

どのサブディレクトリにも cd できず、削除もできません。このようなことは見たことがありませんが、同じような状況に遭遇した人はいますか?

答え1

ディレクトリの内容 (具体的にはファイル名以外のファイル メタデータ) にアクセスするには、ディレクトリに実行ビットが設定されている必要があります。

再帰的な chmod によってその権限が削除されたため、そのアクセスは失われました。-Rのオプションを使用している場合はchmod、権限の数値バージョンの使用を避け、代わりに (望ましい状態を例として使用して) を実行することをお勧めしますchmod -R ug=rwX,o=rX。大文字の X は、少なくとも 1 つが設定されているディレクトリまたはファイルにのみ X ビットを設定することを意味します。また、グループ ユーザーに書き込みを本当に必要としない限り、x644 ( ) を使用することをお勧めします。u=rwX,go=rX

答え2

からWordpress ドキュメント:

サーバーにシェルアクセスできる場合は、次のコマンドを使用してファイルの権限を再帰的に変更できます。

ディレクトリの場合:

find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;

ファイルの場合:

find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;

関連情報