chmod
내 경우에는 coreutils
8.12의 일부를 사용하고 비트를 재귀적으로 설정할 때 디렉터리에만 비트를 설정하는 x
편리함(대문자 x)이 있습니다 . 따라서 모든 파일에서 제거하고 폴더에만 보관 X
하려면 다음과 같이 단일 호출로 압축할 수 있습니다.x
chmod -R a-x,a+X /path/to/folder
이는 1980년대에 유닉스 시스템 개념을 창안한 동료가 있고 8진수만 알고 있는 경우에 755
특히 유용합니다 .
s
하지만 파일과 폴더의 비트 의미에 유사한 이중성이 있음에도 불구하고 저는 이와 같은 것을 발견하지 못했습니다. 내 말은chmod(1)
, 특히 setgid
행동. 그렇다면 다음과 같이 하세요.
chmod -R g+ws /path/to/folder
드디어 파일을 받았어요그리고폴더에도 비트가 비슷하게 설정되어 있으며, 제가 원하는 것은 폴더에 생성된 파일이 항상 해당 그룹이 자동으로 소유하도록 설정하는 것입니다.
편리한 방법이 있습니까? 누락되었습니다.
find /path/to/folder -type d -exec chmod g+s {} \;
???
답변1
-R
스위치를 사용하면 chmod
관련 권한 변경 사항이 파일과 폴더에 반복적으로 적용되기를 원한다는 의미입니다.
이들 설정 중 하나만 적용하라고 지시할 수 있는 방법은 없으므로 유일한 방법은 디렉토리 목록 작성 chmod
과 같은 도구에서 도움을 구한 다음 이 목록에 대해 선택적으로 명령을 실행하는 것입니다 .find
exec
chmod
chmod
exec
다음과 같은 명령 +
변형을 사용하여 호출하면 더욱 효율적으로 만들 수 있습니다 exec
.
$ find /path/to/folder -type d -exec chmod g+s {} +
답변2
혼자서는 이 일을 할 수 있는 방법이 없습니다 chmod
. zsh에서는 재귀적 globbing과 glob 한정자를 활용할 수 있습니다.
chmod g+ws /path/to/folder/**/*(/)
ksh에서는 이를 수행할 수 있지만 디렉토리에 대한 심볼릭 링크에서도 작동합니다.
set -o globstar
chmod g+ws /path/to/folder/**/*/
Bash에서는 이를 수행할 수 있지만 재귀 하강 중에 디렉토리의 심볼릭 링크도 순회합니다.
shopt -s globstar
chmod g+ws /path/to/folder/**/*/
디렉터리에서 setgid 비트를 사용하는 대신 디렉터리의 기본 ACL을 사용하여 그룹에서 파일을 쓸 수 있도록 만들 수 있습니다.
setfacl -d -m g:somegroup:rwx /path/to/folder/**/*(/)
setfacl -m g:somegroup:rwx /path/to/folder/**/*(/)