
Immagine gentilmente concessa da Matthias Kretschmann, ispiratore di questo articolo (clicca sull'immagine per vederla nel suo contesto originale).
Edit: aggiunta una sezione su come usare il volume di rete con Time Machine.
Edit: aggiunto il pacchetto di Netatalk per Jaunty i386.
Una Linux box con Ubuntu 8.04 “Hardy Heron” può essere, grazie a Netatalk, un ottimo server Apple Filing Protocol (AFP). Ma, da quando c’è Leopard, l’idillio pare finito. I client con il nuovo sistema operativo di Apple non sono, infatti, in grado di connettersi al server Netatalk distribuito normalmente con Ubuntu. Questo perché Leopard può usare, di default, la sola autenticazione crittografata con SSL mentre il pacchetto ufficiale di Netatalk non include questa funzionalità a causa di un conflitto di licenze. Ma a noi delle licenze ce ne importa il giusto, quindi vi spiegherò come aggirare l’inconveniente.
Installare Netatalk
Per includere il supporto SSL dentro Netatalk, occorre ricompilare il pacchetto abilitando la specifica opzione. Questo è quello che dicono di fare un sacco di guide su Internet (una per tutte, questa qua).
Il pacchetto risultante è, però, soggetto ad essere sostituito da quello ufficiale la volta successiva che si lancia “apt-get upgrade” (questo perché il numero di versione del pacchetto modificato non è successivo a quello del pacchetto ufficiale). L’accorgimento di dichiarare il pacchetto personalizzato “non aggiornabile” con il comando
$ echo "netatalk hold" | sudo dpkg --set-selections
non funziona con tutti i client apt, tra cui il mio preferito apt-get.
Da ciò l’idea di creare un pacchetto Netatalk con SSL abilitato e versione successiva a quella del pacchetto ufficiale. Il risultato, per architettura i386, lo potete scaricare da qui:
- Hardy e Intrepid: netatalk_2.0.3-brando0_i386.deb (772 kB)
- Jaunty: netatalk_2.0.4~beta2-brando0_i386.deb (832 kB)
Per installarlo sul vostro sistema fate doppio click sul file appena scaricato. A seconda dei canali software (repository) che avete attivato, il programma di installazione potrà notificare che esiste una versione più vecchia del pacchetto in uno dei canali software; se questo è il caso, premete tranquillamente il pulsante Chiudi e passate oltre.
A questo punto non resta che premere il pulsante Installa pacchetto e il sistema si preoccuperà di installare Netatalk e tutti gli altri eventuali pacchetti necessari al suo funzionamento.
NOTA: in questa fase il programma di installazione potrebbe notificare che l’installazione non è andata a buon fine perché è stato impossibile avviare il servizio. Questo è del tutto normale perché la configurazione di default può creare problemi quando non è presente un’infrastruttura AppleTalk nella propria rete locale. Malgrado il messaggio infausto, in realtà il pacchetto di Netatalk è stato installato correttamente: dopo averlo riconfigurato, tutto andrà a posto.
Chiaramente il mio pacchetto resisterà agli aggiornamenti da parte della versione 2.0.32.0.4; nel momento in cui verrà rilasciato un pacchetto ufficiale basato sulle versioni upstream 2.0.42.0.5 o successive, anche il mio pacchetto verrà aggiornato, e dovrà quindi essere ricompilato a partire dai sorgenti della nuova versione.
Configurare Netatalk
Non conviene lasciare le impostazioni di default di Netatalk perché vengono lanciati dei servizi che, normalmente, non servono ma che rallentano – e di molto – l’avvio del sistema. Per disabilitare questi servizi, usiamo gedit
$ gksudo gedit /etc/default/netatalk &
e sistemiamo così le seguenti opzioni:
ATALKD_RUN=no
PAPD_RUN=no
CNID_METAD_RUN=yes
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no
I servizi disabilitati sono atalkd, che serve solo per versioni di Mac OS <= 9, papd, il server di stampa sostituito da CUPS, timelord, il server per tenere l’ora aggiornata sostituito da ntp. Per quanto riguarda a2boot, non sono riuscito a trovare alcuna informazione.
I due servizi lasciati abilitati sono afpd, che è il server per la condivisione dei file, e cnid_metad, che è un server che supporta un particolare metodo di mappatura dei file tra Mac OS X e Unix, che si chiama dbd, e che è più sicuro rispetto allo standard cdb (su questo tema, si legga la documentazione ufficiale di Netatalk).
Un’altro file da aggiustare è /etc/netatalk/AppleVolume.default, la cui ultima riga va modificata come segue:
~/ "$u's Home" cnidscheme:dbd options:usedots
Questa linea serve per condividere le home page degli utenti della Ubuntu box. Il primo parametro è il nome che avrà la condivisione ($u è il nome dell’utente che si collega), il secondo parametro seleziona il sicuro dbd come backend CNID, mentre il terzo parametro consente l’uso del punto come carattere iniziale dei file (invece di un antipatico :2e che provoca problemi quando si devono creare file, come .htaccess, che devono poter essere utilizzati anche dal lato Unix).
L’ultimo file da sistemare è /etc/netatalk/afpd.conf, la cui ultima riga, l’unica non commentata, deve essere la seguente (attenzione perché si tratta di una linea unica, anche se può essere visualizzata su più linee):
- -transall -uamlist uams_randnum.so,uams_dhx.so -nosavepassword -advertise_ssh -nozeroconf
Questa riga specifica le opzioni di autenticazione e il fatto che Netatalk non deve interfacciarsi con il servizio Zeroconf (quest’ultima impostazione è stata inserita perché l’implementazione di Zeroconf inclusa in Netatalk è buggata, in quanto fornisce alle altre macchine in rete l’indirizzo IP del server piuttosto che il suo nome).
A questo punto si può rilanciare il server Netatalk:
$ sudo /etc/init.d/netatalk restart
Zeroconf e il resto
Per un server il più possibile “user friend” è opportuno configurare anche il servizio avahi (si tratta di un’implementazione del protocollo Zeroconf per Linux). Questo consentirà di vedere il nostro server nella colonna di sinistra delle finestre del Finder di Mac OS X. Per fare ciò, occorre creare un nuovo file il cui nome è /etc/avahi/services/afpd.service e il cui contenuto dovrà essere:
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=Xserve</txt-record>
</service>
</service-group>
A questo punto, rilanciare avahi:
$ sudo /etc/init.d/avahi-daemon restart
Per collegarsi con un client Leopard, da Finder fare click sull’icona della colonna di sinistra relativa al server e premere il pulsante Connetti come… in alto a destra: si aprirà una finestra di autenticazione in cui inserire le credenziali del proprio utente Ubuntu. Dopodiché si aprirà una finestra di Finder con la propria home directory
.
In alternativa, premere command+k ed inserire la stringa “afp://nomeserver.local”: l’effetto sarà lo stesso.
Time Machine
Time Machine, per default, non può usare un volume di rete come disco di backup. Per renderlo possibile occorre abilitare, da terminale, un’opzione nascosta. Copia e incolla sul terminale il comando seguente:
$ defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1
A questo punto si deve montare il volume remoto e sceglierlo come disco di backup dalle preferenze di Time Machine. Durante il primo backup Time Machine creerà un’immagine disco (.dmg) nel tuo volume di rete, la monterà sul Mac e scriverà lì dentro i dati del backup. Questo è necessario perché Time Machine, per poter preservare tutti gli attributi e i metadati dei file, deve lavorare necessariamente con un disco in formato HFS+, mentre il tuo volume condiviso sarà in formato ext3, ReiserFS o qualcosa d’altro.
Una volta terminato il primo backup (che, in base alla quantità dei dati sul proprio hard disk, potrà impiegare anche molto tempo) si possono smontare entrambi i volumi: la prossima volta che Time Machine parte monterà automaticamante l’immagine disco dal volume di rete.
Nel caso in cui ci fossero problemi a creare l’immagine disco durante il primo backup, seguire la procedura riportata nella mia solita guida di riferimento.
Buona condivisione a tutti!
[...] Although written in italian you can follow the necessary code snippets for installing this package in his blog post. If the install package works for you just skip the following self compiling process and head over [...]
Pingback di HowTo: Make Ubuntu A Perfect Mac File Server And Time Machine Volume [Update6] › Blog › kremalicious.com » Matthias Kretschmann | Photography & Design — 17 Dicembre 2008 @ 19:51 |
[...] Fortunately for me, one of the sites I’d been using to help in my project pointed me to this blog post, which had a prebuilt package for Netatalk that included the necessary SSL support that [...]
Pingback di Ubuntu and Mac OS X Integration - blog.scottlowe.org - The weblog of an IT pro specializing in virtualization, storage, and servers — 2 Gennaio 2009 @ 17:36 |
tutto funziona perfettamente, ma come funge nei confronti della TimeMachine?
Commento di Giancarlo (FunBoy) — 9 Febbraio 2009 @ 3:15 |
Ciao Giancarlo,
sulla spinta della tua domanda ho aggiunto all’articolo una sezione che spiega come usare il volume di rete con Time Machine. La fonte è sempre l’ottimo blog di Matthias Kretschmann, cui rimando per ulteriori approfondimenti.
Commento di gpz500 — 9 Febbraio 2009 @ 9:50 |
ho una debian lenny ho ricompilato dai source come da tutti i vari articoli ma abilitando i msg di backup rilevo quanto segue allo startup dei netatalk
Apr 23 17:44:57 einstain afpd[19781]: shutting down on signal 15
Apr 23 17:44:59 einstain afpd[21476]: Registering CNID module [last]
Apr 23 17:44:59 einstain afpd[21476]: Registering CNID module [cdb]
Apr 23 17:44:59 einstain afpd[21476]: Registering CNID module [dbd]
Apr 23 17:44:59 einstain afpd[21476]: Loading ConfigFile
Apr 23 17:44:59 einstain afpd[21476]: main: atp_open: Cannot assign requested address
Apr 23 17:44:59 einstain afpd[21476]: ASIP started on 10.0.0.3:548(5) (2.0.3)
Apr 23 17:44:59 einstain afpd[21476]: uam: loading (/usr/lib/netatalk/uams_clrtxt.so)
Apr 23 17:44:59 einstain afpd[21476]: uam: uams_clrtxt.so loaded
Apr 23 17:44:59 einstain afpd[21476]: uam: loading (/usr/lib/netatalk/uams_randnum.so)
Apr 23 17:44:59 einstain afpd[21476]: uam: uam not found (status=-1)
Apr 23 17:44:59 einstain afpd[21476]: uam: “Cleartxt Passwrd” available
Apr 23 17:44:59 einstain afpd[21476]: main: atp_open: Impossibile assegnare l’indirizzo richiesto
Apr 23 17:44:59 einstain afpd[21476]: main: dsi_init: Indirizzo gi\303\240 in uso
Apr 23 17:44:59 einstain afpd[21476]: uam: loading (/usr/lib/netatalk/uams_randnum.so)
Apr 23 17:44:59 einstain afpd[21476]: uam: uam not found (status=-1)
Apr 23 17:44:59 einstain afpd[21476]: uam: loading (/usr/lib/netatalk/uams_dhx.so)
Apr 23 17:44:59 einstain afpd[21476]: uam: uam not found (status=-1)
Apr 23 17:44:59 einstain afpd[21476]: Finished parsing Config File
atp_open che non va a buon fine e io da rete pur avendo la porta visibile con nmap non ottengo nulla dalla richiesta di accesso da finder con afp://10.0.0.3
Ho rivisitato tutta la sequenza di installazione e tutti i file coinvolti nella configurazione e tutto a posto.
qualche idea?
Commento di mac — 23 Aprile 2009 @ 17:02 |
HowTo: Make Ubuntu a perfect Mac File Server and Time Machine Volume…
For quite some time I use my Ubuntu machine as a file and backup
server for all Macs in my network which is perfectly accessible from
the Finder in Mac OS X. There are some instructions available in the
web for this task but all failed in my case so…
Trackback di B&L Informatik Blog — 22 Settembre 2009 @ 23:27 |
scusa io ho una lenny e non riesco ad installare il tuo netatalk_2.0.3-brando0_i386.deb
mi dice che mancano le dipendenze “libgnutls13″
ma non riesco ad installarla
cosa devo fare?
grazie
Commento di ilgio — 21 Ottobre 2009 @ 10:27 |
Il mio pacchetto netatalk_2.0.3-brando0_i386.deb è stato compilato su e per Ubuntu 8.04 e la versione di libgnutls disponibile su quella distribuzione è libgnutls13, mentre quella presente su Debian Lenny è libgnutls26.
Quindi ti si aprono due strade:
presi da Ubuntu 8.04, entrambi per architettura i386 (come, del resto, anche la mia versione di netatalk…).
C’è già stato un tentativo documentato (commento 4) di ricompilare Netatalk per Lenny e pare che non abbia funzionato… tu potresti provare a seguire la seconda strada che, tutto sommato, mi sembra più semplice. Mi raccomando: facci sapere come è andata!
Commento di gpz500 — 21 Ottobre 2009 @ 15:07 |