rsync가 루트로 원격으로 실행되도록 허용하지만 파일 읽기만 가능합니다. 루트 사용자만 읽으시겠습니까?

rsync가 루트로 원격으로 실행되도록 허용하지만 파일 읽기만 가능합니다. 루트 사용자만 읽으시겠습니까?

rsync-over-ssh를 사용하여 여러 원격 대상 머신의 백업을 중앙 백업으로 가져오고 싶습니다.

루트로 이 작업을 수행할 수 있지만 이렇게 하면 백업해야 하는 머신에 쓰거나 머신에서 삭제하는 잘못된 rsync 명령을 실수로 실행할 수 있습니다.

대상 컴퓨터에 읽기 전용 루트 사용자를 설정할 수 있습니까?

rsync 명령은 대상 시스템의 모든 파일을 읽을 수는 있지만 쓸 수는 없어야 합니다.

답변1

루트가 아닌 전용 사용자로 rsync의 읽기 측을 실행하되 다음을 사용하십시오.능력 CAP_DAC_READ_SEARCH. 사용자는 파일 시스템 전체를 볼 수 있어야 하며(물론) /usr/bin/rsync이 기능을 사용하여 복사본에 액세스해야 합니다. 저는 Linux의 기능에 대해 잘 알지 못하지만 설정 방법은 다음과 같습니다.

cp /usr/bin/rsync /usr/local/sbin/rsync-for-backup
chown root.root /usr/local/sbin/rsync-for-backup
chmod 700 /usr/local/sbin/rsync-for-backup
setfacl -m user:backupuser:rx /usr/local/sbin/rsync-for-backup
setcap cap_dac_read_search+ep /usr/local/sbin/rsync-for-backup

rsync가 업데이트될 때마다 복사본을 업데이트하는 것을 잊지 마세요. --rsync-path=/usr/local/sbin/rsync-for-backup반대편으로 가세요.

(저는 Linux를 가정하고 있습니다. 다른 Unix 변형에는 다른 솔루션이 필요합니다.)


다른 잠재적 접근 방식:

  • binfs 솔루션의https://unix.stackexchange.com/a/91522파일 내용을 읽을 수 있지만 일부 메타데이터가 삭제됩니다. 백업을 할 수 있는 방법이 있는지 잘 모르겠습니다.
  • 제한적인 SELinux 규칙을 사용하여 루트로 실행하면 문제가 없지만 규칙이 무엇인지 묻지 마십시오.

답변2

rsync읽기 전용 권한이 있는 원격 시스템의 사용자로 실행 해야 합니다 . 예를 들어rsync -a read_only_user@target_machine:/path/to/files /backup/location

rsync이 플래그와 함께 사용될 때만 파일이 삭제된다는 점은 주목할 가치가 있습니다 --delete.

rrsync플래그를 지정할 수 있는 rsync 래퍼를 살펴볼 수 있습니다 -ro.

귀하의 사용 사례에 대해서도 살펴보는 것이 좋습니다. rsnapshot하드 링크를 활용하여 디스크 공간을 절약하면서 중앙 백업에 매우 편리하기 때문입니다(https://rsnapshot.org).

관련 정보