rsync가 고정 비트/GID 비트를 설정하지 않습니다.

rsync가 고정 비트/GID 비트를 설정하지 않습니다.

다음 rsync 명령을 사용하면 파일 및 디렉터리에 대한 RWX 권한이 올바르게 설정되지만 고정 비트 옵션이 올바르게 설정되지 않습니다.

rsync -rtvz --partial-dir=.rsync-partial --chmod=Da+t,Dg+s,D770,F0740 --progress --stats -e 'ssh -p 19419' "/home/me/test_dir" me@REMOTE_HOST:~

내가 이해한 바에 따르면 옵션은 다음과 같아야 합니다.

최대 +t

  • 모든 디렉터리에는 고정 비트가 설정되어 있어야 합니다(루트, 디렉터리 소유자 및 파일 소유자만 해당 디렉터리의 파일을 삭제할 수 있습니다).

Dg+s

  • 모든 디렉터리에는 setGID가 있어야 합니다(해당 디렉터리에서 생성된 모든 파일은 해당 디렉터리의 그룹 소유권을 상속함).

그러나 위 명령을 사용하면 REMOTE_HOST 디렉터리에 고정 비트와 setGID 비트가 설정되지 않습니다.

REMOTE_HOST로 ssh를 실행하고 유사한 명령을 실행하면 chmod -R a+t test_dir고정 비트가 예상대로 설정됩니다.

내가 어디서 잘못됐나요?

편집: 나는 또한 각각 "--chmod=Da+t,Dg+s", "--chmod=Da+t" "--chmod=Dg+s" "--chmod=a+t"를 시도했지만 아무것도 시도하지 않았습니다. 고정 비트는 다음 옵션 중 하나를 사용하여 설정할 수 있습니다.

(Ubuntu 16.04, rsync 3.1.1 - 매뉴얼 페이지에서 chmod 옵션을 직접 가져왔습니다)

답변1

rysnc에는 -p 플래그를 사용해야 합니다.

답변2

이러한 모드는 지정된 순서대로 적용됩니다. 즉, 이후 D770옵션은 이전 패턴을 재정의하여 디렉터리를 정확히 770으로 설정합니다. 순서를 다음으로 변경합니다.

--chmod=D770,F0740,Da+t,Dg+s

답변3

나는 같은 문제가 있었습니다: "rsync는 상위 대상의 setgid를 유지하지 않습니다." 내가 사용하는 명령은 다음과 유사합니다.

rsync -zrvhtl <source> <destination>

대상에서는 루트의 파일과 폴더만 올바른 그룹으로 설정되지만 동기화된 폴더에는 g+s가 제공되지 않으므로 모든 파일과 폴더에 소스 그룹이 있습니다. man 예제와 같이 명령을 실행하고 -r 옵션만 추가하면 작동합니다.

rsync --no-p --no-g --chmod=ugo=rwX <source> <destination>

때로는 옵션을 추가하면 -t가 대상 폴더(정적 setgid)에 이 영향을 미치는 것을 확인할 수 있습니다. 이 문제를 극복하기 위해 -O를 추가했습니다.

-O, --omit-dir-times 이는 수정 시간을 유지할 때 디렉터리를 생략하도록 rsync에 지시합니다.

관련 정보