![Rsync - 소유자/그룹 메타데이터를 유지하지만 로컬 사용자는 유지하지 않음](https://linux55.com/image/94329/Rsync%20-%20%EC%86%8C%EC%9C%A0%EC%9E%90%2F%EA%B7%B8%EB%A3%B9%20%EB%A9%94%ED%83%80%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%EC%9C%A0%EC%A7%80%ED%95%98%EC%A7%80%EB%A7%8C%20%EB%A1%9C%EC%BB%AC%20%EC%82%AC%EC%9A%A9%EC%9E%90%EB%8A%94%20%EC%9C%A0%EC%A7%80%ED%95%98%EC%A7%80%20%EC%95%8A%EC%9D%8C.png)
rsync
내 서버가 콘텐츠를 백업하길 원합니다 . 나중에 백업을 사용하여 서버를 복원할 수 있도록 소유자/그룹을 유지하고 싶습니다. 그러나 서버에는 내 로컬 컴퓨터와 다른 사용자 및 그룹 집합이 있으므로 로컬 사용자를 사용하는 것은 의미가 없습니다. rsync
또한 보안상의 이유로 루트로 실행하고 싶지 않습니다. 어떻게 해야 합니까?
답변1
각 파일에 대한 권한, 사용자, 그룹을 저장하는 스크립트를 작성할 수 있습니다.
getfacl -R / > /tmp/permissions.txt
필요하다면 복원 가능
setfacl --restore=permissions.txt
그런 다음 request.txt를 포함한 모든 것을 백업 호스트의 일반 사용자 계정으로 rsync하십시오.
단점은 Permissions.txt가 실제 백업과 100% 동기화되지 않을 수 있다는 것입니다.
일반 사용자 계정에 잘못된 권한으로 비밀 파일을 저장하면 보안 문제가 발생할 수도 있습니다! 최소한 전체 백업이 포함된 디렉터리는 백업 사용자만 읽을 수 있어야 합니다.
추가 보안 참고 사항: 원래 호스트의 Permissions.txt도 보호되어야 하며 루트만 읽을 수 있습니다.
답변2
루트로 실행되지 않는 솔루션은 제공할 수 없지만 다음은 제공할 수 있습니다.
첫째, 이를 사용하면 --numeric-ids
UID/GID가 유지됩니다. 복구를 위해 rsync
또는 (또는 UID/GID와 혼동되지 않는 모든 것)을 사용하면 tar
괜찮습니다.
rsync -avP --numeric-ids
root
그러나 Unix에서는 파일을 다른 사용자로 생성해야 하기 때문에 루트로 실행하지 않으면 문제가 됩니다 . selinux를 사용하여 명령에 모든 파일에 대한 쓰기 권한을 부여할 수 있지만 이는 매우 복잡합니다( --fake-super
도움이 되긴 하지만).
백업 서버는 루트를 사용하지만 상대방은 루트를 사용하지 않는 경우 보안 요구 사항을 충족합니까?
# run this on the backup host:
rsync -avP --numeric-ids user@SOURCEHOST:/path/to/files/. /path/to/dest/.
root@BACKUPHOST가 user@SOURCEHOST로 SSH를 통해 연결할 수 있다면 괜찮습니다. 글쎄요, 대부분은 좋습니다. 파일에 액세스할 수 없으면 user
백업되지 않습니다. 상황에 따라 이는 문제가 되지 않을 수도 있습니다.