Integrazione di macchine mac os X in ambiente unix.



I passi necessari per integrare un mac in ambiente unix sono tre:

Nis

All'interno del dipartimento d'Informatica le informazioni vengono condivise tra le varie macchine attraverso un server nis. Il mac os può interrogare il nis attraverso ypbind, tuttavia non è in grado di utilizzare le password criptate per un problema di formato della mappa che viene fornita dal nis.

Per aggirare questo problema è necessario inserire le informazioni fornite dal nis nel database Netinfo. Questo database è il cuore dei servizi di rete di un mac, infatti raccoglie sia le informazioni relative agli utenti che quelle per l'automount che quelle per uscire fuori del dominio.

Per inserire i dati nel Netinfo sono stati creati due script: uno script che interroga il nis chiedendo i dati degli utenti e le password separatamente e li inserisce nel db con i comandi propri del mac os, e uno script che inserisce i gruppi.

Questo script è in grado di:

E' possibile far girare questo script su un solo mac e propagare le informazioni agli altri mac della rete,
eleggendo questo mac master Netinfo e configurando gli altri perché lo interroghino.
Ovviamente questo vale per tutti i servizi di rete.

Configurazione preliminare mac


Backup della configurazione corrente


Loggarsi come amministratore del sistema o come root. Se si è connessi alla console aprire un terminale.
Digitare il seguente commando per fare una copia della configurazione corrente:

cp /etc/hostconfig /etc/hostconfig.backup

Se si sta usando Rhapsody o Mac OS X Server 1.x, digitare:

cp -R /etc/netinfo/local.nidb /etc/netinfo/local.nidb.backup

Per le altre versioni digitare

cp -R /var/db/netinfo/local.nidb /var/db/netinfo/local.nidb.backup

Attivazione nis



  1. Verificare che il portmapper sia attivo, digitare

    rpcinfo -p

    l'output deve essere del tipo:

    program vers proto port
    100000 2 tcp 111 portmapper
    100000 2 udp 111 portmapper
    200100001 1 udp 938 netinfobind
    200100001 1 tcp 941 netinfobind

    se così non è attivarlo col commando:

    portmap

  2. Comunicare al mac il dominio di appartenenza col comando:

    domain di.unipi.it

  3. Attivare il nis con il commando

    ypbind

    questo programma cercherà il nis server al interno del dominio, quindi potrebbe metterci qualche secondo, ma se non si ha una risposta in una decina di secondi potrebbe esserci qualche problema.

  4. Perché il nis sia attivo automaticamente dopo il boot della macchina occorre modificare il file /etc/hostconfig mettendo


    NISDOMAIN= di.unipi.it
    RPCSERVER=-YES-



  5. Cambiare l'ordine di interrogazione del Netinfo attraverso questa procedura:

    creare un file lookupd.txt e inserirci queste righe.

    {
    "LookupOrder" = ( "CacheAgent", "NIAgent", "YPAgent" );
    "name" = ( "lookupd" );
    "MaxThreads" = ( "12" );
    CHILDREN = (
    {
    "name" = ( "groups" );
    "LookupOrder" = ( "CacheAgent", "NIAgent", "YPAgent" );
    },
    {
    "name" = ( "users" );
    "LookupOrder" = ( "CacheAgent", "NIAgent", "YPAgent" );
    },
    {
    "name" = ( "hosts" );
    "LookupOrder" = ( "CacheAgent", "NIAgent", "YPAgent", "DNSAgent", "NILAgent" );
    },
    {
    "name" = ( "netgroups" );
    "LookupOrder" = ( "CacheAgent", "NIAgent", "YPAgent" );
    }
    )
    }


    caricare le informazioni nel Netinfo attraverso questi comandi:


    1. niutil -create . /locations/lookupd
    2. niload -r /locations/lookupd .< lookupd.txt

A questo punto il mac è in grado di interrogare il nis e riconoscere gli utenti, gli utenti però non possono ancora loggarsi perchè la password di dominio non viene riconosciuta. A questo punto è necessario eseguire lo script aggmac.pl al termine del quale tutti gli utenti definiti sul dominio potranno accedere al mac e lo script aggroup.pl per inserire anche i gruppi.

Per vedere la sintassi corretta per inserire un utente nel database vedere più sotto

Nfs Client


Per fare in modo che un utente definito sul dominio loggandosi su un mac si trovi nella sua home dipartimentale, è necessario mettere il mac in condizione di montare le directory esportate dai vari home server presenti in dipartimento.
Il mac ha un automount proprietario diverso da quello usato su linux, in particolare non ha un amd.
L'automount legge le informazioni dal database Netinfo quindi la cosa più semplice da fare è inserire i dati richiesti nel db e riavviare l'automount.

Per fare questo è stato creato uno script che recupera host, mount point e percorso da un server, le formatta secondo la sintassi dei comandi di Netinfo e li inserisce più sotto in questo caso non sono necessarie operazioni preliminari, in quanto il mac è del tutto svincolato dal resto del dominio se non per il recupero delle informazioni che avviene con una semplice chiamata di sistema all'interno dello script.
Le operazioni eseguite dallo script utilizzano i comandi che possono essere impartiti dal terminale, le stesse azioni possono essere ripetute dall'utente tramite interfaccia grafica accedendo al Netinfo manager.

Perché la cosa funzioni è necessario che il mac riesca a connettersi al server in ssh senza dare la password. Vedi documento ssh.html

Nfs Server


Per fare in modo che un utente possa esportare la home dal proprio mac, è necessario attivare il servizio di nfs e inserire nel db Netinfo i dati della directory da esportare. La procedura è simile a quella seguita per configurare il client nfs, percontinuità è riportata solo la versione a riga di comando, ma le stesse operazioni si possono fare attraverso il Netinfo manager. Supponiamo di voler esportare la directory /external/path:

  • sudo nicl . -create /exports/\\/external\\/path
  • sudo nicl . -append /exports/\\/external\\/path clients ""
  • sudo nicl . -append /exports/\\/external\\/path opts ro
  • Attenzione: la struttura che andiamo a creare deve essere exports , il nome è importante perchè se è diverso non viene fatta l'esportazione dei filesystem.

    Per esportare i filesystem è necessaria la presenza di tre demoni: portmapper, mountd e nfsd. Al momento del boot la presenza di questa struttura fa partire i demoni mountd e nfsd. Se si vogliono far partire senza il boot è necessario tener presente che l'ordine di partenza è importante:

  • cd /
  • sudo /usr/sbin/portmap
  • sudo /usr/sbin/mountd
  • sudo /sbin/nfsd -t -u -n 6
  • Se la procedura è andata a buon fine eseguendo il comando:

    showmount -e

    si otterrà un output simile al seguente:

    Exports list on localhost:
    /external/path        Everyone


    e sarà possibile accedere al file system da remoto.

    Una nota importante sulla sicurezza: inserire il campo vuoto nella property clients permette a chiunque di accedere al file system, mentre mettere opts ro limita alla sola lettura gli accessi da parte di chiunque. Nel caso si vogliano esportare delle home directory, si suggerisce di inserire il nome proprietario nel campo client e rw nel campo opts.

    Backup

    Al dipartimento d'Informatica viene usato il software Amanda per fare il backup dei filesystem. Il mac os X appartiene alla famiglia degli unix, quindi non ci sono particolari problemi per installare il client amanda. La procedura da seguire è riportata di seguito, sono date per scontate le installazioni di gcc, make e hfstar.

    Creazione dell'utente amanda

    Al momento dell'istallazione deve essere specificato l'utente e il gruppo con cui girerà il client amanda, la convenzione è che l'utente si chiami amanda e il gruppo wheel, di seguito la procedura per creare l'utente.

    1. sudo nidump passwd . > pwdtmp
    2. echo 'amanda:*:5000:0::0:0:Amanda backup user:/Users/amanda:/bin/tcsh' >> pwdtmp
    3. sudo niload passwd . < pwdtmp
    4. rm pwdtmp
    5. sudo mkdir /Users/amanda
    6. sudo chown amanda /Users/amanda
    7. sudo passwd amanda

    Creazione file .amandahosts

    In questo file viene indicato il nome del server amanda che si connetterà al client per fare il dump dei dati.

    1. sudo su - amanda
    2. echo 'karnak.di.unipi.it' > .amandahosts
    3. exit

    compilazione client amanda


    Questa sezione indica dove scaricare il software e come compilarlo, nel nostro caso stiamo installando solo il client quindi come parametro del configure mettiamo --without-server.

    1. wget http://unc.dl.sourceforge.net/sourceforge/amanda/amanda-2.4.4.tar.gz
    2. tar xvzf amanda-2.4.4.tar.gz
    3. cd amanda-2.4.4
    4. ./configure --with-user=amanda --with-group=wheel --prefix=/usr/local --without-server --with-config='backupset' --with-gnutar=/usr/local/hfstar/bin/tar
    5. make
    6. sudo make install
    .

    Inserimento di amanda tra i servizi

    Nel caso si usi xinetd creare uno file in /etc/xinetd.d chiamato amanda e inserire le seguenti righe
    service amanda

    {
    socket_type = dgram
    protocol = udp
    wait = yes
    user = amanda
    server = /usr/local/libexec/amandad
    server_args = amandad
    groups = yes
    disable = no
    }

    Nel caso si usi inetd inserire la seguente linea nel inetd.conf

    amanda dgram udp wait amanda /usr/local/libexec/amandad amandad

    Nel caso di xinetd avviare il servizio con il comando

    service amanda start

    Altrimenti riavviare inetd

    prima di provare a fare dump e restore, creare il file amandates e la directory gnutar-list .


    touch /etc/amandates
    chown amanda.wheel /etc/amandates
    mkdir -R /usr/local/var/amanda/gnutar-lists/
    chown amanda.wheel /usr/local/var/amanda/gnutar-lists
    /


    ed eseguire un check della configurazione dal server:

    amcheck nome.conf

    se non ci sono errori si può procedere con il backup.

    Comandi per interagire con Netinfo