L’Airone al servizio del Leopardo [Update 3]

Immagine gentilmente concessa da Matthias Kretschmann, ispiratore di questo articolo (clicca sull'immagine per vederla nel suo contesto originale).

Immagine gentilmente concessa da Matthias Kretschmann, ispiratore di questo articolo (clicca sull'immagine per vederla nel suo contesto originale).

Update 3: per versioni recenti di Ubuntu (Lucid e successive) segnalo questo commento: #comment-166.
Update 2: aggiunta una sezione su come usare il volume di rete con Time Machine.
Update 1: 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:

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!

Advertisements

29 Pensieri su &Idquo;L’Airone al servizio del Leopardo [Update 3]

  1. Pingback: HowTo: Make Ubuntu A Perfect Mac File Server And Time Machine Volume [Update6] › Blog › kremalicious.com » Matthias Kretschmann | Photography & Design

  2. Pingback: Ubuntu and Mac OS X Integration - blog.scottlowe.org - The weblog of an IT pro specializing in virtualization, storage, and servers

  3. 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?

  4. Pingback: B&L Informatik Blog

  5. 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

    • 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:

      1. ricompilare netatalk su Lenny partendo dai sorgenti seguendo una delle guide disponibili in rete; oppure
      2. installare sulla tua Lenny, prima del mio netatalk, anche i pacchetti seguenti (nello stesso ordine):

        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!

  6. Ottima guida, grazie.

    Credo vi sia un piccolo refuso.

    ~/ “$u’s Home” cnidscheme:dbd options:usedots

    dovrebbe invece essere

    ~/ $u”‘s Home” cnidscheme:dbd options:usedots

  7. Ecco, l’anomalia è questa. Io senza cambiare la stringa, collegandomi normalmente dal finder al server linux vedevo proprio “$u’s Home”.

  8. Ciao, mi appresto a installare un server ubuntu utilizzando la versione 10.4. I pacchetti preparati da te sono funzionali anche su questa versione o c’è qualche modifica da fare? Grazie per la disponibilità.

    • La versione 10.04 “Lucid Lynx” di Ubuntu contiene netatalk 2.0.5 che risolve i problemi di licenza di cui si parla nell’articolo e supporta l’autenticazione criptata senza bisogno di ricompilare alcunché.
      Per installarlo devi usare da terminale il comando “sudo apt-get install netatalk”.

      Per configurarlo puoi seguire le istruzioni dell’articolo, tranne che per un particolare: il file /etc/netatalk/afpd.conf deve contenere, invece della linea indicata nell’articolo, quella che segue:
      - -transall -uamlist uams_clrtxt.so,uams_dhx2.so -nosavepassword

      • Grazie mille! Tutto quanto citato risolve sicuramente i problemi fino a OS 10.5. Sai se permangono invece i problemi tra netatalk e os 10.6 che erano emersi quando snow leopard è uscito?

      • Io non ho mai avuto nessun problema con Snow Leopard.
        Forse ti riferisci a Time Machine? In tal caso non saprei dire, perché non l’ho mai usato con il server Ubuntu: la connessione del mio Mac alla rete locale è solo via WiFi e ho sempre preferito, per motivi di performance, usare un hard-disk esterno per Time Machine.

  9. Pingback: BCD.ME.UK » Blog Archive » Backing up using Time Machine to an Ubuntu server

  10. Ho seguito la tua ottima guida che mi ha aiutato parecchio,
    una domanda: sai com’è possibile attivare la ricerca/indicizzazione di spotlight sulle share AFP?
    Non ho ancora provato con “mdutil -i on /Volume/Share” ma non vedo molti commenti positivi sul web.
    Grazie in anticipo.

  11. la mia configurazione funziona perfettamente..
    unica pecca è che ora su un mac con LION non riesco ad accedere alle risorse condivise.
    cioè inserisco utente e pass e mi dice:
    Si è verificato un errore durante la connessione.
    La versione del server a cui stai tentando di connetterti non è supportata.

    😦 che fare ?

      • mette solo questo

        Feb 1 10:33:48 chioccia afpd[16166]: ASIP session:548(5) from 192.168.1.104:50129(7)
        Feb 1 10:33:48 chioccia afpd[4531]: server_child[1] 16165 exited 1
        Feb 1 10:33:48 chioccia afpd[4531]: server_child[1] 16166 done

    • Non lo escludo affatto 😉 La versione 2.0.3 risale ormai a qualche anno fa… l’ultima rilasciata è la 2.2.2.
      Il problema è che, se sei fermo alla 2.0.3 è segno che anche la tua installazione di Ubuntu è un po’ stagionata: non so se troverai pacchetti nuovi per la tua distribuzione “vecchia”: probabilmente la cosa migliore è aggiornare Ubuntu almeno alla versione 10.04, che contiene già di serie netatalk 2.0.5 e che, lo uso correntemente, funziona con Lion (vedi anche #comment-166).

  12. ma dalla mia versione che ho non posso solo aggiornare a 2.05?
    ho provato a fare apt-get upgrade netatalk e mi da 250mb di aggiornamenti…
    praticamente mi aggiorna tutto il sistema
    😦

  13. Pingback: HowTo: Make Ubuntu A Perfect Mac File Server And Time Machine Volume [Update6] | kremalicious

  14. Pingback: HowTo: Make Ubuntu a Perfect Mac File Server and Time Machine Volume | Databases, Systems & Networks

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...