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

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

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

내가 하나 찾았어마젠토 포럼에 게시다음 명령을 사용할 수 있다고 합니다.

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.

이 문제를 어떻게 해결할 수 있나요?

추신: 그가 내 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 .

장점은 프로세스가 더 짧고, 하나의 프로세스만 사용되며,POSIXchmod(바라보다이 답변더 알아보기).

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

답변2

어때요?

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

이는 파일 이름의 줄 바꿈까지 처리하는 표준적인 이식 가능한 솔루션입니다.

관련 정보