이전에 가능했던 파일을 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

귀하의 findcmd는 현재 디렉토리 " ."도 찾습니다. 그러면 이 디렉터리의 권한이 다음으로 설정되므로 600이 디렉터리 내의 파일을 터치할 수 있는 권한을 잃게 됩니다.

따라서 해당 디렉토리를 cd ..말한 chmod 700다음 find다음과 같이 현재 디렉토리를 제외하는 되돌리기를 실행하십시오.

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

관련 정보