폴더의 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