재귀 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.