プロジェクト内のすべてのファイルとディレクトリのアクセス許可を再帰的に変更しようとしています。
magentoフォーラムへの投稿 これらのコマンドを使用できると言っているのを見つけました:
find ./ -type f | xargs chmod 644
find ./ -type d | xargs chmod 755
chmod -Rf 777 var
chmod -Rf 777 media
find ./ -type d | xargs chmod 755
で動作しました。
コマンドfind ./ -type f
は多くのファイルを返しましたが、chmod: access to 'fileXY.html' not possible: file or directory not found
を実行すると、すべてのファイルでfind ./ -type f | xargs chmod 644
が返されます。
どうすればこれを解決できますか?
PS:彼が私のvarおよびmediaフォルダーに777権限を使用することを推奨したことは知っていますが、これはセキュリティ上のリスクですが、他に何を使用する必要がありますか?
名前にxargs
がそれらを分割する原因となる文字を含むファイルに遭遇していると思います、たとえば空白。これを解決するには、適切なオプションをサポートするfind
およびxargs
のバージョンを使用していると仮定します(これはGNUバリアントで発生し、 POSIXで指定されている場合)、代わりに次のコマンドを使用する必要があります。
find . -type f -print0 | xargs -0 chmod 644
find . -type d -print0 | xargs -0 chmod 755
またはもっと良いです
chmod -R a-x,a=rX,u+w .
これには、より短く、1つのプロセスのみを使用し、 POSIX chmod
によってサポートされるという利点があります(詳細については、 この回答 を参照してください)。
media
とvar
に関する質問はかなり広範です。特定の回答に興味がある場合は、ディレクトリの使用方法に関する詳細を記載した別の質問として質問することをお勧めします。
どうですか:
find ./ -type d -exec chmod 755 {} +
これは、ファイル名の改行も処理する標準的なポータブルソリューションです。