디렉토리를 재귀적으로 탐색하고 파일 유형의 조건에 따라 chmodding을 수행하는 쉘 스크립트

디렉토리를 재귀적으로 탐색하고 파일 유형의 조건에 따라 chmodding을 수행하는 쉘 스크립트

누구든지 전체 디렉터리 구조(현재 작업 디렉터리에서 시작하거나 시작할 위치에 대한 필수 인수 제공)를 반복적으로 탐색할 수 있는 셸 스크립트를 작성하기 위한 코드나 튜토리얼을 알려줄 수 있습니까?

  1. 항목이 디렉터리인지 확인하고 디렉터리인 경우 chmod 755디렉터리인지 확인합니다.
  2. 항목이 파일(dir이 아님)인지 여부와 chmod 644파일인지 확인합니다.

Ubuntu, Debian, RHEL 기반 등과의 호환성을 찾고 있으므로 특정 언어로 태그를 지정하지 않습니다. Bash에서 이것을 원하지만 ZSH 스크립트가 있으면 그것도 작동합니다.

답변1

나는 이 한 줄 명령에 익숙합니다(현재 작업 디렉터리에서 시작하여 반복됩니다).

find . -type d -exec chmod 0755 '{}' + -or -type f -exec chmod 0644 '{}' +

설명:

find .                    # starting in curdir find   
-type d                   # any directory
-exec chmod 0755 '{}'     # and chmod it to 755
+                         # (variant of -exec look find man page)
-or                       # or
-type f                   # any file
-exec chmod 0644 '{}'     # and chmod it to 644
+                         # (as above)

답변2

간단한 대답:

chmod -R a+rX .

+X(대문자 X 참고)은 일부 사용자에게 실행 권한이 이미 있는 경우 실행 권한을 부여한다는 의미입니다. 소유자에 대한 올바른 권한이 있는 디렉토리 트리가 있고 모든 사람이 액세스할 수 있도록 하려면 이 명령을 사용하는 것이 좋습니다. 디렉터리를 전 세계에서 실행할 수 있을 뿐만 아니라 실행 파일도 만들 수 있습니다.

쓰기 권한을 소유자에게만 재설정하고 setuid/setgid 비트를 지우려면 다음을 수행하십시오.

chmod -R a-ws,u+w,a+rX .

파일을 실행 가능하게 만들고 싶지 않은 경우 필수 zsh 두 줄:

chmod 755 **/*(/)
chmod 644 **/*(.)

관련 정보