폴더의 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
귀하의 find
cmd는 현재 디렉토리 " .
"도 찾습니다. 그러면 이 디렉터리의 권한이 다음으로 설정되므로 600
이 디렉터리 내의 파일을 터치할 수 있는 권한을 잃게 됩니다.
따라서 해당 디렉토리를 cd ..
말한 chmod 700
다음 find
다음과 같이 현재 디렉토리를 제외하는 되돌리기를 실행하십시오.
find . \! -path . \! -iname '*.sh' -print0 | xargs -0 chmod 600