이전처럼 이러한 파일을 chmod할 수 없는 이유는 무엇입니까?

이전처럼 이러한 파일을 chmod할 수 없는 이유는 무엇입니까?

폴더의 sh 파일에 실행 권한을 추가하려고 합니다. 이를 위해 실수로 다음을 사용했습니다.

find . -print0 -iname '*.sh' | xargs -0 chmod -v 744

출력은 다음과 같습니다

mode of `.' changed from 0755 (rwxr-xr-x) to 0744 (rwxr--r--)
mode of `./codis.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./ne fil.sw' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./.whois1.sh.swo' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./new file' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./ezik.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./.whois1.sh.swp' changed from 0600 (rw-------) to 0744 (rwxr--r--)
mode of `./whois1.sh' retained as 0744 (rwxr--r--)

이제 find 부분의 올바른 사용법이 다음과 같다는 것을 알고 있습니다.

find . -iname '*.sh' -print0

그래서 저는 다음과 같은 또 다른 발견을 만들었습니다.

find . \! -iname '*.sh' -print0 | xargs -0 chmod 600

이렇게 하면 sh가 아닌 파일에 대한 권한을 설정할 수 있습니다(예, 600 권한 대신 644 권한을 가진 일부 파일을 보았지만 지금은 괜찮습니다). 이 명령의 출력은 다음과 같습니다.

chmod: cannot access `./ne fil.sw': Permission denied
chmod: cannot access `./.whois1.sh.swo': Permission denied
chmod: cannot access `./new file': Permission denied
chmod: cannot access `./.whois1.sh.swp': Permission denied

저도 사용해봤는데 sudo여전히 안되네요...

권한을 올바르게 이해하지 못했다는 것을 알았습니다. 올바르게 이해했다면 해당 디렉터리에서 명령을 실행하려면 해당 x디렉터리에 대한 권한 도 필요합니다.direc

답변1

cmd find는 현재 디렉토리 " "도 찾습니다 .. 그러면 해당 디렉토리의 권한이 로 설정되므로 600해당 디렉토리의 파일에 대한 액세스 권한을 잃게 됩니다.

따라서 디렉터리 cd ..라고 chmod 700말한 다음 복구를 실행하면 find이제 다음과 같이 현재 디렉터리가 제외됩니다.

find . \! -path . \! -iname '*.sh' -print0 | xargs -0 chmod 600

관련 정보