[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume] [parte]


Capitolo 139.   Samba e utenze Unix

Samba è un programma servente che offre dei servizi di rete, tali da consentire a elaboratori con sistemi MS-Windows di accedere a risorse condivise. Samba è in grado di gestire il protocollo SMB/CIFS (Server message block) e anche NetBIOS. In questo capitolo si vuole considerare la possibilità di condividere le stesse utenze Unix, in modo che da elaboratori con sistemi MS-Windows, ogni utente possa accedere alla propria directory personale presso un elaboratore funzionante con un sistema GNU/Linux. Tuttavia, i dettagli sulla configurazione della rete non vengono affrontati (riguardano il volume X), inoltre la configurazione stessa della gestione delle utenze di Samba viene considerata nel modo più simile al modello Unix tradizionale.

139.1   Avvio del servizio di rete

Samba può essere avviato in due modi: come demone indipendente, oppure sotto il controllo del supervisore dei servizi di rete (capitolo 297). La prima ipotesi è la migliore se si attende un uso frequente del servizio, mentre la seconda va bene per una rete molto contenuta. Generalmente è la stessa procedura di installazione a chiedere all'utente come va predisposto il servizio di Samba e diversamente occorre approfondire la questione nella documentazione originale. Eventualmente, va tenuto presente che per una gestione del servizio in modo indipendente dal supervisore dei servizi di rete, occorre provvedere ad avviare i demoni nmbd (per il protocollo NetBIOS) e smbd (per il protocollo SMB/CIFS); pertanto vanno lette le pagine di manuale nmbd(8) e smbd(8):

nmbd -D[Invio]

smbd -D[Invio]

L'opzione -D, evidenziata negli esempi, rappresenta la richiesta ai programmi di funzionare sullo sfondo, come demoni.

139.2   Configurazione essenziale

La configurazione di Samba avviene con il file /etc/samba/smb.conf. L'esempio seguente rappresenta un modello generalizzato per la gestione di un servizio di condivisione delle directory personali degli utenti, attraverso i protocolli di MS-Windows. Logicamente, la stringa «il mio servente Samba» e i due nomi «miosmb», vanno modificati secondo la propria preferenza:

[global]
    server string = il mio servente Samba
    workgroup = MIOSMB
    netbios name = miosmb
    hosts allow = 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
    local master = no
    domain master = no
    security = user
    hostname lookups = no
    dns proxy = no
    log file = /var/log/samba/log.%h
    max log size = 0
    log level = 1
    encrypt passwords = true
    smb passwd file = /etc/samba/smbpasswd
    passdb backend = smbpasswd:/etc/samba/smbpasswd
    invalid users = root shutdown reboot nobody daemon bin sys \
  \sync games man lp mail news uucp proxy dip postgres www-data \
  \backup msql operator list irc gnats ftp sshd clamav bind saned \
  \dansguardian partimag wims fetchmail messagebus Debian-console-log [homes] comment = personal data browseable = no writable = yes create mask = 0755 directory mask = 0755

La tabella successiva descrive alcune direttive relative alla sezione globale (global) del file di configurazione. La sezione homes riguarda specificatamente l'accessibilità delle directory personali degli utenti: il senso delle direttive dell'esempio dovrebbe essere intuitivo; in particolare si può osservare la maschera per la creazione dei file e delle directory, che nell'esempio consente di ottenere file e directory accessibili e leggibili da chiunque.

Tabella 139.2. Alcune direttive per la configurazione di Samba, nella sezione global.

Direttiva Descrizione
server string = descrizione
Descrizione del servente.
workgroup = nome
Nome del gruppo di lavoro a cui appartiene l'elaboratore.
netbios name = nome
Nome dell'elaboratore per il protocollo NetBIOS.
hosts allow = elenco
Elenco di insiemi di elaboratori che possono accedere al servizio.
security = user
Seleziona il tipo di controllo di accesso. In questo caso il controllo è a livello di utente.
log file = modello_file
Definisce il file o i file da usare per annotare ciò che succede. Nell'esempio si usa il modello /var/log/samba/log.%h, con il quale si crea un solo file denominato log.hostname (ovvero «log.» seguito dal nome che restituisce il comando hostname) nella directory /var/log/samba/.
log level = n
Definisce il livello di dettaglio delle annotazioni fatte nel file delle registrazioni. Il livello uno, come appare nell'esempio, è sufficiente per ottenere un rapporto degli accessi remoti.
encrypt passwords = true|false
Specifica se le parole d'ordine usate per l'autenticazione debbano viaggiare in forma cifrata o meno. Generalmente va attivata questa opzione (true), a meno di configurare diversamente i clienti MS-Windows.
passdb backend = smbpasswd:file
smb passwd file = file
Queste due direttive, assieme, definiscono il modo in cui Samba conserva le informazioni sugli utenti e il file che deve essere usato in pratica. I modelli mostrati sono scelti appositamente per usare la forma di un file di testo normale, vagamente simile a /etc/passwd.
invalid users = utenti
Consente di escludere l'accesso di alcuni utenti, tipicamente root e altri utenti speciali.

139.3   Elenco degli utenti

Secondo l'esempio di configurazione proposto nella sezione precedente, le utenze di Samba vengono annotate in un file di testo comune, strutturato concettualmente in modo simile a /etc/passwd. Per la precisione le righe di questo file hanno la struttura seguente:

utente:uid:pwd_1:pwd_2:opzioni:ultima_modifica

Come si vede, appaiono due versioni della stessa parola d'ordine cifrata; la prima serve a sistemi MS-Windows 95/98, mentre la seconda serve a sistemi MS-Windows NT e conformi. L'aspetto di una di queste righe è simile all'esempio seguente:

...
tizio:1001:981BB8DA...D3745EDF4:3C9CFFE...C0FD6:[U          ]:LCT-4723A492:
...

Il campo delle opzioni contiene delle lettere tra parentesi quadre; nell'esempio, la lettera «U» indica che si tratta di un utente comune. L'ultimo campo che contiene la data di ultima modifica dell'utenza, inizia con la sigla «LCT» (Local change time) e prosegue con un trattino e poi un numero che rappresenta il tempo trascorso a partire dall'epoca di riferimento (l'ora zero del primo gennaio 1970).

139.4   Gestione delle utenze

Per la gestione delle utenze di Samba si usa il programma smbpasswd; tuttavia va osservato che le utenze che si creano per Samba devono essere già esistenti nel file /etc/passwd (Unix), mentre la loro eliminazione riguarda solo la rimozione dal file /etc/samba/smbpasswd, o da qualunque altro sistema Samba utilizzi per tale funzione.

smbpasswd [opzioni] [utente]

Questo programma, se usato senza argomenti, si limita a cambiare la parola d'ordine dell'utente Unix attuale, usata però per accedere da un sistema MS-Windows. Attraverso l'uso di opzioni e con l'indicazione di un nominativo utente è possibile, tra le altre cose, eliminare un'utenza di Samba o crearne una nuova. I comandi significativi sono quelli seguenti:

Il cambiamento della parola d'ordine necessaria per accedere all'utenza di Samba, può essere cambiata anche eliminando e ricreando l'utenza.

139.5   Allineamento delle utenze

Quando si utilizza Samba, secondo le modalità descritte in questo capitolo, per una gestione di utenze affiancata a quella in stile Unix, si pone evidentemente il problema di gestire uniformemente le due cose, soprattutto per ciò che riguarda la parola d'ordine necessaria per accedere. Viene qui proposto un metodo molto «semplice», almeno sul piano realizzativo, attraverso l'uso di script personali.

Il brano seguente, relativo a uno script per una shell POSIX, mostra in che modo potrebbe essere creata un'utenza, sia per la gestione in stile Unix, sia per Samba, ma tutto è molto semplificato e privo di controlli, pertanto va poi esteso e migliorato secondo le proprie abilità:

...
# $UTENTE è il nome dell'utente creato.
# $GECOS  è la descrizione dell'utente (priva di caratteri vietati).
# $PASSWD è la parola d'ordine stabilita per accedere.
...
#
# Aggiunge l'utente Unix.
#
adduser --disabled-password \
        --no-create-home \
        --home /home/$UTENTE \
        --gecos "$GECOS"\
        $UTENTE
#
# Crea la directory personale Unix.
#
cp -dpR /etc/skel /home/$UTENTE
chown -R $UTENTE: /home/$UTENTE
#
# Elimina l'utente per Samba, nel caso dovesse esistere già.
#
smbpasswd -x $UTENTE 2> "/dev/null"
#
# Attribuisce la parola d'ordine.
#
if ( sleep 1 ; echo $PASSWD ; sleep 1 ; echo $PASSWD ) \
   | passwd $UTENTE 2> /dev/null
then
    if ( sleep 1 ; echo $PASSWD ; sleep 1 ; echo $PASSWD ) \
       | smbpasswd -s -a $UTENTE 2> /dev/null
    then
        true
    else
        echo "Non posso creare l'utenza Samba!"
    fi
else
    echo "Non posso creare l'utenza Unix!"
fi
...

Il brano successivo mostra come si potrebbe procedere per cambiare la parola d'ordine a un'utenza che è già operativa, ma come si vede si tratta solo di una riduzione dell'esempio già fatto, in quanto per Samba si procede con la rimozione dell'utenza e la sua nuova creazione:

...
# $UTENTE è il nome dell'utente creato.
# $PASSWD è la nuova parola d'ordine stabilita per accedere.
...
#
# Elimina l'utente per Samba.
#
smbpasswd -x $UTENTE 2> "/dev/null"
#
# Attribuisce la parola d'ordine.
#
if ( sleep 1 ; echo $PASSWD ; sleep 1 ; echo $PASSWD ) \
   | passwd $UTENTE 2> /dev/null
then
    if ( sleep 1 ; echo $PASSWD ; sleep 1 ; echo $PASSWD ) \
       | smbpasswd -s -a $UTENTE 2> /dev/null
    then
        true
    else
        echo "Non posso creare l'utenza Samba!"
    fi
else
    echo "Non posso creare l'utenza Unix!"
fi
...

139.6   Riferimenti


Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome samba_e_utenze_unix.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home]

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory