그룹 권한을 소유자 권한으로 설정

그룹 권한을 소유자 권한으로 설정

디렉터리의 모든 요소를 ​​반복적으로 그룹화하려면 소유자에게 동일한 권한을 설정해야 합니다.

답변1

상당히 간단한 대답이 있습니다(모든 버전의 *nix에서 작동하는지 확실하지 않지만).

chmod g=u *

즉, 설정G그룹 권한은 다음과 같습니다.서비스 권한.

이 내용은 다음과 같이 기록됩니다.수정(1):

기호 패턴의 형식은 [ugoa...][[+-=][파마...]...], 어디파마세트에 0개 이상의 문자가 있습니다.rwxXst, 또는 세트의 단일 문자ugo. …

                ︙

이 편지들rwxXst선택하다…. 문자 중 하나만 지정할 수 있지만 하나 이상은 지정할 수 없습니다.ugo: 파일을 소유한 사용자에게 권한을 부여합니다(u), 파일 그룹(g), 위의 두 범주에 속하지 않는 사용자에게 권한을 부여합니다(o).

답변2

(최근 sed) -zGNU 시스템에서는 다음을 수행할 수 있습니다:

find . ! -type l -printf '%m:%p\0' |
  sed -Ez '/^.?(.)\1.:/d;s/(.)(.)(.):/\1\1\2\x0/' |
  xargs -r0n2 echo chmod

echo(결과가 만족스러우면 삭제하세요.)

특수 비트가 아닌 r, w, 비트 만 처리한다는 점에 유의하세요 .x

재귀적이기를 원하지 않는 경우:

find . -mindepth 1 -maxdepth 1 ! -type l -printf '%m:%p\0' |
  sed -Ez '/^.?(.)\1.:/d;s/(.)(.)(.):/\1\1\2\x0/' |
  xargs -r0n2 echo chmod

답변3

이 시도:

for file in $(find .); do
   perm=$(stat -c "%a" ${file});
   echo chmod ${perm:0:1}${perm:0:1}${perm:2:1} ${file};
done

삭제하는 것을 잊지 마세요 echo.

향상된 버전:

find . -exec sh -c 'for file do
   perm=$(stat -Lc "%a" "$file")
   echo chmod "${perm:0:1}${perm:0:1}${perm:2:1}" "$file"
done' sh {} +

에서와 같이Stefan Chazeras의 답변,

  • 를 사용할 -mindepth 1때 처리를 피하십시오 ..
  • -maxdepth 1(하위 디렉터리로) 재귀를 방지하는 데 사용됩니다 .
  • ! -type l  심볼릭 링크 처리를 피하는 데 사용됩니다  (이 답변은 심볼릭 링크를 정상적으로 처리하지만).

이 명령은 상위 모드 비트(setuid, setgid 및 Sticky)가 설정된 파일에서는 올바르게 작동하지 않습니다.

관련 정보