Utenze condivise e configurazione automatica con NLNX

smb.conf u0.4

Quando si installa NLNX può essere conveniente predisporre un servizio di condivisione delle utenze e delle directory personali, assieme a un meccanismo di configurazione automatica, utile in particolare per gli elaboratori avviati con un DVD live o comunque con un file system in sola lettura.

Tabella u44.4. Script nlnxrc: configurazione del servizio DHCP.

Comando Descrizione
nlnxrc dhcp-server config
nlnxrc dhcp-server unconf
Attiva o disattiva il funzionamento in qualità di servente DHCP.
nlnxrc dhcp-server edit
Modifica la configurazione del servente DHCP, intervenendo nel file di configurazione in modo libero.

Condivisione delle utenze attraverso NIS, NFS e Samba

Attraverso i protocolli NIS e NFS, NLNX può consentire la condivisione delle utenze e delle directory personali in una rete locale; inoltre, attraverso Samba, le directory personali degli utenti sono accessibili anche attraverso sistemi MS-Windows.

Si osservi che la procedura prevista per NLNX richiede che sia il NIS, sia le directory personali da condividere con il protocollo NFS e attraverso Samba, si trovino nello stesso elaboratore; inoltre è indispensabile che le directory personali si articolino a partire da /home/.

La procedura predisposta da NLNX prevede la pubblicazione del contenuto dei file /etc/passwd, /etc/shadow e /etc/group, ignorando ogni altro file che il NIS potrebbe fornire.

Figura u61.1. NIS, NFS e Samba offerti da un elaboratore in cui è installato NLNX.

NIS e NFS con NLNX

Per attivare il NIS in modo da offrire alla rete locale la condivisione dei file /etc/passwd, /etc/shadow e /etc/group, si procede come segue:

nlnxrc nis-server config[Invio]

.--------NIS domain----------.
| Please insert the NIS      |
| domain:                    |
| .------------------------. |
| |                        | |
| `------------------------' |
|----------------------------|
|   <  OK  >  <Cancel>       |
`----------------------------'

Il dominio NIS viene deciso liberamente, in questo caso scegliendo il nome nis.domain:

nis.domain<OK>

.--------NIS server----------.
| Please insert the NIS      |
| server IPv4 address:       |
| .------------------------. |
| |172.21.254.254          | |
| `------------------------' |
|----------------------------|
|   <  OK  >  <Cancel>       |
`----------------------------'

Si presume che la rete interna sia già stata configurata, pertanto l'indirizzo viene proposto in modo automatico:

172.21.254.254<OK>

Un risultato equivalente avrebbe potuto essere ottenuto attraverso le opzioni di avvio seguenti:

n_nis_domain=nis.domain n_nis_server=172.21.254.254

Naturalmente, la condivisione delle informazioni contenute nei file delle utenze non è sufficiente: occorre condividere anche le directory personali degli utenti. Se la configurazione di NLNX non è stata modificata, la directory /home/ risulta accessibile a qualunque nodo di rete con indirizzi IPv4 privati.

Prima di questo capitolo è spiegato in che modo configurare un nodo cliente per servirsi di un servizio NIS e NFS. In quel caso, è possibile distinguere i due serventi, mentre se si offre il servizio con NLNX, la procedura richiede che entrambi i servizi risiedano assieme nello stesso elaboratore (presso lo stesso indirizzo IPv4).

Si osservi che per motivi pratici, lo script /etc/profile di NLNX, se riesce a determinare dalla configurazione che il proprio elaboratore dovrebbe ricoprire il ruolo di servente NIS, rifiuta l'accesso degli utenti comuni.

Il file di configurazione /etc/default/nis viene modificato automaticamente dallo script nlnxrc; tuttavia, se si vuole evitare che il servente NIS metta in funzione il demone ypbind (che procura una serie di inconvenienti), è bene aggiungere la riga seguente in quel file:

...
NISCLIENT=false
...

Se questa riga è presente, viene gestita correttamente da nlnxrc, anche quando si configura il funzionamento come cliente NIS.

Utilizzo di SSHfs al posto di NFS

Quando un utente tenta di accedere attraverso il sistema grafico, se la sua directory personale non è presente e invece è stato configurato il riferimento a un servente NIS o NFS, viene tentato un collegamento a tale servente con l'ausilio di SSHfs. Pertanto, da una finestra di terminale viene chiesto ulteriormente di fornire la parola d'ordine per accedere, quindi viene concesso di accedere alla propria directory personale attraverso un tunnel SSH.

Figura u61.5. NIS, SSH e Samba offerti da un elaboratore in cui è installato NLNX.

NIS e SSH con NLNX

Infatti, il servizio NFS per la condivisione delle directory personali degli utenti, gestito da NLNX, è quello della versione 3, non cifrato, il quale può andare bene in una piccola rete locale, in cui non ci sia il pericolo di comportamenti scorretti da parte degli utenti. Pertanto, quando non ci si può accontentare, presso il servente è meglio disabilitare la condivisione della directory /home/ tramite il servizio NFS, lasciando così che le connessioni alle directory personali avvengano tramite SSHfs.

Si osservi, comunque, che l'accesso ai propri dati personali tramite SSHfs, non è equivalente a quello che si ha con un servizio NFS, perché si vedono esclusivamente i propri dati. Per esempio, se con NFS viene condivisa una directory (a partire da /home/) con i permessi per tutti gli utenti, questa directory risulterebbe inaccessibile. A tale proposito, presso il servente è bene condividere la directory /data/ (con NFS), per collocare lì i dati che devono essere disponibili a tutti e per i quali non ci sono problemi di segretezza.

Gestione delle utenze

Quando si attiva un servente NIS-NFS, è necessario gestire le utenze esclusivamente nell'elaboratore che offre questo servizio. In generale, una volta installato NLNX secondo la modalità normale, si potrebbero utilizzare gli strumenti consueti per tale gestione, ma è meglio avvalersi in ogni caso dello script nlnxrc:

nlnxrc user add
nlnxrc user del [utente]
nlnxrc user passwd
nlnxrc user description
nlnxrc user info

La sintassi dovrebbe essere già comprensibile così: add aggiunge un utente; del lo elimina, assieme alla sua directory personale; passwd consente di cambiargli la parola d'ordine per accedere; description consente di cambiarne la descrizione; info consente di ottenere le informazioni sintetiche di un'utenza.

Per motivi pratici, la directory personale dell'utente che viene creato contiene nel percorso un'informazione aggiuntiva che, in caso non sia specificata e non siano presenti altri esempi del genere, è costituita dall'anno di creazione, per individuare in modo molto semplice le utenze più vecchie, senza bisogno di interrogare il file /etc/shadow. Per esempio, se nell'anno 2012 si crea l'utenza pippo e si segue ciò che viene proposto, si ottiene la directory personale /home/2012/pippo/.

L'utilizzo del comando nlnxrc user add ha anche il vantaggio di facilitare l'inserimento di più utenze, dal momento che alla fine di ogni inserimento ne viene proposto subito un altro (che comunque può essere annullato); inoltre, al termine degli inserimenti viene riallineato il NIS.

Samba

La configurazione di Samba non viene gestita tramite nlnxrc, ma rimane da sistemare a mano. Il file predefinito ha l'aspetto seguente, commenti inclusi, e ha lo scopo di consentire l'accesso ai propri dati personali:

[global]
    server string = default NLNX configuration
    workgroup = NLNX
    netbios name = nlnx00
    local master = no
    domain master = no
#   local master = yes
#   domain master = yes
#   preferred master = yes
#   os level = 64
#   domain logons = yes
#   logon path = \\%L\profiles\%u
#   wins support = yes
#   time server = yes
    security = user
    hostname lookups = no
    hosts allow = 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 \
  \192.168.0.0/16 dns proxy = no log file = /var/log/samba/log.%m max log size = 1000 log level = 3 encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd passdb backend = smbpasswd:/etc/samba/smbpasswd socket options = TCP_NODELAY hide files = /Desktop/Mail/mail/dosemu/ # load printers = yes # printing = bsd # printcap name = /etc/printcap unix password sync = yes passwd program = /usr/bin/passwd %u pam password change = yes [homes] comment = home directories browseable = no writable = yes create mask = 0755 directory mask = 0755 #[netlogon] # path = /home/.samba/netlogon # writeable = no # browseable = no # guest ok = yes #[profiles] # path = /home/.samba/profiles # browseable = no # writeable = yes # create mask = 0600 # directory mask = 0700 #[examples] # comment = examples # browseable = yes # path = /home/examples # writable = no # public = yes #[printers] # comment = All Printers # browseable = no # path = /tmp # printable = yes # public = no # writable = no # create mode = 0700 #[print$] # comment = printer drivers # path = /var/lib/samba/printers # browseable = yes # read only = yes # guest ok = no

Nel file appaiono delle direttive commentate, allo scopo di avere un'idea delle voci che si potrebbero aggiungere. Le direttive evidenziate sono quelle che vanno modificate quasi sicuramente. In ogni caso, se si installa NLNX su più di un elaboratore è bene che le prime direttive siano differenti; inoltre, se l'installazione prevede la concentrazione delle utenze e delle directory personali, è bene che Samba sia in funzione solo in quello che gestisce effettivamente le utenze.

Per accedere alle directory personali, attraverso un sistema MS-Windows, gli utenti devono seguire una procedura che varia in funzione della versione di tale sistema operativo. Quello che si vede negli schemi successivi è una semplificazione che dovrebbe consentire di comprendere il procedimento, adattandolo poi alla realtà del proprio sistema.

Figura u61.7. Aggiunta di una risorsa di rete.

aggiunta di una risorsa di rete

Figura u61.8. Indicazione del percorso della risorsa. Si suppone che l'elaboratore in cui è in funzione NLNX con il servizio Samba per la condivisione delle directory personali sia raggiungibile all'indirizzo IPv4 192.168.1.253. Inoltre, l'utente ipotetico è denominato «rossimario».

percorso della risorsa

Figura u61.9. La risorsa risulta disponibile ed è possibile accedervi come se fosse un'unità a disco. Una volta collegata la risorsa, si suppone di voler salvare al suo interno un file con il nome miofile.

salvare in una risorsa di rete, specificando il percorso

È molto probabile che il sistema MS-Windows chieda di memorizzare la parola d'ordine inserita: è evidente che ciò non va fatto, altrimenti un estraneo potrebbe accedere conoscendo semplicemente il nominativo-utente. Inoltre, al termine dell'utilizzo della risorsa, è necessario procedere al suo distacco, come si farebbe con un'unità rimovibile, altrimenti i dati rimarrebbero accessibili.

Le figure successive mostrano il procedimento in un sistema MS-Windows 7.

Figura u61.10. Per connettersi a una risorsa di rete è necessario selezionare la voce {Connetti unità di rete} contenuta nel menù che si ottiene premendo il tasto destro sulla voce {Computer}.

NLNX: Windows 7: connetti unità di rete

Figura u61.11. Si deve quindi specificare il percorso per raggiungere la propria cartella; in questo caso si tratta dell'elaboratore 172.17.1.254 e la cartella ha il nome giacominidaniele.

NLNX: Windows 7: connetti unità di rete

Figura u61.12. Se il percorso specificato esiste, viene richiesto di identificarsi.

NLNX: Windows 7: connetti unità di rete

Figura u61.13. Successivamente, per chiudere la connessione con un'unità di rete occorre utilizzare nuovamente il menù che si ottiene facendo un clic con il tasto destro del mouse sopra la voce {Computer}.

NLNX: Windows 7: disconnetti unità di rete

Le utenze di Samba

Samba utilizza il file /etc/samba/smbpasswd per tenere traccia degli utenti. Questo file è incompatibile con /etc/passwd e per mantenere le utenze Unix allineate con quelle del protocollo SMB è necessario utilizzare i comandi di nlnxrc:

nlnxrc user add
nlnxrc user del [utente]
nlnxrc user passwd

Servente DHCP

In condizioni normali, prima che sia stata inserita una propria configurazione per l'utilizzo della rete, NLNX utilizza il protocollo DHCP per tentare di configurarsi in modo automatico. Tale configurazione automatica, se le informazioni sono disponibili, si spinge anche all'uso del NIS, della condivisione delle directory personali, della stampa condivisa in rete, della gestione di un registro complessivo.

In generale, l'uso predefinito del protocollo DHCP serve soprattutto per facilitare il funzionamento di NLNX da unità in sola lettura, quando è già disponibile tale servizio e non si deve fare un lavoro specifico. Quando invece si vuole usare il DHCP anche per la condivisione delle utenze e gli altri servizi, diventa indispensabile attivare il proprio servente DHCP.

NLNX è pensato in modo particolare per il contesto di una rete usata a scuola, dove è molto facile entrare in conflitto con altri servizi DHCP, probabilmente di altri sistemi operativi. Il servente DHCP di NLNX può essere attivato in un elaboratore che funge da router, ma se si vuole isolare il servizio DHCP rispetto alle altre reti, è indispensabile che l'elaboratore che svolge il lavoro sia provvisto di due interfacce di rete, una rivolta alla rete locale da servire e una rivolta all'esterno, o al resto della rete del complesso, per evitare queste interferenze. Pertanto, se non è possibile isolare la propria rete attraverso un router composto da due interfacce ed esistono altri servizi DHCP accessibili, è meglio evitare l'uso del DHCP con NLNX.

Figura u61.14. La situazione prevista, con esempi di indirizzi, per l'utilizzo di un servente DHCP con NLNX.

router per collegare una rete locale a una rete più grande

In base all'esempio mostrato nella figura, si può procedere alla configurazione del servente DHCP nel modo seguente:

nlnxrc dhcp-server config[Invio]

.-----------------------DHCP range-------------------------.
| Current "/etc/dhcp3/dhcpd.conf" file might be set as it  |
| follows:                                                 |
|                                                          |
| ddns-update-style none;                                  |
| subnet 172.21.0.0 netmask 255.255.0.0 {                  |
| #  range 172.21.254.100 172.21.254.199;                  |
|   option broadcast-address 172.21.255.255;               |
|   option routers 172.21.254.254;                         |
|   option domain-name-servers 172.21.254.254;             |
|   option time-servers 172.21.254.254;                    |
|   option ntp-servers 172.21.254.254;                     |
|   option root-path "172.21.254.254:/";                   |
|   option nis-domain "nis.nano";                          |
|   option nis-servers 172.21.254.254;                     |
|   option lpr-servers 172.21.254.254;                     |
|   option log-servers 172.21.254.254;                     |
| }                                                        |
|                                                          |
| Please insert or confirm the DHCP address range:         |
| .------------------------------------------------------. |
| |172.21.254.100 172.21.254.199                         | |
|-`------------------------------------------------------'-|
|                  <  OK  >          <Cancel>              |
`----------------------------------------------------------'

Dal momento che è stato stabilito di usare un intervallo di indirizzi differente per il DHCP, il valore viene cambiato:

[Canc][Canc]...

172.21.1.100 172.21.1.199<OK>

Successivamente viene chiesto se si vuole definire qualche abbinamento fisso tra indirizzi Ethernet e indirizzi IPv4. Come si intuisce dall'esempio che viene mostrato, gli indirizzi IPv4 che si associano sono diversi dal pacchetto attribuito in modo dinamico:

172.21.1.1  00:0B:6A:64:8C:F7
172.21.1.2  00:0B:6A:64:8C:F8
172.21.1.3  00:0B:6A:64:9C:A3

Per l'inserimento di questi indirizzi si usa un programma di modifica di file di testo e le variazioni vanno salvate lasciando il nome predefinito del file temporaneo utilizzato. Al termine viene mostrato un sunto della configurazione attuale, da confermare:

.--------------DHCP server configuration----------------.
| Is the following configuration correct?               |
|                                                       |
| ddns-update-style none;                               |
| option option-128 code 128 = string;                  |
| option option-129 code 129 = text;                    |
| next-server 172.21.254.254;                           |
| subnet 172.21.0.0 netmask 255.255.0.0 {               |
|   range 172.21.1.100 172.21.1.199;                    |
|   option broadcast-address 172.21.255.255;            |
|   option routers 172.21.254.254;                      |
|   option domain-name-servers 172.21.254.254;          |
|   option time-servers pool.ntp.org;                   |
|   option ntp-servers pool.ntp.org;                    |
|   option root-path "172.21.254.254:/opt/NLNX";        |
|   option nis-domain "nis.domain";                     |
|   option nis-servers 172.21.254.254;                  |
|   option lpr-servers 172.21.254.254;                  |
|   option log-servers 172.21.254.254;                  |
|   use-host-decl-names      on;                        |
|   filename "/pxelinux/pxelinux.0";                    |
| }                                                     |
|-------------------------------------------------------|
|               <  Yes  >        <  No  >               |
`-------------------------------------------------------'

Se la configurazione proposta è quella che si desidera, si può confermare:

<Yes>

Altrimenti si annulla, salvando ugualmente al configurazione, ma senza attivare immediatamente il servizio:

<No>

Se la configurazione ottenuta non è quella desiderata (per esempio il dominio NIS non è quello voluto oppure alcuni servizi sono riferiti a indirizzi errati), conviene modificarla attraverso il comando seguente:

nlnxrc dhcp-server edit[Invio]

Con questo si passa alla modifica diretta del file /etc/dhcp3/dhcpd.conf. Quando si salva, si riavvia il servizio DHCP. In base all'esempio, la configurazione ottenuta sarebbe quella seguente:

ddns-update-style none;
option option-128 code 128 = string;
option option-129 code 129 = text;
next-server 172.21.254.254;

subnet 172.21.0.0 netmask 255.255.0.0 {
  range 172.21.1.100 172.21.1.199;
  option broadcast-address 172.21.255.255;
  option routers 172.21.254.254;
  option domain-name-servers 172.21.254.254;
  option time-servers pool.ntp.org;
  option ntp-servers pool.ntp.org;
  option root-path "172.21.254.254:/opt/NLNX";
  option nis-domain "nis.domain";
  option nis-servers 172.21.254.254;
  option lpr-servers 172.21.254.254;
  option log-servers 172.21.254.254;
  use-host-decl-names      on;
  filename "/pxelinux/pxelinux.0";
  host 172.21.1.1 { hardware ethernet 00:0B:6A:64:8C:F7; fixed-address 172.21.1.1; }
  host 172.21.1.2 { hardware ethernet 00:0B:6A:64:8C:F8; fixed-address 172.21.1.2; }
  host 172.21.1.3 { hardware ethernet 00:0B:6A:64:9C:A3; fixed-address 172.21.1.3; }
}

«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net