私のプロジェクト内のすべてのファイルとディレクトリの権限を繰り返し変更しようとしています。
私が一つ見つけたマゼントフォーラムに投稿次のコマンドが使用できるとします。
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の権限を使用することを提案したことを知っています。これにはセキュリティリスクがありますが、何を使用する必要がありますか?
答え1
xargs
名前に文字が含まれているため、ファイルが分割される現象が発生したようです。例えばスペース。この問題を解決するには、find
適切なオプション(GNUバリアントから派生し、POSIXで指定されていない)をサポートするバージョンを使用しているとし、次のxargs
コマンドを使用する必要があります。
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つのプロセスのみが使用され、POSIXchmod
(望むよりこの回答詳細はこちら)。
あなたの質問はmedia
非常にvar
広範囲です。特定の回答に興味がある場合は、ディレクトリの使用に関する追加情報を含む別の質問で質問することをお勧めします。
答え2
どうですか?
find ./ -type d -exec chmod 755 {} +
これは、ファイル名の改行まで処理する標準的な移植可能なソリューションです。