[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]
La distribuzione Red Hat utilizza un sistema di configurazione composto da script, che non dovrebbero essere modificati, e da file di configurazione utilizzati dagli script, modificabili attraverso programmi che guidano l'amministratore.
Il difetto di questo approccio sta nel fatto che non sempre tutto funziona come previsto e allora occorre mettere le mani sui file, lasciando stare i programmi di configurazione.(1)
La procedura di inizializzazione del sistema è attivata dal'eseguibile init attraverso le indicazioni di /etc/inittab
. I livelli di esecuzione sono:
0 arresto del sistema;
1 singolo utente;
2 multiutente senza l'utilizzo di eventuali NFS;
3 multiutente;
4 non definito (disponibile);
6 riavvio.
Il file /etc/inittab
è quello che dirige il funzionamento di Init e analizzandone il contenuto si può intendere il ruolo degli script della procedura di inizializzazione del sistema.
# Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:3:initdefault: # System initialization. si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 # Things to run in every runlevel. ud::once:/sbin/update # Trap CTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown -t3 -r now # When our UPS tells us power has failed, assume we have a few minutes # of power left. Schedule a shutdown for 2 minutes from now. # This does, of course, assume you have powerd installed and your # UPS connected and working correctly. pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" # If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" # Run gettys in standard runlevels 1:12345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 # Run xdm in runlevel 5 x:5:respawn:/usr/bin/X11/xdm -nodaemon
Attraverso il file /etc/inittab
vengono indicati due script fondamentali, attraverso cui si articola la procedura di inizializzazione del sistema. Si tratta di /etc/rc.d/rc.sysinit
e /etc/rc.d/rc
. Il primo viene utilizzato a ogni avvio del sistema e da questo dipendono le operazioni che vanno svolte una volta sola in quella occasione; il secondo serve ogni volta che si cambia il livello di esecuzione.
/etc/rc.d/
È la directory che raccoglie gli script utilizzati nella fase di avvio del sistema e in quella di arresto.
/etc/rc.d/rc.sysinit
È lo script di inizializzazione del sistema. In particolare:
attiva la gestione della memoria virtuale per l'uso delle aree di scambio previste nelle partizioni, in base al contenuto del file /etc/fstab
;
verifica il file system principale e al termine ne esegue il montaggio;
verifica la dipendenza dei moduli;
avvia kerneld per automatizzare il caricamento dei moduli del kernel;
verifica gli altri file system indicati per questo nel file /etc/fstab
e al termine ne esegue il montaggio;
elimina o ripulisce i file utilizzati nella sessione di lavoro precedente, che servivano per segnalare lo stato di funzionamento;
configura l'orologio del sistema;
attiva la gestione della memoria virtuale per l'uso delle aree di scambio previste sui file;
eventualmente esegue /etc/rc.d/rc.serial
per l'attivazione della porta seriale;
eventualmente esegue /etc/rc.d/rc.modules
per l'attivazione di moduli del kernel.
/etc/rc.d/rc
È lo script principale per il controllo dei livelli di esecuzione. Viene utilizzato da Init, attraverso le indicazioni di /etc/inittab
, con un argomento corrispondente al numero di livello di esecuzione da attivare.
/etc/rc.d/rc livello_di_esecuzione
Semplificando un po' le cose, /etc/rc.d/rc
si limita a determinare se è stato richiesto un cambiamento nel livello di esecuzione, quindi avvia tutti gli script che trova nella directory /etc/rc.d/rcn.d/
(dove n rappresenta il livello di esecuzione richiesto), cominciando da quelli che iniziano con la lettera K e terminando con quelli che iniziano con la lettera S.
In realtà, questi script sono contenuti nella directory /etc/rc.d/init.d/
, con nomi più espressivi, mentre nelle directory /etc/rc.d/rcn.d/
sono contenuti solo dei collegamenti simbolici con nomi scelti appositamente per definire l'ordine in cui le operazioni devono essere svolte.
In questo modo, è possibile definire il livello di esecuzione numero quattro, lasciato a disposizione, semplicemente copiandovi all'interno i collegamenti simbolici necessari e senza toccare alcuno script.
/etc/rc.d/rcn.d/
Come accennato, si tratta delle directory riferite a ogni livello di esecuzione (n rappresenta il numero del livello stesso). Al loro interno si trovano solo collegamenti simbolici riferiti agli script che si vuole siano eseguiti.
Quando viene selezionato il livello di esecuzione relativo, vengono eseguiti in ordine alfabetico, prima gli script (o meglio i collegamenti) che iniziano con la lettera K (Kill) nella forma
/etc/rc.d/rcn.d/script stop
allo scopo di disattivare il servizio particolare cui si riferiscono, quindi quelli che iniziano con la lettera S (Start), nella forma seguente:
/etc/rc.d/rcn.d/script start
/etc/rc.d/init.d/
È il vero contenitore degli script utilizzati dalla procedura di inizializzazione del sistema. Questi vengono utilizzati indirettamente attraverso collegamenti simbolici contenuti nelle directory /etc/rc.d/rcn.d/
. Molti di questi script caricano le informazioni contenute in file di configurazione collocati altrove e ciò rappresenta la base del sistema di configurazione della distribuzione Red Hat, perché permette di limitarsi alla modifica di questi file, invece che intervenire direttamente sugli script stessi.
Molti di questi script possono essere utilizzati dall'amministratore per disattivare o attivare un servizio particolare, senza dover utilizzare un livello di esecuzione diverso e senza dover ricordare tutte le implicazioni di un particolare servizio. Il formato generale è il seguente:
/etc/rc.d/init.d/servizio {start|stop|status}
/etc/rc.d/init.d/functions
Si tratta di uno script utilizzato da quasi tutti gli altri, per definire alcune funzioni standard. In particolare, queste funzioni, servono per evitare l'avvio di demoni già in funzione e comunque per uniformare il sistema di avvio e conclusione del loro funzionamento.
pidofproc
Restituisce attraverso lo standard output i numeri PID abbinati a processi con il nome fornito. Per questo, tenta inizialmente di utilizzare il programma pidof; se fallisce, analizza quanto contenuto nella directory /var/run/
; come ultima risorsa tenta di analizzare il risultato dell'esecuzione di ps.
daemon
Avvia un programma dopo aver verificato che non sia già in funzione, restituendo attraverso lo standard output il nome di questo, senza l'eventuale percorso di avvio.
killproc
Elimina un processo utilizzando la funzione pidofproc per determinare il suo numero PID. Restituisce attraverso lo standard output il nome del processo eliminato.
status
Restituisce, attraverso lo standard output, lo stato del servizio corrispondente.
/var/lock/subsys/
Questa directory viene utilizzata dagli script contenuti in /etc/rc.d/init.d/
per annotare la presenza in funzione di un servizio determinato: se esiste un file (vuoto) con quel nome, il servizio è considerato attivo.
I file contenuti nella directory /etc/rc.d/init.d/
, quando si riferiscono a dei servizi, hanno una struttura abbastanza comune, simile a quella seguente. Si fa riferimento all'ipotetico servizio «pippo», a cui corrisponde un demone con lo stesso nome.
#!/bin/sh # # chkconfig: 345 85 15 # description: Servizio Pippo. Si tratta di un servizio che non serve \ # a nulla e non interessa a nessuno. # # Caricamento delle funzioni standard. . /etc/rc.d/init.d/functions # Analisi dell'argomento usato nella chiamata. case "$1" in start) echo -n "Avvio del servizio Pippo: " daemon pippo echo touch /var/lock/subsys/pippo ;; stop) echo -n "Spegnimento del servizio Pippo: " killproc pippo rm -f /var/lock/subsys/pippo echo ;; status) status pippo ;; restart) killall -HUP pippo ;; *) echo "Usage: pippo {start|stop|restart|status}" exit 1 esac exit 0
Nella prima parte viene letto il contenuto del file contenente la definizione delle funzioni standard, quindi si analizza il primo argomento fornito allo script. Se era start si provvede ad avviare uno o più programmi attraverso la funzione daemon, quindi si segnala il fatto creando un file vuoto (con touch) nella directory /var/lock/subsys/
. Se l'argomento era stop si provvede a eliminare i processi relativi, normalmente attraverso la funzione killproc, quindi si elimina il file corrispondente nella directory /var/lock/subsys
. Se l'argomento era status si visualizza lo stato del servizio attraverso la funzione status. Infine, se l'argomento era restart, di solito si invia un segnale SIGHUP al processo corrispondente al servizio.
In questi script, alcuni commenti introduttivi hanno un ruolo preciso: servono a definire i livelli di esecuzione con cui questi vengono presi in considerazione, il momento in cui devono essere avviati i servizi relativi e il momento in cui devono essere chiusi gli stessi servizi. Nell'esempio mostrato si tratta del pezzo seguente:
# chkconfig: 345 85 15 # description: Servizio Pippo. Si tratta di un servizio che non serve \ # a nulla e non interessa a nessuno.
La riga # chkconfig 345 85 15, serve a stabilire che il servizio corrispondente può essere avviato solo quando il livello di esecuzione va da tre a cinque. Il numero 85 successivo, indica l'ordine nell'avvio del servizio e, dato il numero, si intuisce che si vuole fare in modo che questo avvenga dopo molti altri. Il numero 15 finale, indica l'ordine di disattivazione del servizio in fase di arresto del sistema; si intende dal numero che si vuole fare in modo di chiuderlo abbastanza presto rispetto agli altri. Verrà chiarito meglio nella prossima sezione il senso di questi numeri.
La riga # description: serve ad annotare una descrizione del servizio, come promemoria per facilitare l'utilizzo del programma ntsysv, che sarà mostrato successivamente. Per il momento, si osservi che la descrizione può continuare su più righe di commento, purché si utilizzi il simbolo \ subito prima della conclusione della riga.
Le directory /etc/rc.d/rcn.d/
servono a contenere una serie di collegamenti simbolici che puntano a script della directory /etc/rc.d/init.d
. Il listato seguente dovrebbe chiarire il meccanismo.
lrwxrwxrwx 1 root root 13 13:39 K15gpm -> ../init.d/gpm lrwxrwxrwx 1 root root 13 13:39 K60atd -> ../init.d/atd lrwxrwxrwx 1 root root 15 13:39 K60crond -> ../init.d/crond lrwxrwxrwx 1 root root 16 13:39 K96pcmcia -> ../init.d/pcmcia lrwxrwxrwx 1 root root 17 13:39 S01kerneld -> ../init.d/kerneld lrwxrwxrwx 1 root root 17 13:39 S10network -> ../init.d/network lrwxrwxrwx 1 root root 15 13:39 S15nfsfs -> ../init.d/nfsfs lrwxrwxrwx 1 root root 16 13:39 S20random -> ../init.d/random lrwxrwxrwx 1 root root 16 13:39 S30syslog -> ../init.d/syslog lrwxrwxrwx 1 root root 14 13:39 S50inet -> ../init.d/inet lrwxrwxrwx 1 root root 18 13:39 S75keytable -> ../init.d/keytable lrwxrwxrwx 1 root root 11 12:44 S99local -> ../rc.local
I collegamenti che iniziano con la lettera «S» vengono avviati ordinatamente all'attivazione del livello di esecuzione corrispondente, con l'argomento start, mentre quelli che iniziano con la lettera «K» vengono avviati prima di passare a un nuovo livello di esecuzione, con l'argomento stop.
Il numero che segue la lettera «S» e «K», serve a definire un ordine (alfabetico) corrispondente a quello in cui i servizi vanno avviati o interrotti. Se si volesse predisporre uno script, nella directory /etc/rc.d/init.d/
per la gestione di un servizio addizionale, si dovrebbero predisporre due collegamenti nella directory del livello di esecuzione prescelto, simili a quelli già visti, con un numero adatto a collocarli nella posizione giusta nell'ordine delle azioni da compiere.
Attraverso il programma ntsysv, è possibile aggiungere o togliere servizi da attivare nel livello di esecuzione standard. ntsysv provvede da solo a creare i collegamenti simbolici mostrati nella sezione precedente, utilizzando la convenzione mostrata. Per stabilire il numero da usare per i collegamenti di avvio (quelli che iniziano con la lettera S) e per quelli di conclusione (K), si avvale del commento iniziale contenuto negli script originali.
Per riprendere l'esempio già mostrato in precedenza, se nella directory /etc/rc.d/init.d/
si trova lo script pippo, che contiene il commento iniziale seguente,
#! /bin/sh # # chkconfig: 345 85 15 # description: Servizio Pippo. Si tratta di un servizio che non serve \ # a nulla e non interessa a nessuno.
ntsysv sarà in grado di creare i collegamenti S85pippo
e K15pippo
. La descrizione, inoltre, è utile per ricordare a cosa serve questo servizio (o comunque a cosa serve questo script), quando è il momento di scegliere se attivarlo o meno.
Il programma chkconfig serve fondamentalmente alle stesse funzioni di ntsysv, con la differenza che si tratta di un programma a riga di comando, mentre il secondo è interattivo e utilizza una maschera visiva piuttosto amichevole.
La maggior parte dei file di configurazione della distribuzione Red Hat si trova nella directory /etc/sysconfig
. I nomi dei file permettono di capire, intuitivamente, il genere di cose che con essi si intendono configurare. In particolare, la directory /etc/sysconfig/network-scripts/
contiene una serie di script e di altri file necessari a facilitare la gestione delle interfacce di rete e degli instradamenti.
L'organizzazione dei file di configurazione e degli script per la connessione in rete è un po' complicata, per permetterne il controllo attraverso il pannello di controllo, o più precisamente, attraverso netcfg.
Si tratta del file contenente le informazioni fondamentali sulla connessione alla rete:
attivazione o meno della rete;
nome completo dell'elaboratore;
nome del dominio;
Come al solito si utilizza la semplificazione per cui l'elaboratore ha un solo nome e un solo dominio di appartenenza, anche se ha più interfacce di rete (e quindi più nomi e più domini). Evidentemente, se ci sono più interfacce, si deve scegliere un nome e un dominio.
NETWORKING={yes|no}
Permette di attivare (yes) o di disattivare (no) la configurazione delle rete.
HOSTNAME=nome_fqdn
Il nome completo (FQDN) dell'elaboratore, possibilmente quello corrispondente a un'interfaccia di rete realmente esistente. Il file /etc/HOSTNAME
, generato normalmente in modo automatico, dovrebbe contenere questo nome.
DOMAINNAME=dominio
Permette di definire il nome del dominio dell'elaboratore. In pratica, si può riferire solo a un dominio di un'interfaccia di rete particolare.
FORWARD_IPV4={yes|no}
Permette di attivare (yes) o di disattivare (no) l'inoltro IP. Perché l'elaboratore possa funzionare come router, è indispensabile che questa funzione sia attivata, mentre, per motivi di sicurezza, il valore predefinito è no.
GATEWAY=indirizzo_ip_del_router_predefinito
Permette di definire l'indirizzo IP di un router per l'instradamento predefinito, cioè quel router da utilizzare quando si vuole inoltrare un pacchetto verso un indirizzo per il quale non esista già un instradamento specifico.
GATEWAYDEV=interfaccia_di_rete
Permette di indicare esplicitamente il nome dell'interfaccia di rete da utilizzare per l'instradamento predefinito.
NISDOMAIN=dominio_nis
Permette di definire il dominio NIS a cui appartiene l'elaboratore.
L'esempio seguente si riferisce alla configurazione dell'elaboratore portatile.plip.dg
. In particolare, si utilizza un router che ha indirizzo IP 192.168.254.254, raggiungibile attraverso l'interfaccia plip1.
NETWORKING=yes FORWARD_IPV4=false HOSTNAME=portatile.plip.dg DOMAINNAME=plip.dg GATEWAY=192.168.254.254 GATEWAYDEV=plip1
Si tratta della definizione degli instradamenti statici, cioè quelli che non cambiano. Riguarda sia gli instradamenti alle reti accessibili direttamente che a quelle raggiungibili solo attraverso un router. L'esempio seguente dovrebbe essere abbastanza chiaro: la prima riga definisce un instradamento alla rete locale, le altre due definiscono gli instradamenti verso altre reti accessibili attraverso il router 192.168.1.254.
eth0 net 192.168.1.0 netmask 255.255.255.0 eth0 net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.254 eth0 net 192.168.3.0 netmask 255.255.255.0 gw 192.168.1.254
Per ogni interfaccia di rete gestita, appare un file di configurazione con il nome ifcfg-interfaccia
nella directory /etc/sysconfig/network-scripts/
. Questi file contengono informazioni differenti in funzione del tipo di interfaccia.
DEVICE=interfaccia
Definisce il nome dell'interfaccia di rete corrispondente.
IPADDR=indirizzo_ip
L'indirizzo IP dell'interfaccia.
NETMASK=maschera_di_rete
NETWORK=indirizzo_di_rete
Indirizzo della rete.
BROADCAST=indirizzo_broadcast
ONBOOT={yes|no}
Permette di attivare (yes), o di disattivare (no), l'interfaccia all'avvio del sistema.
L'esempio seguente si riferisce alla configurazione dell'interfaccia lo, praticamente obbligatoria, corrispondente al file /etc/sysconfig/network-scripts/ifcfg-lo
.
DEVICE=lo IPADDR=127.0.0.1 NETMASK=255.0.0.0 NETWORK=127.0.0.0 BROADCAST=127.255.255.255 ONBOOT=yes
L'esempio seguente si riferisce alla configurazione dell'interfaccia eth0 con un indirizzo IP 192.168.1.1 e la maschera di rete 255.255.255.0.
DEVICE=eth0 IPADDR=192.168.1.1 NETMASK=255.255.255.0 NETWORK=192.168.1.0 BROADCAST=192.168.1.255 ONBOOT=yes BOOTPROTO=none
Il resto della configurazione è gestito attraverso file contenuti esclusivamente nella directory /etc/sysconfig/
.
Il file /etc/sysconfig/clock
permette di configurare l'orologio del sistema. Per farlo, si deve conoscere come è impostato l'orologio hardware. In pratica, è importante sapere se questo è allineato al tempo universale oppure all'ora locale. Eventualmente può essere usato il programma timeconfig per definire correttamente questo file.
UTC={true|false}
Se viene utilizzato il valore true, si intende che l'orologio hardware sia allineato al tempo universale; diversamente, si intende che sia allineato all'ora locale.
Il file /etc/sysconfig/keyboard
permette di configurare la tastiera. Eventualmente può essere usato il programma kbdconfig per definire correttamente questo file.
KEYTABLE=mappa_tastiera
Definisce la mappa della tastiera, indicando il file corrispondente.
KEYTABLE="/usr/share/keymaps/i386/qwerty/it.kmap"
Definisce la configurazione della tastiera italiana.
KEYTABLE=it.kmap
Esattamente come nell'esempio precedente, senza il problema di dover indicare tutto il percorso per raggiungere il file, dal momento che si tratta di quello predefinito.
Il file /etc/sysconfig/mouse
permette di configurare il mouse per l'utilizzo attraverso il programma gpm. Eventualmente può essere usato il programma mouseconfig per definire correttamente questo file.
MOUSETYPE=tipo
Permette di definire il tipo di mouse utilizzato. Sono validi i nomi seguenti.
microsoft
mouseman
mousesystems
ps/2
msbm
logibm
atibm
logitech
mmseries
mmhittab
XEMU3={yes|no}
Abilita o disabilita l'emulazione del tasto centrale.
L'esempio seguente rappresenta la configurazione per un mouse compatibile con il tipo Microsoft a due tasti, per cui il terzo deve essere emulato.
MOUSETYPE="Microsoft" XEMU3=yes
Anche la configurazione della shell è molto importante per il sistema, risultando relativamente complessa.
/etc/profile
Si tratta del file di configurazione generale, secondo lo standard, ma è organizzato in modo da permettere l'inserimento di altri segmenti, senza toccarlo. Infatti, alla fine vengono caricati tutti i file che si trovano nella directory /etc/profile.d/
e terminano con l'estensione .sh
.
# /etc/profile # System wide environment and startup programs # Functions and aliases go in /etc/bashrc PATH="$PATH:/usr/X11R6/bin" PS1="[\u@\h \W]\\$ " ulimit -c 1000000 if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]; then umask 002 else umask 022 fi USER=`id -un` LOGNAME=$USER MAIL="/var/mail/$USER" HOSTNAME=`/bin/hostname` HISTSIZE=1000 HISTFILESIZE=1000 export PATH PS1 HOSTNAME HISTSIZE HISTFILESIZE USER LOGNAME MAIL for i in /etc/profile.d/*.sh ; do if [ -x $i ]; then . $i fi done
/etc/bashrc
Secondo le intenzioni di chi ha organizzato la distribuzione, questo file dovrebbe contenere solo la definizione di funzioni e di alias di interesse generale, ma il suo utilizzo dipende dalla configurazione personalizzata di ogni utente, che potrebbe anche escludere l'inclusione di questo file.
# /etc/bashrc # System wide functions and aliases # Environment stuff goes in /etc/profile # For some unknown reason bash refuses to inherit # PS1 in some circumstances that I can't figure out. # Putting PS1 here ensures that it gets loaded every time. PS1="[\u@\h \W]\\$ " alias which="type -path"
Per qualche motivo, il file /etc/bashrc
fornito con la distribuzione contiene la definizione della variabile PS1, che va a sovrapporsi a quanto già indicato nel file di configurazione generale, /etc/profile
. Se si intende modificare l'aspetto predefinito dell'invito della shell, conviene agire in questo file.
Potrebbe essere conveniente definire, per tutti gli utenti, una serie di alias ai comandi più «pericolosi», trasformando quindi il file nel modo seguente (la dichiarazione della variabile PS1 viene commentata).
# /etc/bashrc # System wide functions and aliases # Environment stuff goes in /etc/profile ## For some unknown reason bash refuses to inherit ## PS1 in some circumstances that I can't figure out. ## Putting PS1 here ensures that it gets loaded every time. #PS1="[\u@\h \W]\\$ " alias which="type -path" alias rm='rm -i' alias cp='cp -i' alias mv='mv -i'
~/.bashrc
È il file di configurazione di una shell Bash interattiva. Secondo le intenzioni di chi ha organizzato la distribuzione, questo file dovrebbe contenere solo la definizione di funzioni e di alias personalizzati, dove alla fine dovrebbe richiamare il file /etc/bashrc
che contiene le stesse cose, ma a livello generale.
# .bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
~/.bash_profile
È il file di configurazione utilizzato dalla shell Bash quando questa viene avviata a seguito di un accesso. Per mantenere uniformità con l'insieme, esegue a sua volta il contenuto di ~/.bashrc
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin ENV=$HOME/.bashrc USERNAME="" export USERNAME ENV PATH
La directory /etc/profile.d/
viene usata per contenere una serie di file da inserire ordinatamente alla fine di /etc/profile
. Attraverso questo meccanismo, l'installazione di un programma può definire un'aggiunta nella configurazione della shell senza dover modificare il file /etc/profile
.
I file in questione, devono terminare con l'estensione .sh
, non serve che siano eseguibili e nemmeno che inizino con la definizione della shell che deve interpretarli. L'esempio seguente mostra uno di questi file con la definizione di alcune variabili utili.
# /etc/profile.d/config.sh LANG="it_IT.ISO-8859-1" export LANG PATH="$PATH:$HOME/bin:." export PATH PS1='\u@\h:\w\$ ' export PS1 alias rm='rm -i' alias cp='cp -i' alias mv='mv -i'
Nell'esempio viene definita la variabile LANG, nel modo corretto per l'Italia, quindi vengono aggiunte al percorso di ricerca degli eseguibili, la directory ~/bin
e la directory corrente. Successivamente, viene definita la variabile PS1 (l'invito della shell) e una serie di alias.
In precedenza si è visto che la distribuzione Red Hat indica il file /etc/bashrc
come il contenitore adatto per la definizione dell'invito e degli alias. Dipende dal gusto dell'amministratore del sistema la scelta di come intervenire.
Utenti e gruppi vengono gestiti in modo differente dal solito: si tende ad abbinare a ogni utente un gruppo con lo stesso nome e lo stesso numero. Questa tecnica permette di lasciare al gruppo gli stessi permessi dell'utente, facilitando la creazione e lo scioglimento di gruppi di lavoro con la semplice creazione di gruppi nuovi a cui si abbinano gli utenti che ne fanno parte. Questo viene descritto un po' meglio nella sezione 54.5.4.
In queste condizioni, la maschera dei permessi utilizzata normalmente è 0028.
È il caso di osservare che l'utente e il gruppo nobody hanno il numero 99.
Lo script useradd inserisce gli utenti a partire dal numero 500 in poi, aggregando a ognuno un gruppo privato.
root::0:0:root:/root:/bin/bash bin:*:1:1:bin:/bin: daemon:*:2:2:daemon:/sbin: adm:*:3:4:adm:/var/adm: lp:*:4:7:lp:/var/spool/lpd: sync:*:5:0:sync:/sbin:/bin/sync shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown halt:*:7:0:halt:/sbin:/sbin/halt mail:*:8:12:mail:/var/mail: news:*:9:13:news:/var/spool/news: uucp:*:10:14:uucp:/var/spool/uucp: operator:*:11:0:operator:/root: games:*:12:100:games:/usr/games: gopher:*:13:30:gopher:/usr/lib/gopher-data: ftp:*:14:50:FTP User:/home/ftp: nobody:*:99:99:Nobody:/:
root::0:root bin::1:root,bin,daemon daemon::2:root,bin,daemon sys::3:root,bin,adm adm::4:root,adm,daemon tty::5: disk::6:root lp::7:daemon,lp mem::8: kmem::9: wheel::10:root mail::12:mail news::13:news uucp::14:uucp,root man::15: games::20: gopher::30: dip::40: ftp::50: nobody::99: users::100:
Il sistema di stampa adottato da Red Hat è quello tradizionale, cioè BSD. Le directory delle code, riferite ad altrettante voci del file /etc/printcap
, si diramano a partire da /var/spool/lpd/
. Ognuna di queste contiene il filtro di stampa (se viene utilizzato) e i file di configurazione utilizzati dal filtro.
Tutto questo, compreso il file /etc/printcap
, è gestito direttamente dal programma di configurazione della stampa, printtool.
All'interno della directory per la coda di stampa si trovano, oltre ai file utilizzati da lpr e lpd, anche lo script usato come filtro e i relativi file di configurazione.
filter
È il filtro che fa riferimento a diversi componenti collocati sotto /usr/lib/rhs/rhs-printfilters/
.
general.cfg
È un file di configurazione generale della stampa. Segue un esempio nel quale si fa riferimento a:
stampante locale;
foglio A4;
# # General config options for printing on this queue # Generated by PRINTTOOL, do not modify. # export DESIRED_TO=ps export PAPERSIZE=a4 export PRINTER_TYPE=LOCAL export ASCII_TO_PS=YES
postscript.cfg
È un file di configurazione per l'emulazione della stampa PostScript. Segue un esempio nel quale si fa riferimento a:
# # configuration related to postscript printing # generated automatically by PRINTTOOL # manual changes to this file may be lost # GSDEVICE=laserjet RESOLUTION=300x300 COLOR= PAPERSIZE=a4 EXTRA_GS_OPTIONS="" REVERSE_ORDER= PS_SEND_EOF=NO # # following is related to printing multiple pages per output page # NUP=1 RTLFTMAR=18 TOPBOTMAR=18
textonly.cfg
È un file di configurazione della stampa di solo testo. Segue un esempio, nel quale si fa riferimento, in particolare, alla trasformazione dei codici di interruzione di riga in modo che corrispondano sempre a <CR><LF>.
# # text-only printing options for printing on this queue # Generated by PRINTTOOL, do not modify. # TEXTONLYOPTIONS= CRLFTRANS=1 TEXT_SEND_EOF=YES
Dal momento che la stampa è organizzata attraverso questo sistema di filtri, controllato da printtool, sarebbe meglio non modificare il file standard /etc/printcap
, o almeno limitarsi a utilizzare le sole caratteristiche che printtool può gestire.
# /etc/printcap # # Please don't edit this file directly unless you know what you are doing! # Be warned that the control-panel printtool requires a very strict format! # Look at the printcap(5) man page for more info. # # This file can be edited with the printtool in the control-panel. ##PRINTTOOL3## LOCAL laserjet 300x300 a4 {} LaserJet Default {} lp:\ :sd=/var/spool/lpd/lp:\ :mx#0:\ :sh:\ :lp=/dev/lp1:\ :if=/var/spool/lpd/lp/filter:Appunti di informatica libera 2003.01.01 --- Copyright © 2000-2003 Daniele Giacomini --
daniele @ swlibero.org
1) Le notizie che si raccolgono qui, sono riferite a vecchie edizioni della distribuzione. Queste informazioni, benché obsolete, vengono conservate perché potrebbero ancora essere utili.
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome configurazione_di_una_distribuzione_red_nbsp_hat.html
[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]