Particolarità varie di NLNX

clamav-home u0.5 nlnx.config u0.3 nlnx.hardware u0.3 nlnx.last u0.3 nlnx.mixed u0.3 nlnx.network u0.3 nlnx.ro-fs u0.3 rc.local u0.3 sysklogd u0.4

Le funzionalità principali di NLNX sono gestite attraverso lo script nlnxrc (/etc/script/nlnxrc) che può essere utilizzato anche senza argomenti, ottenendo così un menù delle funzionalità principali:

nlnxrc[Invio]

Figura u54.1. Come si presenta lo script nlnxrc quando viene avviato senza argomenti, per ottenere il menù dei comandi disponibili. Le voci sono raggruppate in base al contesto per le quali possono essere più interessanti.

.-------------------------------NLNX---------------------------------.
| nlnxrc menu                                                        |
| Some functions are reserved to "root" or might be reserved for     |
| usage with read-write or read-only file system: see "nlnxrc --help"|
| for a contextual command list.                                     |
| .^(-)------------------------------------------------------------. |
| |user add              #rw Add a new user                        | |
| |user del              #rw Remove an old user                    | |
| |user passwd           $rw Change the user password              | |
| |user info             #rw Show info on a selected common user   | |
| |home info             #rw Show info on a selected home directory| |
| |quota set             #rw Set user's disk quota                 | |
| |nis-server-users edit #rw Edit NIS server allowed users         | |
| |print maxpages        #   Set max pages to print with lpr/lp    | |
| |--------------------- ------------------------------------------| |
| |ssh hostkey           #   Make some new host keys               | |
| |ssh userkey           $   Make some new RSA keys for the user   | |
| |--------------------- ------------------------------------------| |
| `v(+)------------------------------------------------------------' |
|--------------------------------------------------------------------|
|                    <  OK  >            <Cancel>                    |
`--------------------------------------------------------------------'

Si osservi che all'inizio delle voci appaiono delle sigle: $ indica una funzione disponibile a tutti gli utenti; # indica una funzione disponibile soltanto all'amministratore; #ro è una funzione disponibile soltanto all'amministratore durante il funzionamento con un file system in sola lettura (come nel DVD live); #rw indica una funzione che si può utilizzare solo come amministratore, quando il sistema è installato in un disco normale (con accesso in lettura e scrittura).

ACPI

Il kernel standard di NLNX include delle funzionalità ACPI. In diversi casi, queste funzionalità sono limitate o disabilitate del tutto, perché all'avvio viene passata al kernel l'opzione acpi=strict o acpi=off, ma in tali situazioni si possono abilitare facilmente (inserendo all'avvio l'opzione acpi=on, oppure modificando la configurazione di GRUB 1 con il file grub/menu.lst, o di SYSLINUX con il file syslinux.cfg, una volta installato NLNX).

Quando sono attive le funzionalità ACPI, è possibile controllare sommariamente il tempo di ritardo per lo spegnimento dei dischi, attraverso nlnxrc:

nlnxrc acpi spindown[Invio]

Se si vuole gestire lo spegnimento dei dischi in modo indipendente da quanto predisposto da NLNX (utilizzando il programma hdparm, con l'opzione -S, a mano), bisogna accertarsi di eliminare il file /etc/nlnx/ACPI_STAND_BY_VALUE, che altrimenti viene preso in considerazione all'avvio del sistema.

Configurazione di Bash e script di sistema

Il file /etc/profile è più articolato di quello standard. Vengono descritte le particolarità più significative.

Procedura di inizializzazione del sistema

La procedura di inizializzazione del sistema prevede diversi script in più, come sintetizzato nella tabella successiva.

Tabella u54.2. Script aggiuntivi di NLNX, legati in qualche modo alla procedura di inizializzazione del sistema.

Script e collegamenti simbolici Descrizione
/etc/script.functions/* Funzioni generali di NLNX. Non vengono eseguiti da soli, ma incorporati in altri script, anche al di fuori della procedura di inizializzazione del sistema.
/etc/init.d/nlnx.ro-fs
/etc/rcS.d/S19nlnx.ro-fs
È presente solo in un file system in sola lettura e serve a riprodurre la struttura necessaria delle directory /var/, /home/ e /etc/ nel file system virtuale contenuto nel disco RAM, inoltre serve ad attivare la memoria virtuale nel caso riesca a trovare una partizione già prevista per questo.
/etc/init.d/nlnx.hardware
/etc/rcS.d/S31nlnx.hardware
Configurazione riconducibile all'hardware e caricamento dei moduli relativi.
/etc/init.d/nlnx.config
/etc/rcS.d/S32nlnx.config
Ripristino della configurazione particolare di NLNX e aggiornamento della configurazione sulla base delle opzioni di avvio.
/etc/init.d/nlnx.network
/etc/rcS.d/S41nlnx.network
Configurazione della rete.
/etc/init.d/nlnx.mixed
/etc/rcS.d/S98nlnx.mixed
È il raccoglitore di tutto quello che deve essere fatto alla fine del primo gruppo di script della procedura di avvio, contenuti nella directory /etc/rcS.d/.
/etc/init.d/nlnx.ipwatch
/etc/rc[2|3|4|5].d/S20nlnx.ipwatch
Script di avvio e arresto del servizio IPwatch, con il quale il demone ipwatch verifica che il proprio indirizzo IPv4 non venga annunciato da altri nella rete locale. Tale servizio serve particolarmente per un elaboratore servente, il quale non deve risultare oscurato improvvisamente da un conflitto di indirizzi IP.
/etc/init.d/nlnx.watchdog
/etc/rc[2|3|4|5].d/S98nlnx.watchdog
È uno script da adattare e utilizzare espressamente, perché altrimenti non viene avviato in modo predefinito. Il suo scopo è quello di accertarsi del funzionamento di certi servizi e, in mancanza di risposta, provvedere al loro riavvio. Per questo si avvale di altri script, denominati nlnx_watchdog_....
/etc/init.d/nlnx.display_manager
/etc/rc[2|3|4|5].d/S99nlnx.display_manager
Se si utilizza l'opzione di avvio n_auto_dm=1, invece dell'accesso consueto, si ottiene un menù con cui selezionare uno degli utenti predefiniti, ciò attraverso questo script.
/etc/init.d/nlnx.last
/etc/rc[2|3|4|5].d/S99nlnx.last
Contiene ciò che va fatto quasi alla fine della procedura di avvio, pertanto si trova richiamato dalle directory /etc/rc2.d/, /etc/rc3.d/, /etc/rc4.d/ e /etc/rc5.d/; in particolare, questo script contiene la configurazione del tempo di ritardo per lo spegnimento dei dischi se le funzioni ACPI sono attive.
/etc/init.d/nlnx.mnt_fs
/etc/init.d/nlnx.mnt_hd
/etc/init.d/nlnx.mnt_md
/etc/init.d/nlnx.mnt_sd
/etc/init.d/nlnx.mnt_sr
Ricostruzione dei punti di innesto a partire dalla directory /mnt/. Questi script vengono eseguiti da uDev e riguardano la procedura di inizializzazione del sistema in modo indiretto.

Il file /etc/rc.local è a disposizione della personalizzazione, secondo la convenzione di diverse distribuzioni GNU/Linux.

Registri

Nella sua configurazione predefinita, NLNX prevede che il file /var/log/syslog venga usato per accumulare una copia di tutti i messaggi che riguardano il registro di sistema (log); inoltre, prevede che la rotazione di questo file avvenga in modo tale da poter disporre sempre di almeno un anno di utilizzo dell'elaboratore. Per controllare la rotazione del file, è stato necessario modificare i file /etc/cron.daily/sysklogd e /etc/cron.weekly/sysklogd, che nella distribuzione GNU/Linux Debian sono organizzati inizialmente per una sola settimana di dati. I file in questione sono modificati nel modo seguente:

...
cd /var/log
for LOG in `syslogd-listfiles`
do
   if [ -s $LOG ]; then
      savelog -g adm -m 644 -u root -c 400 $LOG > /dev/null
   fi
done
...
...
cd /var/log
for LOG in `syslogd-listfiles --weekly`
do
   if [ -s $LOG ]; then
      savelog -g adm -m 644 -u root -c 58 $LOG > /dev/null
   fi
done
...

Oltre al numero di copie più alto rispetto al solito, si deve osservare che i permessi consentono a tutti di leggere questi file. Infatti, ciò è voluto proprio per motivi didattici, allo scopo di consentire a tutti gli utenti lo studio del contenuto dei registri.

Pianificazione dei processi con Cron

Sono presenti alcuni script realizzati appositamente per NLNX, nelle directory usate da Cron per l'esecuzione pianificata dei processi. La tabella successiva riassume quelli più importanti.

Tabella u54.5. Script aggiuntivi di NLNX, relativi all'esecuzione periodica di processi.

Script Descrizione
/etc/cron.01/nlnx-img Verifica se esiste il file (o il collegamento) /opt/nlnx/nlnx.img e se è così, lo innesta (o reinnesta) come file-immagine, nella directory /mnt/nlnx-img/.
/etc/cron.daily/nlnx-clamav-home Avvia la scansione antivirus a partire dalla directory /home/. Se esiste la directory /home/.virus/, i file che risultano contaminati vengono spostati lì, altrimenti vengono cancellati.
/etc/cron.daily/nlnx-logfilter Rielabora il file /var/log/syslog.0, selezionando alcune informazioni e producendo i file /var/log/access.n.log, /var/log/users.n.log e /var/log/admin.n.log. Il numero n è costituito dall'anno e dal giorno dell'anno in cui ha luogo l'elaborazione.
/etc/cron.daily/nlnx-quotacheck Ripristina il controllo delle quote di utilizzo del disco.
/etc/cron.daily/time-align Riallinea l'orologio interno con il riferimento presente nella configurazione.
/etc/cron.daily/nlnx-webalizer Esegue il comando nlnxrc webalizer update, con il quale si aggiorna, se c'è, la statistica degli accessi al servente HTTP locale.

Le directory usate per gli script di Cron sono in numero maggiore rispetto alle distribuzioni GNU/Linux comuni. In particolare si trovano le directory /etc/cron.nnh, dove nn può essere 01, 02, 03, 04, 06, 08 o 12, a indicare ognuna una scansione di nn ore.

Nelle directory degli script di Cron, è possibile predisporre un file denominato cron_local, per usi personali. Questo file viene ignorato quando si va a produrre un nuovo DVD live di NLNX.

Dati variabili nel DVD live

Quando NLNX funziona da un file system in sola lettura (come nel caso del DVD live), il contenuto di alcune directory, come /etc/ e /var/, riguarda in realtà ciò che si trova a partire da /ramdisk/, che a sua volta è il punto di innesto di un disco RAM. In tal modo, il contenuto di queste directory può essere modificato, anche se solo temporaneamente; ovviamente, per risparmiare memoria, la maggior parte dei file presenti a partire da /ramdisk/ è costituita da collegamenti simbolici ad altri file che, in tale contesto, appaiono a partire da /RW-FS/... e come tali non sono modificabili. Per poter modificare tali file occorre cancellare i collegamenti simbolici relativi, sostituendoli con una copia del file a cui questi puntano.

Blocco delle funzioni di «nlnxrc»

Una volta configurate alcune funzionalità del sistema operativo, attraverso l'uso di nlnxrc, oppure a mano, può essere opportuno fare in modo che certi comandi di nlnxrc non funzionino, per evitare che quanto fatto con cura venga annullato con una piccola disattenzione. In altri termini, una volta sistemata la configurazione, per evitare errori è possibile impedire a nlnxrc di ritornarci sopra, bloccando selettivamente alcuni comandi. Per fare questo occorre creare a mano il file /etc/nlnx/NLNXRC_DISABLED_COMMANDS, contenente direttive molto semplici, come quelle dell'esempio seguente:

...
#
# Configurazione già fatta, da non modificare più.
#
printer:config
network:config
...

Come si può intuire, il cancelletto (#) introduce un commento che viene ignorato, mentre le direttive richiamano dei comandi di nlnxrc. Da quello che si vede, sono bloccati i comandi: nlnxrc printer config e nlnxrc network config.

Figura u54.7. Il messaggio con cui nlnxrc spiega l'impossibilità di eseguire il comando nlnxrc printer config.

.----------------------------------------------.
| The command "nlnxrc printer config" is       |
| disabled, as configured inside               |
| "/etc/nlnx/NLNXRC_DISABLED_COMMANDS"!        |
|                                              |
|----------------------------------------------|
|                   <  OK  >                   |
`----------------------------------------------'

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