내 프로젝트에 있는 모든 파일과 디렉터리의 권한을 반복적으로 변경하려고 합니다.
내가 하나 찾았어마젠토 포럼에 게시다음 명령을 사용할 수 있다고 합니다.
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 {} +
이는 파일 이름의 줄 바꿈까지 처리하는 표준적인 이식 가능한 솔루션입니다.