rsync를 사용하여 파일 모드(setuid 비트 제외)를 유지하는 방법은 무엇입니까?

rsync를 사용하여 파일 모드(setuid 비트 제외)를 유지하는 방법은 무엇입니까?

rsync -p <args>파일을 복사하는 데 사용하면 "디스크 할당량 초과(122)" 오류가 발생합니다.

rsync -rlptD --chown username:org1 -- local/ /project/org1/

파일과 디렉터리에서 소스 읽기 및 실행 비트를 유지하고 싶지만 대상이 g+s디렉터리에 그룹 setuid를 갖도록 강제하고 싶습니다.

디렉토리가 필요한 이유는 g+s새 파일이 프로젝트의 그룹 소유권을 상속하기 때문입니다. 내 환경에서는 /project/foo/프로젝트 폴더의 파일(예:)이 내 개인 그룹(그룹 이름 == 사용자 이름)의 소유인 경우 할당량 오류가 발생합니다.

전체적으로 그룹을 사용하도록 --chown username:org1강제하기 위해 rsync에 대한 주장을 제시했지만 그것만으로는 충분하지 않습니다. org1rsync 앱에 user:group소유권이 필요한 경쟁 조건이 있는 것 같습니다.뒤쪽에임시 파일의 이름은 최종 위치로 변경됩니다.

rsync 플래그를 제거하면 -p오류 없이 전송할 수 있지만 소스의 권한 비트가 손실됩니다. 그렇지 않은 경우 -p대상 폴더에서 rsync에 의해 생성된 모든 임시 파일은 루트 폴더에서 프로젝트 그룹을 올바르게 상속하고 하위 폴더는 setuid 그룹을 상속합니다.

rsync에 예약된 권한 마스크를 제공하는 방법이 있습니까? 소스에는 비트마스크 777이 필요하지만 g+s원격 디렉터리에는 (무조건) 설정됩니다.

답변1

--chmod RULE[,RULE]*이 옵션이 도움이 될 것이라고 생각합니다 .

~에서manrsync(1):

--chmod

이 옵션은 rsync가 전송 중인 파일의 권한에 하나 이상의 쉼표로 구분된 "chmod" 패턴을 적용하도록 지시합니다. 결과 값은 보낸 사람이 파일에 대해 제공한 권한으로 처리됩니다. 즉, --perms가 활성화되지 않은 경우 이 옵션은 기존 파일에 아무런 영향을 주지 않는 것으로 나타납니다.

--chmod Dg+s원격 디렉터리에서 디렉터리에 setuid를 설정하도록 강제 해 보세요 .

관련 정보