재귀 chmod : 파일의 경우 rw, 디렉토리의 경우 rwx


28

chmod많은 파일과 디렉토리를 원합니다 . 으로는 x디렉토리에 대한 목록을 표시하고 내가 적용 할 일반 파일 실행 rw파일 및 rwx디렉토리에 대해. chmod명령 만 사용할 수 있습니까?

그렇지 않은 경우 가장 편리한 방법은 무엇입니까?

이렇게하면 chmod -R 770나는 일반 파일이 실행되고 싶어하지 않는 한 가능성이 아닙니다.


1
파일과 디렉토리에 대한 공개 쓰기 권한을 정말로 원하십니까? 즉, 누가 파일을 클로버하는지 신경 쓰지 않습니까?
Jonathan Leffler

참된. 나는 그것을 위에서 바꿨다.
삭제됨

답변:


19

때로는 단일 find명령을 사용 하여이 작업을 수행합니다 . 추악하지만 효과적입니다.

find /p/a/t/h \( -type d -exec chmod 755 {} \; \) -o \( -type f -exec chmod 644 {} \; \)

경로에 공백이있는 경우를 위해 "{}"을 인용 할 필요가 없습니까? 좋아요 find . -type d -exec chmod -vc 755 "{}" \;( -vc일부 의견 포함) (그리고 아마도 명확히하기 위해 두 개의 독립형 명령을 대답에 추가합니까?)
Arjan

아니요, {}은 (는) 인용 할 필요는 없습니다 (단지 확실하게 테스트했습니다). find가 {}을 명령에 삽입하면 올바르게 이스케이프됩니다. 나는 find의 내부 작업을 찾지 않았지만 exec ()에 전달할 인수 배열을 만들고 가정에 strcpy ()를 배열로 가정한다고 가정합니다. chmod가 인수를 볼 때 올바르게 나타납니다.
baumgart

37

매뉴얼 페이지에서 X 권한을 사용하십시오.

파일이 디렉토리이거나 실행 / 검색 비트 중 하나 인 경우 실행 / 검색 비트는 원래 (수정되지 않은) 모드로 설정됩니다. 파마 기호 "X"를 사용한 작업은 op 기호 "+"와 함께 만 의미가 있으며 다른 모든 경우에는 무시됩니다.

다음을 수행하십시오.

chmod -R a-x [directory]
chmod -R a+rwX [directory]

이렇게하면 모든 파일 및 디렉토리에서 실행 비트가 제거되고 모든 것에 읽기 및 쓰기 권한이 추가되고 디렉토리에 대해서만 실행 권한이 부여됩니다. (첫 단계부터 더 이상 일반 파일에 실행 비트가 없습니다.)


1
이것은 일반 파일에서 모드 666을 강제하지 않습니다. 일반 파일의 실행 비트가 이미 설정되어 있으면 실행 비트를 지우지 않습니다.
quck quixote

이 경우에 그래서 당신이 할 수있는 chmod -R a-x [directory]다음에 chmod -R a+rwX [directory]?
jwaddell

@jwaddel : 잘 작동합니다. 파일 / 디렉토리 유형에 관계없이 모든 실행 비트를 제거한 다음 이미 실행 비트가 설정된 디렉토리 및 일반 파일에만 실행을 추가합니다 (현재는 없음)
Ben S

일단 a-x하면 디렉토리에 액세스 할 수 없습니다. 실제로 chmod는 권한이 거부되어 실패하며 디렉토리 내의 파일에서 실행 가능 비트를 제거하지 않습니다. 뿌리가되지 않고 이것을 할 수있는 방법이 있습니까?
avakar

14

find함께 사용할 수도 있습니다 xargs:

find . -type f -print0 | xargs -0 chmod 666
find . -type d -print0 | xargs -0 chmod 777

여기서 -type지정 거라고 irectory 또는 F ILE한다.


1
xargs에는 길이 제한이 없습니까? 많은 파일과 디렉토리입니다.
삭제됨

2
디렉토리를 먼저 한 다음 파일을 수행합니다. 그렇지 않으면 권한이 없어서 일부 하위 트리를 놓칠 위험이 있습니다. 또한 chmod 이전 또는 이후에 목록이 스카우트되었는지 확인해야합니다. 그렇지 않으면 위와 동일합니다. 그리고 예, xargs를 사용하지 마십시오.
Stefano Borini

1
xargs긴 명령 줄을 여러 번 실행할 수있을 정도로 똑똑합니다. xargs 맨 페이지를 참조하여 확인하십시오 xargs --show-limits.
Mike
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.