
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
백업되지 않습니다. 상황에 따라 이는 문제가 되지 않을 수도 있습니다.