OpenBSD 기반 rsync 구현체, 보안과 이식성을 동시에 잡다.
OpenBSD 팀이 개발한 rsync 구현체(Implementation)인 openrsync가 OpenBSD base에 병합됨
BSD(ISC) 라이선스를 채택하여 rsync와의 호환성(Compatibility)을 확보하고, 다양한 UNIX 시스템에서 실행 가능
OpenBSD의 pledge(2) 및 unveil(2) 보안 기능을 활용하여 안전한 파일 전송을 지원
커뮤니티에서는 rsync 명령어의 부분적 지원(Partial Support)과 macOS에서의 사용성에 대한 논의가 진행됨
openrsync 아키텍처 및 알고리즘
openrsync는 송신자(Sender)와 수신자(Receiver)로 구성된 rsync 알고리즘을 구현한다. 파일 목록을 공유하고, 파일 이름 순으로 정렬하여 블록 교환(Block Exchange)을 수행한다. 특히, Adler-32 및 MD4 해시(Hash)를 사용하여 블록을 식별하고, 변경된 부분만 전송하는 방식으로 효율성을 높인다. 이러한 아키텍처는 파일 동기화(File Synchronization) 과정에서 네트워크 대역폭(Network Bandwidth) 사용량을 최소화하는 데 기여한다.
보안 기능: pledge(2) 및 unveil(2)
openrsync는 OpenBSD의 pledge(2) 및 unveil(2) 시스템 호출을 활용하여 보안을 강화한다. pledge(2)는 코드 실행에 허용되는 시스템 연산을 제한하고, unveil(2)는 파일 시스템 접근 범위를 제한한다. 특히, 수신 측에서 지정된 디렉토리(Destination Directory) 내의 파일만 접근하도록 제한하여, 잠재적인 보안 위협을 방지한다. 이러한 기능은 openrsync가 신뢰할 수 없는 환경(Untrusted Environment)에서 안전하게 작동하도록 돕는다.
rsync와의 차이점 및 호환성
openrsync는 rsync와 BSD 라이선스 하에 호환성을 유지하지만, 명령줄 인수(Command-line Arguments)의 부분적인 지원만 제공한다. 사용자 'Panino'는 openrsync가 Samba rsync와 다르게 동작하는 특정 상황을 언급하며, 디렉토리 미러링(Directory Mirroring) 시의 동작 차이를 지적했다. 이러한 차이점은 사용자가 openrsync를 사용할 때 주의(Attention)해야 할 부분이다.
이식성 및 플랫폼 지원
openrsync는 OpenBSD를 공식적으로 지원하며, Linux, FreeBSD, NetBSD, macOS, OmniOS 등 다양한 UNIX 시스템에서 컴파일 및 실행이 가능하다. GitHub CI를 통해 다양한 아키텍처(Architecture)에 대한 테스트를 수행하여 이식성을 보장한다. 이식 과정에서 OpenBSD의 보안 기능을 매칭하는 것이 중요하며, 특히 pledge(2) 및 unveil(2)의 부재는 보안 취약점(Security Vulnerability)으로 이어진다는 점을 강조한다.