xargs + chmod - 파일 또는 디렉토리를 찾을 수 없습니다

xargs + chmod - 파일 또는 디렉토리를 찾을 수 없습니다

내 프로젝트에 있는 모든 파일과 디렉터리의 권한을 반복적으로 변경하려고 합니다.

나는 찾았다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 권한을 사용하도록 권장했다는 것을 알고 있지만, 또 무엇을 사용해야 합니까?

답변1

xargs이름에 문자가 포함되어 파일이 분리되는 파일이 실행되고 있는 것 같습니다 .예를 들어공백. 이 문제를 해결하려면 적절한 옵션(GNU 변형에서 시작되었으며 POSIX에서 지정되지 않음)의 버전을 사용하고 find있으며 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 .

이는 더 짧고, 하나의 프로세스만 사용하며,POSIXchmod(보다이 답변자세한 내용은).

귀하의 질문은 다소 광범위 media합니다 var. 특정 답변에 관심이 있다면 디렉토리 사용에 대한 자세한 정보가 포함된 별도의 질문으로 질문하는 것이 좋습니다.

답변2

어떻습니까:

find ./ -type d -exec chmod 755 {} +

이것은 파일 이름의 개행 문자까지 처리하는 정식 이식 가능한 솔루션입니다.

관련 정보