Sette opp rsync daemon på Mac (MacMini, Lion)
Referanse til blogpost som viser oppsett av rsync daemon på Synology. Mye er likt. I denne posten legges det vekt på forskjellene fra Synology konfigureringen.
I denne posten ønsker vi å sette opp rsync daemon (server) på en Mac, og kople til denne over rsync sin egen protokoll (ikke ssh).
Eksempelet i denne blogposten er at vi vil bruke en rsync klient på en Synology på nettverket og overføre filer til Mac. Synology har ip-adressen 172.16.16.9. MacMini har ip-adressen 172.16.16.4. Min MacMini har OS-X Lion (det er en gammel macmini).
min-macmini$ sw_versProductName: Mac OS X
ProductVersion: 10.7.5
BuildVersion: 11G63
min-macmini$ system_profiler SPSoftwareDataType
Software:
System Software Overview:
System Version: Mac OS X 10.7.5 (11G63)
Kernel Version: Darwin 11.4.2
Boot Volume: HD1sys
Boot Mode: Normal
Computer Name: min-macmini
User Name: peder-macmini (peder)
Secure Virtual Memory: Enabled
64-bit Kernel and Extensions: No
Time since boot: 1:46
rsync vanilla på Mac
På min gamle MacMini (Lion) var det installert rsync version 2.6.9 (rsync --version). rsync server (servicen, daemon) startet ikke automatisk når maskinen startet. Servicen startes ved å gjøre: sudo rsync --daemon. Det viser seg at servicen ikke starter:
admin@pssyno01:/volume1$ rsync 172.16.16.4::rsync: failed to connect to 172.16.16.4 (172.16.16.4): Connection refused (111)
rsync error: rsync service is no running (code 43) at socket.c(328) [Receiver=3.0.9]
admin@pssyno01:/volume1$
Årsak, NB: På Mac var det ingen (default) rsyncd.conf fil. Denne måtte jeg lage og konfigurere selv. På Synology har vi katalogen /etc der disse filene lagres. På Mac eksisterte ikke denne katalogen. /etc er et alias til /private/etc. Jeg laget filen /private/etc/rsyncd.conf:
pid file = /var/run/rsyncd.pidNå kan jeg gjøre: sudo rsync --daemon på Mac. Jeg kan sjekke at /var/run/rsyncd.pid eksisterer og inneholder pid for servicen.
Nå kan jeg gå på Synology og sjekke at rsync daemon kjører ved å gjøre: rsync 172.16.16.4:: uten å få feilmelding. Denne kommandoen lister alle definerte moduler i rsyncd.conf på serveren. Siden det ikke er noen moduler der foreløpig får jeg ikke noe output.
Jeg endrer rsyncd.conf til:
pid file = /var/run/rsyncd.pid[psmod01]
Tilbake på Synolgyen kan jeg gjøre:
admin@pssyno01:/volume1$ rsync 172.16.16.4::psmod01
Navnet på modulen listes.
rsyncd.conf kan eies av root:wheel eller peder:users. Og ha rettigheter 644.
Liste ut innholdet i en konfigurert modul uten bruker/pass
rsyncd.conf blir
pid file = /var/run/rsyncd.pid[psmod01]
path = /Users/peder/Temptest
Filen eies av root:wheel og har rettigheter 644
Kommandoen: rsync 172.16.16.4::psmod01
NB: katalogen /Users/peder/Temptest på Mac må ha Execute rettigheter, eksempelvis 777. Fordi for kataloger er dette å liste ut innholdet.
rsync daemon kjører under root kontoen. Det betyr at prosessen har root rettigheter. Det er mulig det vil fungere også med andre owner og permissions på rsyncd.conf.
Liste ut innholdet i en konfigurert modul med bruker/pass
Nå må jeg også lage filen /private/etc/rsyncd.secrets:
ps:pspassFilen eies av root:wheel og har rettigheter 600
rsyncd.conf blir nå:
pid file = /var/run/rsyncd.pid[psmod01]
path = /Users/peder/Temptest
auth users = ps
secrets file = /private/etc/rsyncd.secrets
NB: jeg måtte definere hele pathen /private/etc/rsyncd.secrets som parameter til secrets file i rsyncd.conf. Det holdt ikke å bare skrive filnavnet rsyncd.secrets.
Nå kan jeg liste ut innholdet i modulen ved å gjøre rsync ps@172.16.16.4::psmod01. Får spørsmål om passord og skriver: pspass
Vanligvis må rsync daemon restartes når vi gjør endringer i rsyncd.secrets. På MacMini var ikke dette nødvendig.
Kopiere filer fra modul-katalogen
Behøver ikke endre rsync.conf. Default er modulen read-only.
Kommandoen er:
rsync -a ps@172.16.16.4::psmod01/minfil1.txt .
Dette fungerte nå.
PERMISSIONS: Så langt er gid og uid ikke spesifisert i rsyncd.conf. Det er uklart hvilken bruker jobben på Mac kjører under. Hvis ikke Everybody har Read rettighet på aktuell katalog går det ofte feil å lese fra denne. Enten kan man sette at Everybody har Read (permissions på Mac). Eller man endrer i rsyncd.conf og spesifiserer gid og/eller uid, eksempelvis gid=admin og uid=wheel. Så lenge admin (eller gruppen wheel) har Read rettighet på katalogen skal det nå fungere. Fordi rsync daemon kjører som root på Mac og kan dermed bruke rettighetene til mindre begunstigede brukere når filsystemet manipuleres.
Kopiere filer til modul-katalogen
rsyncd.conf blir nå:
pid file = /var/run/rsyncd.pid[psmod01]
path = /Users/peder/Temptest
auth users = ps
secrets file = /private/etc/rsyncd.secrets
read only = false
Kommandoen errsync -a minfil2.txt ps@172.16.16.4::psmod01
PERMISSIONS: Så langt er gid og uid ikke spesifisert i rsyncd.conf. Det er uklart hvilken bruker jobben på Mac kjører under. Hvis ikke Everybody har Write rettighet på aktuell katalog går det ofte feil å skrive til denne. Enten kan man sette at Everybody har Write (permissions på Mac). Eller man endrer i rsyncd.conf og spesifiserer gid og/eller uid, eksempelvis gid=admin og uid=wheel. Så lenge admin (eller gruppen wheel) har Write rettighet på katalogen skal det nå fungere. Fordi rsync daemon kjører som root på Mac og kan dermed bruke rettighetene til mindre begunstigede brukere når filsystemet manipuleres.
I denne blogposten har vi forsøkt å holde rsyncd.conf på enklest mulig form. For å illustrere hva som minimum må med.
Referanser
- Configuring Mac OS X for Unattended Backup Using rsync
https://static.afp548.com/mactips/rsync.html
- How to setup rsyncd on Mac OS X
https://www.jafdip.com/how-to-setup-rsyncd-on-mac-os-x/