find 명령의 결과에 따라 파일을 chmod하는 방법

find 명령의 결과에 따라 파일을 chmod하는 방법

WW(World Write) 권한이 666인 파일을 찾아야 하는 상황이 발생하여 해당 파일을 664로 수정해야 합니다. 이를 위해 이 명령을 사용했습니다.

find /dir/stuct/path -perm -0002 -type f -print > /tmp/deepu/permissions.txt

명령을 실행하면 WW 권한이 있는 파일을 얻습니다. 이제 내 요구 사항은

find /dir/stuct/path -perm -0002 -type f chmod 664

내 구문이 정확합니까?

답변1

귀하의 필요 사항에 대해 생각하십시오. 디렉토리 트리에 실행 파일(스크립트 또는 바이너리)이 있습니까? 그렇다면 실행 권한(자신의 권한도 포함)을 제거하시겠습니까, 아니면 실행 권한을 그대로 유지하시겠습니까? 실행 권한을 그대로 유지하려면 chmod o-w제거(빼기)를 사용해야 합니다.의례적 허가이 필드에만 해당됩니다.

또한 Anthon이 지적했듯이 find다른 답변에 제공된 명령은 chmod찾은 각 세계 쓰기 가능 파일에 대해 프로그램을 한 번 실행합니다. 좀 더 효율적인 것 같네요

find  top-level_directory  -perm -2  -type f  -exec chmod o-w {} +

여러 파일을 동시에 실행 chmod하여 실행 횟수를 최소화합니다.

PS 그럴 필요는 없습니다 2.

답변2

find /dir/stuct/path -perm -0002 -type f -exec chmod 664 {} \;

"{}"는 find로 찾은 파일을 나타냅니다. 이 "\;"는 실행해야 하는 명령을 종료합니다.

관련 정보