GNU’S NOT UNIX


GNU’S NOT UNIX vers. 0.0.1-alpha

 

 

INDICE GENERALE:

 

LINUX. 5

AVVIO DEL PC. 5

IL KERNEL. 5

IDLE. 5

INIT. 6

ACCESSO A LINUX. 6

DOPO L’INSTALLAZIONE. 6

RETE. 6

FONTS. 6

RUN-LEVEL. 7

PERSONALIZZAZIONI 7

IL KERNEL DI LINUX. 7

MODULI 7

PROCESSI 7

JOB. 8

GESTIONE PROCESSI: 8

CONFIGURAZIONE DEL SISTEMA: 8

LILO. 8

PROCESSI IN FASE DI AVVIO. 8

DAEMON. 9

RUN-LEVEL. 11

INTERRUPTS. 12

FILES DI CONFIGURAZIONE. 12

DISCHI 14

TASTIERA. 14

GUI 15

FONTS. 15

RETE. 16

PORTE SERIALI 16

CHAT. 16

PPPD. 17

UTILITY. 18

FILES DI CONFIGURAZIONE. 18

SCRIPT PER LA CONNESSIONE. 19

SAMBA. 19

PORTE SERIALI 20

LOGIN IN RETE. 20

TELNET. 20

FTP. 20

FILESYSTEMS DI RETE. 20

KPPP. 20

FIREWALL. 21

VIDEO/MOUSE. 21

STAMPANTI: 21

IL FILE /etc/printcap. 21

AUDIO: 22

MODEM: 23

SCANNER: 23

MASTERIZZATORE: 23

ZIP IOMEGA: 24

GESTIONE DISCHI 24

ARRESTO DEL SISTEMA. 24

GESTIONE PACCHETTI 24

FORMATO RPM. 24

FORMATO .SRC.RPM. 25

FORMATO DEB. 25

FORMATO TAR.GZ. 25

FILE SYSTEM: 26

LILO. 26

PARTIZIONI 26

FILES. 27

IL PROPRIETARIO. 27

PERMESSI 27

FUSER. 28

STRUTTURA DELLE DIRECTORY: 28

INTEGRITA’ DEL FILE-SYSTEM. 29

SPOSTAMENTO DIRECTORY. 29

IMMAGINI 30

LIBRERIE DINAMICHE. 30

RICERCHE: 30

LINK. 31

COMPRESSIONE: 31

IL FILE /etc/fstab. 32

CREAZIONE E COPIA DI DISCHI DI BOOT. 32

LA SHELL. 32

CONFIGURAZIONE. 33

REINDIRIZZAMENTI 33

ALCUNI COMANDI: 34

CARATTERI ESPANSI / QUOTING. 35

COSTRUTTI 36

CICLO FOR. 36

CICLO WHILE. 36

CICLO UNTIL. 36

SELEZIONE. 36

SELEZIONE MULTIPLA. 36

TASTI SPECIALI 37

CARATTERI SPECIALI 37

SCRIPT. 37

COMPILAZIONI 37

EMULATORI 37

WINE. 37

CONFIGURAZIONE. 38

X WINDOW.. 38

XFree86. 38

ERRORI 39

OTTENERE INFORMAZIONI 39

DOCUMENTAZIONE: 39

MAN. 39

APPUNTI LINUX. 39

LDR - Linux Domande e Risposte. 39

ALTRI 39

AMMINISTRAZIONE DEL SISTEMA. 40

AMMINISTRAZIONE GENERALE. 40

GESTIONE ACCOUNT. 40

GESTIONE UTENTI 40

GESTIONE GRUPPI 40

CAMBIARE PASSWORD: 40

GESTIONE DELLA MEMORIA. 40

COMPILAZIONE DEL KERNEL: 41

GNOME: 41

AVVIARE GNOME. 42

AGGANCIARE IL MENU’ DI KDE IN QUELLO DI GNOME. 42

WORKSPACES. 42

INDIRIZZI UTILI 42

ACQUISTARE LINUX - DISTRIBUZIONI 42

MINIDISTRIBUZIONI 42

GIOCHI 42

INFORMAZIONI E SOFTWARE. 43

CURIOSITA’ 46

CONVERSIONI 46

COMPILATORI 46

 


LINUX

 

Linux è un sistema operativo nato dall’integrazione di un kernel scritto da Linus Torvalds con le numerose utility scritta dalla GNU.

 

AVVIO DEL PC

 

All’accensione del PC il BIOS carica in memoria il settore 0 cilindro 0 del disco di avvio chiamato MBR (Master Boot Record). Complessivamente il MBR è composto da 512 bytes: gli ultimi 64 bytes contengono la tabella delle partizioni mentre i restanti bytes contengono il programma da eseguire al boot-strap che ottiene il controllo del PC e carica il sistema operativo. Per fare questo l’MBR non può sfruttare altro che le routine messe a disposizione dal BIOS, nasce così il problema del cilindro 1024. Il BIOS, infatti, non è in grado di vedere locazioni del disco oltre questo limite. Nel caso di Linux l’MBR conterrà un programmino in grado di caricare il LILO (LInux LOader), il quale a sua volta avvia un rudimentale programmino 8086 che si trova in boot/bootsect.S. Quest’ultimo carica il boot/setup.S, un altro programma 8086 che tenta di identificare alcune caratteristiche della macchina, carica il kernel, entra in modalità protetta e lo lancia. Quando passa in modalità protetta il kernel si libera di tutte le limitazioni del BIOS ed esce dal mondo degli 8 bit. Viene avviato il programma zboot/head.S che inizializza i registri in modalità protetta e la routine del kernel che lo decomprima. Il bootstrap finisce quando il kernel è in memoria ed ha il controllo (I kernel normalmente sono in arch/i386/boot.

 

IL KERNEL

 

Quando termina head.S il kernel esegue una serie di inizializzazioni: IRQ, Bus PCI e quasi tutto l’hardware ma anche i moduli ed i drivers, definisce i limiti della memoria e genera un processo chiamato IDLE. Analizza la linea di comando passato da LILO e calibra il loop di ritardo, cioè calcola i BogoMips della macchina: in un certo senso ne misura le prestazioni. Viene poi montata la dir di root in Read-Only. Verifica se col processore funziona l’INT 16, libera la memoria non più necessaria, apre la console ed avvia INIT. Fino a prima dell’avvio di init era il kernel ad avere il controllo della macchina e seguiva un comportamento sequenziale, ossia svolgeva una serie di compiti previsti all’atto della compilazione. Una volta avviato init il kernel assume una posizione più passiva, quella di gestore delle risorse: tiene traccia dei files su disco, avvia i programmi e li fa’ girare contemporaneamente, assegna la memoria ed altre risorse, riceve e manda i pacchetti in rete, evita che chiunque acceda all’hardware direttamente forzando tutti ad utilizzare gli strumenti che fornisce proteggendo gli utenti uno dall’altro. Gli strumenti forniti dal kernel vengono usati attraverso chiamate al sistema, ma il kernel fornisce solo delle chiamate a basso livello, quindi altri “strati” si appoggiano al kernel per fornire servizi più ad alto livello. Questi strati si dividono in 2 categorie: le librerie dinamiche ed i daemon. Le librerie dinamiche mettono a disposizione chiamate di più alto livello rispetto al kernel facilitando la programmazione. I demoni invece svolgono la maggior parte dei servizi del sistema operativo e conferiscono a Linux la sua struttura modulare.

 

IDLE

 

IDLE è un processo speciale, generato prima di init, che non può né dormire né morire. Idle ha il pid 0 (mentre init ha l’1), è sempre pianificato con la priorità più bassa ed è sostanzialmente un loop continuo. In pratica viene eseguito solo se non c’è nessun altro processo da eseguire. Il compito di IDLE è quello di far lavorare il processore, facendogli perdere tempo, perché quest’ultimo non può mai rimanere fermo. Più tempo viene dedicato a IDLE più il sistema è scarico.

 

INIT

 

Init attiva tutti i processi ed i daemon definiti nel run-level in cui portare il sistema, attiva tutte le console virtuali ed assume la paternità dei processi rimasti orfani. Se si dispone dell’hardware adeguato init gestisce le cadute di tensione ed il ritorno allo stato normale. Permette di cambiare il R.L. della macchina compreso quindi il riavvio (init 6) e l’arresto (init 0). Gestisce la pressione di CTRL-ALT-CANC all’interno di una console ma in generale risponde a qualunque combinazione di tasti presenti nella console per i quali il sistema sia capace di trasmettere il segnale a init. Il daemon init una volta caricato sarà la colonna vertebrale alla quale si appoggeranno tutti i processi ed i daemon del sistema. Init, in funzione di ciò che trova scritto in /etc/inittab, controlla il file-system, avvia alcuni demoni, rimuove dei files temporanei e aggiorna l’orologio di sistema. Fatto ciò init inizia la sua attività normale: è il padre di tutti i processi. In particolare avvia una getty separata per ogni terminale da cui è consentito loggarsi. Getty legge il nome dell’utente ed avvia login che legge la password. Se user e password sono corretti login avvia la shell. Quando la shell termina init avvia un’altra copia di getty. Quando si arresta il sistema è init che uccide tutti gli altri processi, smonta il filesystem e ferma il processore.

 

ACCESSO A LINUX

 

Linux è un sistema multiutente, di conseguenza per accedere è necessario specificare il nome della propria utenza e la relativa password. Ad ogni utente viene creato un account nel sistema ed a ogni account vengono assegnati o meno alcuni privilegi. Per gestire altri utenti è necessario ricorrere all’utenza speciale “root” che corrisponde all’amministratore del sistema ed ha pieni poteri, compresa la distruzione. Data la pericolosità potenziale di tale user normalmente anche l’amministratore si crea una utenza normale, ricorrendo a root solo in casi particolari.

Linux è un sistema operativo che è nato e si è sviluppato sulla rete e tramite la rete, è scontato quindi che dia il meglio di sé stesso se collegato in rete. Una di queste funzionalità è l’accesso da remoto, tramite il quale, ad esempio, ci si può connettere al proprio sistema linux per mezzo di un modem e lavorare come se ci si trovasse di fronte al proprio computer.

Normalmente sono definite 6 console virtuali in modalità testo selezionabili tramite tasti CTRL-ALT-F1 fino a F6 (o ALT+frecce sx/dx o col comando cbit n, in cui n è il numero della console) ma tramite le porte parallele potremmo attaccare altre console. In realtà queste ultime non sarebbero vere e proprie console perché non collegate direttamente al sistema come il video e la tastiera principali ma le funzionalità sarebbero le stesse.

Vedi GESTIONE ACCOUNT per ulteriori informazioni.

 

DOPO L’INSTALLAZIONE

 

RETE

 

Vedere la sezione “CONFIGURAZIONE DEL SISTEMA”

 

FONTS

 

Aggiungere i fonts TrueType configurando l’”xfs” come descritto nella sezione “CONFIGURAZIONE DEL SISTEMA”. Creare un link simbolico /usr/X11R6/lib/X11/fonts/TrueType verso /usr/share/fonts/default/TrueType.

 

RUN-LEVEL

 

Inserire anacron nei run-level 3-4-5 e l’impostazione di setserial per i 115.200 bps nel file/etc/rc.d/rc.local.

 

PERSONALIZZAZIONI

 

In /etc/profile inserire:

 

‘ulimit –c 0’                              (per evitare la creazione dei Dump)

‘export LANG=”it_IT”’.                (lingua italiana)

export PRINTER=”lp1”               stampante di default

 

IL KERNEL DI LINUX

 

MODULI

 

I moduli sono parti del kernel che si possono caricare “al volo” quando servono e scaricare quando non servono più; il loro utilizza permette di risparmiare memoria mentre il non utilizzo costringe a compilare un kernel monolitico con una maggiore occupazione di memoria ma ugualmente efficiente. Il caricamento dei moduli può essere fatto in maniera completamente manuale con insmod ma, dato che è necessario rispettare una certa sequenza è preferibile utilizzare modprobe che carica oltre al modulo richiesto anche quelli necessari al funzionamento del modulo stesso nella giusta sequenza. Il daemon kerneld, sostituito da kmod (/usr/scr/linux/kernel/kmod.o) a partire dalla versione 2.2.*, è integrato nel kernel e carica e scarica autonomamente i moduli necessari in maniera trasparente.

I moduli sono in /lib/modules/”versione del kernel”.

 

insmod                 carica un modulo

insmod –r             carica un modulo e lo rende scaricabile

rmmod                 scarica il modulo

rmmod –a             scarica tutti i moduli non usati

modprobe             carica il modulo e tutti quelli ad esso necessari

modprobe –r                  scarica il modulo e quelli che aveva caricato per il suo funzionamento

modprobe –a                  lista dei moduli disponibili

 

depmod –a            genera modules.dep partendo da /etc/modules.conf

 

Per scaricare periodicamente i moduli non usati inserire in /etc/crontab:

 

0-59/5 * * * * root /sbin/rmmod -a

 

PROCESSI

 

Un processo è una sezione di un programma: ogni programma origina almeno un processo; è la capacità di gestire più processi simultanei che rende un sistema operativo multitasking.

Ad ogni processo viene assegnato un numero che lo identifica univocamente ed è il PID (Process Identificator), init è il processo con PID 1.

Esistono dei processi “speciali” che prendono il nome di DAEMON: sono processi che normalmente non hanno fine se non allo spegnimento della macchina per poi ripartire alla riaccensione. Girano in background senza un terminale di controllo ed in genere ognuno di loro rappresenta un servizio.

Alcuni di essi sono:

 

inetd           si mette in ascolto sulla porta definita ed accetta connessioni di rete

lpd              demone di stampa

cron            scheduler: esegue operazioni a tempo

syslogd         tiene traccia di quello che avviene nel sistema creando i log

gpm            gestisce il mouse, anche al di fuori di X

 

JOB

 

Ogni processo lanciato da un utente ha anche un numero di job che è simile al PID ma si riferisce solo a quel particolare utente che lo ha lanciato: ogni utente ha il suo job n° 1, 2, 3…… Per identificare univocamente un processo si ricorre al PID.

 

GESTIONE PROCESSI:

 

Il controllo dei processi viene fatto dalla shell: fg, bg, &, jobs e kill sono comandi interni alla shell.

 

& alla fine del comando:         lo esegue in background

CTRL-C                          interrompe un processo

CRTL-Z:                         mette in “pausa” un processo e ritorna il controllo alla shell

 

Il numero tra parentesi che viene restituito a video è il job, il “+” signigica che è l’ultimo processo ad essere stato sospeso (fg senza parametri fa’ ripartire l’ultimo processo sospeso), l’altro numero è il PID. I comandi fg, bg, kill funzionano sia con il PID che col numero job.

 

Jobs                              mostra i processi attivi in background lanciati da un certo utente.

bg <pid>                       mette in background un processo

fg <pid>                        mette in foreground un processo

kill <pid>                       termina il processo con un certo pid

kill –i <pid>                   riavvia il processo

kill –9 <pid>                            “uccide” il processo

ps –aux|less                   mostra tutti i processi in maniera dettagliata

nice                               cambia la priorità di esecuzione di un processo

kill –HUP <pid>                   riavvia un demone

 

CONFIGURAZIONE DEL SISTEMA:

 

LILO

 

Vedi sezione “FILE-SYSTEM”

 

PROCESSI IN FASE DI AVVIO

 

La configurazione è in /etc/rc.d/; in questa directory c’è un file chiamato rc.local che è una sorta di “Autoexec.bat” del DOS.

Init.d contiene i files che vengono eseguiti per attivare i principali processi di sistema (ogni singolo files può essere lanciato in qualsiasi momento seguito da “start”, “stop” o “restart”, es: /etc/rc.d/init.d/lpr start).

La sequenza eseguita da init.d è la seguente:

 

·        /etc/rc.sysinit

·        avvio di un run-level specifico

·        /etc/rc.local

 

DAEMON

 

At

 

At pianifica l’esecuzione di un’attività da eseguire una sola volta, non periodicamente. La sintassi è:

 

at “ore”:”min” “mese”/”giorno”/”anno”

 

“mese”/”giorno”/”anno” sono facoltativi perché per default viene preso il giorno corrente.

Nell’editor che compare scrivere il comando da eseguire e poi premere CTRL-D per uscire. In alternativa si può preparare un file di solo testo con i comandi e poi usare:

 

at “ore”:”min” “mese”/”giorno”/”anno < “comandi”.txt

 

Comandi relativi

 

atq                       mostra la lista dei lavori di at

atrm “n”                cancella il comandi n° “n” di at

 

Cron

 

Cron è un demone che viene inizializzato, in genere, all’avvio della macchina o, al limite, da root lanciando solo il comando cron senza parametri, neanche la & perché cron ritorna da solo alla riga di comando. Ad intervalli regolari (1 minuto) viene risvegliato, controlla una serie di tabelle ed eventualmente esegue delle attività. Le tabelle sono in /var/spool/cron e in /etc/crontab, proprio su quest’ultimo root deve agire per impostare le sue preferenze mentre non è consigliabile agire sul primo. Esistono, inoltre, tabelle personalizzate per ogni utente e che devono essere attivate esplicitamente col comando “crontab”.

 

Tabelle cron dell’utente

 

Sono costituite da un insieme di righe che possono essere commenti, assegnazioni di variabili o stringhe di comando.

 

Commenti

 

Cominciano con # e sono ignorati da cron.

 

Assegnazioni di variabili

 

E’ possibile impostare o modificare qualsiasi variabile d’ambiente ma il suo ambito di visibilità sarà il file stesso in cui risiede la tabella cron e tutti gli script richiamati da tale file. La sintassi è nome=valore.

 

Stringhe di comando

 

Sono costituite da 6 campi scritti tutti sulla stessa riga separati da spazi o tabulazioni. I primi 5 indicano quando deve essere lanciata l’attività (sesto campo) e devono verificarsi tutti. Il primo campo corrisponde ai minuti in cui verrà eseguita l’attività, il secondo all’ora, il terzo al giorno del mese, il quarto al numero del mese (gennaio è 0), il quinto al giorno della settimana (domenica è 0). Per ognuno di questi campi valgono le seguenti regole:

 

Ø      un asterisco esprime una condizione sempre vera

Ø      una virgola separa più possibilità per lo stesso campo

Ø      un segno “-“ indica un intervallo di opzioni

Ø      un segno “/” indica un incremento

Ø      è possibile combinare le precedenti regole

 

Esempi:

 

* * * * *               ogni risveglio di cron

0 * * * *               all’inizio di ogni ora

2 2 4 6 *               alle 02:02 del 4 di luglio

30 5 * * 1,3,5  alle 05:30 tutti i lunedì, mercoledì e venerdì

0 6 * * 1-5            alle 06:00 dal lunedì al venerdì

*/10 0-4 * * *        ogni 10 minuti tra mezzanotte e le quattro del mattino

2 2 1-15/2 * *        alle 02:02 dall’1 al 15 del mese ogni 2 giorni

 

Si può raggiungere livelli ancora più complicati, ad esempio l’espressione 2-20/3,23,27-30 è valida!

Sommando più righe è possibile indicare anche il fine-mese:

 

* * 31 0-6/2,7-11/2 * script_di_fine_mese

* * 30 3-5/2,8-12/2 * script_di_fine_mese

* * 28 2 * script_di_fine_mese

 

 Il sesto campo è la stringa che sarà eseguita.

Occorre fare attenzione che l’attività lanciata termini prima del successivo lancio altrimenti un po’ alla volta si accumuleranno una miriade di istanze dello stesso programma, cosa che in certi casi può risultare disastroso. Se non si riesce a prevedere la durata di una certa attività oppure la durata è variabile occorre prevedere un meccanismo di semafori.

 

Il comando crontab

 

Le modifiche alla tabella di cron degli utenti di per sé non servono a nulla, bisogna eseguire il comando crontab per aggiornare le tabelle interne a cron. Senza parametri il programma legge il file crontab dell’utente; è possibile indicare un file diverso con la sintassi

 

crontab nome_file

 

Il parametro –r invece elimina la tabella di cron che si sta utilizzando in quel momento.

La tabella in /etc/crontab viene letta, invece, ad ogni risveglio di cron e di conseguenza viene sempre aggiornata automaticamente.

 

La tabella di cron del sistema

 

Si trova in /etc/crontab e rispetto alle tabelle utente ha un campo in più tra il giorno della settimana ed il comando da eseguire. Viene riletta ad ogni avvio di cron quindi non ha bisogno di essere rinfrescata con crontab.

Spesso questa tabella richiama periodicamente il comando “run-parts nome_directory” che esegue tutti gli script presenti all’interno della directory specificata.

 

Privilegi di cron

 

Non tutti gli utenti possono usare cron. Le regole sono così definite:

 

Ø      se esiste il file /etc/cron.allow solo gli utenti elencati nel file stesso potranno usare cron

Ø      se esiste ma è vuoto solo root potrà usare cron

Ø      se non esiste potranno usare cron tutti gli utenti non elencati nel file /etc/cron.deny

Ø      se /etc/cron.deny non esiste o è vuoto tutti gli utenti potranno usare cron

 

Tools per cron

 

Esistono diversi strumenti che configurano le tabelle di cron interagendo con l’utente:

 

gcrontab               www.arquired.es/users/aldelgado/proy/gcrontab

VCRON                 www.linux-kheops.com/pub/vcron/vcronGB.html

Kcron                    24.8.19.113/kcron.html

cromagnon            www2.andrews.edu/~aldy/cromagnon.html

 

RUN-LEVEL

 

Un run-level è un particolare tipo di funzionalità complessiva del sistema (processi, demoni, servizi in genere…….), in pratica definisce quali processi saranno avviati e quali terminati. Cambiando tali impostazioni cambia il profilo della macchina, ad esempio si possono escludere le funzionalità di rete, o l’X o altro ancora. I run-level sono configurabili ma in genere esistono alcuni punti fissi:

 

I run-level sono configurati nelle dir rc#.d e sono così definiti:

 

0                   Sistema spento

1                   Utente singolo

2                   Multiutente senza NFS

3                   Multiutente in modalità base

4                   Non utilizzata

5                   Modalità grafica (run-level standard)

6                   Riavvio

 

Digitando “init #” (dove # è il numero di un run-level) si chiede il passaggio a quel run-level, es: init 6 riavvia il sistema (chiudendolo ordinatamente). Il cambio di R.L. si può fare anche “a caldo” perché non vengono interrotti i processi che devono restare attivi anche nel R.L. nel quale si sta passando. Il run-level da attivare all’accensione viene indicato dal file /etc/inittab con una riga del tipo:

 

id:3:initdefault

 

SERVIZI DA ATTIVARE IN FASE DI AVVIO

 

In /etc/rc.d/rcx.d ci sono gli script che vengono eseguiti ad ogni avvio del sistema per ogni run-level; un esempio potrebbe essere:

 

s10syslogd

s15kerneld

s20crond

s99xdm

 

Tutti i file presenti nelle directory sono in genere collegamenti simbolici ai relativi files in /etc/rc.d/init.d. La “s” iniziale significa che il demone deve essere avviato (start), la “k” significa che il demone deve essere arrestato (kill). Le due cifre che seguono determinano l’ordine con cui i servizi devono essere attivati o disattivati. I caratteri restanti indicano il nome del demone.

 

Nella Red Hat è disponibile l’utility chkconfig che attiva o disattiva i servizi di un run-level specifico e dispone di alcuni switch:

 

--list[name]                                       visualizza lo stato del demone [name] o di tutti se [name] è omesso

 

--add“name”                                     avvia “name” ad ogni run-level

 

--del“name”                                      rimuove “name” da ogni run-level

 

--level“n..” “name” <on|off|reset> avvia, arresta o riavvia “name” nei run-level “n….”. Es: “chkconfig –level234 xfs on” attiva xfs per i run-level 2, 3 e 4.

 

INTERRUPTS

 

Per verificare gli interrupts usati si può usare:

 

cat /proc/interrupts

 

FILES DI CONFIGURAZIONE

 

CONFIGURAZIONE DELLA SHELL E DEL PROFILO

/etc/bashrc

contiene gli alias validi per tutti gli utenti e le funzioni per il sistema

~/.bash_profile

contiene le variabili di ambiente ed i programmi di avvio dell’utente. Configura la shell di login

~/.bashrc

contiene gli alias e le funzioni valide solo per un utente. Configura le shell interattive.

/etc/profile

contiene le variabili di ambiente ed i programmi di avvio del sistema

 

SICUREZZA

/etc/passwd

Descrive gli utenti e le rispettive password con un eventuale commento, l’home-directory e la shell di login. Ad ogni utente corrisponde una riga del file:

login:psw:uid:gid:info:home:shell

Le password sono in forma criptata. Se compare solo un * allora sono gestite da /etc/shadow.

/etc/shadow

Descrive, con la stessa sintassi di /etc/passwd, login e password di ogni utente in forma criptata. E’ possibile specificare il numero di giorni dopo i quali scade la password e dopo quanti giorni di inutilizzo l’user viene bloccata.

/etc/group

Contiene gli identificativi numerici dei vari gruppi. Es:

ftp::50:

 

CONFIGURAZIONE DI CRON

/etc/contab

configura di cron, ma ogni utente può avere configurazioni personali

 

CONFIGURAZIONE FILE SYSTEM

/etc/fstab

vedi file-system

 

CONFIGURAZIONE DI RETE

/etc/host.conf

configura la risoluzione dei nomi

/etc/hosts

indirizzi numerici dei server conosciuti

/etc/hosts.allow

elenca gli indirizzi IP che possono accedere alla nostra macchina e quali servizi possono usare

/etc/hosts.deny

elenca gli indirizzi IP che non possono accedere alla ns. macchina

/etc/networks

traccia la mappa delle sottoreti

/etc/ppp/chap-secret

userID e password per protocollo CHAP

/etc/ppp/options

parametri per connessioni ppp

/etc/ppp/pap-secret

userID e password per protocollo PAP

/etc/resolv.conf

configura i server DNS. L’opzione search permette di specificare fino a 6 domini di default. Es.:

search paperino tin.it pippo

/etc/smb.conf

configurazione di Samba

/etc/services

 

/etc/ftpaccess

Configura gli accessi FTP

/etc/ftpconversion

Usato da FTP per determinare la modalità di conversione dei files compressi

/etc/ftpusers

Impedisce gli accessi FTP agli utenti indicati al suo interno

/etc/ftphosts

Impedisce gli accessi FTP da parte sei nodi indicati al suo interno

 

Generalmente è buona norma prima escludere tutti gli indirizzi in hosts.deny con all:all e successivamente autorizzarli selettivamente in hosts.allow. La sintassi prevede prima il servizio, poi i “:” e poi il numero IP. Es.:

 

all:pippo.pluto

 

CONFIGURAZIONE LIBRERIE

/etc/ld.so.conf

Contiene tutti i paths in cui vengono cercate le librerie dinamiche

 

CONFIGURAZIONE LILO

/etc/lilo.conf

configurazione di LILO

 

CONFIGURAZIONE DEL KERNEL

/usr/src/linux/.config

configurazione del kernel

/etc/conf.modules

link simbolico a conf.modules

/etc/modules.conf

configurazione dei moduli del kernel. Elenca tutti i parametri aggiuntivi (indirizzi di I/O e IRQ) che servono durante il boot per usare le periferiche collegate di cui non è stato possibile fare l’autodetect.

 

CONFIGURAZIONE DELLE STAMPANTI

/etc/princap

configura le stampanti

 

CONFIGURAZIONE RUN-LEVEL

/etc/inittab

Gestisce i diversi R.L., imposta quello di default e contiene le entries che avviano diversi programmi di getty, come il faxgetty e l’mgetty, che gestiscono il comportamento che il sistema deve assumere in caso di eventi particolari come la pressione di CTRL-ALT-CANC, l’improvvisa mancanza di corrente, il ripristino dell’alimentazione ecc.

/etc/rc.d

E’ una directory che contiene tutti gli script dei processi e dei servizi che vengono attivati durante la procedura di bootstrap. Sono inoltre presenti anche i rispettivi script di shutdown e riavvio. Il file che gestisce i diversi R.L, anche quello di default, è /etc/inittab.

 

CONFIGURAZIONE DELLE MAIL

/etc/mail

Configura endmail

/etc/sendmail.cf

Configura sendmail

 

DISCHI

 

Per valutare le prestazioni dei dischi si può sfruttare:

 

hdparm –t “device”

 

L’opzione –t testa la velocità della cache dei dischi. L’uso di –tT effettua anche altri test.

 

TASTIERA

 

Sfruttare le apposite utility messe a disposizione da ogni distribuzione oppure in alternativa usare XF86Config o XF86Setup (vedi X Window). Volendo procedere manualmente la tastiera si imposta nel file /etc/sysconfig/keyboard con la riga:

 

KEYTABLE=”/usr/lib/kbd/keytables/it.map”

 

E’ possibile cambiare “it.map” con le altre mappe installate a seconda della tastiera in uso, normalmente in /usr/share/keytables. Vedere anche “man loadkeys”. Per rimappare la tastiera si può provare con:

 

xkbdcomp :0 - > /tmp/tast.map

 

Si può modificare il file prodotto e ricaricare col comando inverso.

Per rimappare i tasti speciali, anche quelli “extra”:

 

showkey –k                    per controllare i tasti già assegnati.

 

Premere i vari pulsanti e segnarsi i codici corrispondenti, per uscire non premere niente per 10 secondi. Se alcuni tasti non danno segni di vita provare con

 

shokey -s

 

Bisogna assegnare ai tasti da utilizzare (tramite il codice segnato) un keycode con setkeycodes. Il keycode è un numero a piacere ma attenzione a non utilizzarne uno già utilizzato, meglio controllare la keymap attiva. ES:

 

setkeycodes 0063 122                                 (

 

Poi editare la keymap /etc/kbd/default.map.gz ed inserire una riga del tipo:

 

keycode 122=F69

 

e poi anche:

 

string F69=”operazione\n”

 

Attenzione a terminare la stringa con \n.

 

Per avere il “Num Lock” sempre attivo dopo la partenza del sistema generalmente occorre inserire in /etc/rc.d/rc.sysinit:

 

for t in 1 2 3 4 5 6 do

         /usr/bin/setleds –D +num < /dev/tty$t > /dev/null

done

 

Nella Debian GNU/Linux bisogna creare in /etc/rc.boot uno script con le stesse righe, mentre con la Slackware vanno messe nel file rc.keymap

Per settare la risposta di alcuni tasti (come CANC) provare con “xmodmap” e “xev”.

Per le altre impostazioni vedi la sezione VIDEO/MOUSE per l’uso di X86Setup e Xconfigurator.

 

GUI

 

/opt/kde/share/config/kdmrc

/etc/X11/kdm/Xsession

/etc/X11/gdm/Xsession

 

FONTS

 

Volendo aggiungere fonts TT è molto facile se si usa l’X Font Server (XFS): copiare i fonts TT da c:\windows\fonts a /usr/X11R6/lib/X11/fonts/ttfonts e far partire l’xfs all’avvio del sistema se non lo fa già. Questo con la RH 6.2 è già sufficiente.

Eventualmente provare a digitare da /usr/X11R6/lib/X11/fonts/ttfonts:

 

ttmkdir –o fonts.dir                                                      (ad ogni aggiunta di fonts)

ttmkfdir > fonts.scale                                         (ad ogni aggiunta di fonts)

chkfontpath --add /usr/X11R6/lib/X11/fonts/ttfonts (solo la prima volta)

 

Per rendere Netscape più protetto dai crash da applicazioni java modificare il file /etc/X11/fs/config in modo che vi sia una sezione simile alla seguente:

 

catalogue =         /usr/X11R6/lib/X11/fonts/75dpi,

                  /usr/X11R6/lib/X11/fonts/Speedo/,

                  /usr/X11R6/lib/X11/fonts/misc:unscaled,

                  ecc. ecc.

 

In pratica inserire il percorso dei fonts da 75dpi prima di tutti gli altri ed invertire le righe con “Speedo” e “misc”

 

RETE

 

In un sistema Linux una connessione dial-up presuppone un dispositivo di rete virtuale proprio come una scheda di rete. Normalmente viene identificato con ppp0. Per server DNS si intende un server che consenta di risolvere gli indirizzi, ossia di trovare il corrispondente indirizzo numerico di un dominio (Es: www.qwertyuiop.com potrebbe essere 202.174.22.190).  Per Dominio di default si intende il suffisso che viene aggiunto ad un dominio quando non si specifica un indirizzo completo (ES: se il dominio di default è tin.it digitando www si sottointende www.tin.it).

Per l’autenticazione dell’accesso ad una rete tramite connessione PPP (internet) si usano generalmente due protocolli: CHAP o PAP. Il CHAP è generalmente meno usato ma e’ il più sicuro. MTU e MRU sono parametri che impostano la dimensione massima dei pacchetti spediti e rivevuti.

 

PORTE SERIALI

 

Per la configurazione delle porte seriali esiste il comando setserial, con le relative opzioni:

 

-g                mostra le informazioni

-a                mostra tutte le informazioni

-b                mostra un riassunto delle informazioni

port xxx        specifica l’idirizzo di I/O

irq xx           specifica l’IRQ da usare

uart xxxxx     specifica il tipo di porta seriale, i valori possono essere: 8250, 16450, 16550, 16550a, 16650 o 16750. Normalmente il tipo è 16550a.

spd_hi          imposta la velocità a 57.600 kbit

spd_vhi        imposta la velocità a 115.200 kbit

 

ES: setserial /dev/ttyS1 spd_vhi

 

Essendo un comando di configurazione dovrebbe essere inserito in /etc/rc.d/rc.local.

Per rendere la porta seriale disponibile a tutti gli utenti bisogna usare il comando “chmod 666 /dev/ttySx”.

 

CHAT

 

Chat è un programma che si usa per stabilire una connessione e generalmente, una volta stabilita, passa il controllo a pppd. Le sue opzioni sono:

 

-e    echo dei caratteri sullo stderr

-f “file”    legge uno script

-r “file”    scrive un report

-t xx    imposta un timeout

-v    verbose: i messaggi vengono inviati a syslogd

-V    verbose: i messaggi vengono inviati su stderr

 

PPPD

 

Il pppd è il demone che consente di effettuare connessioni di tipo PPP (Point to Point Protocol). Si Configura tramite:

 

 

Dispone di alcune modalità di lavoro che consentono una configurazione ottimale:

 

debug                         fornisce informazioni diagnostiche passate a syslogd e quindi archiviate in /var/log/messages

 

kdebug “n”                  informazioni diagnostiche delle routine del kernel che si occupano della gestione del pppd passate a syslogd. Se n=1 le informazioni sono generiche, se n=2 le informazioni riguardano i pacchetti ricevuti, se n=4 le informazioni riguardano i pacchetti inviati. Per combinare le informazioni da ricevere sommare i relativi numeri (ES: se n=7 vengono fornite tutte le informazioni).

 

nodetach                     il pppd non lavora in background

 

lock                            la porta seriale viene bloccata

 

modem                       usa le linee di controllo del modem. E’ il contrario di local che le ignora

 

local                           vedi sopra

 

xonxoff                       controlla il flusso tramite software

 

crtscts                         controlla il flusso tramite hardware

 

mru “n”                       dimensione dei pacchetti in ricezione

 

mtu “n”                       dimensione dei pacchetti in trasmissione

 

noipdefault                  si forza l’assegnazione di un indirizzo dinamico

 

netmask …..                stabilisce la maschera di rete

 

default route                definisce l’instradamento predefinito dei pacchetti TCP/IP

 

nodefaultroute contrario di defaultroute

 

user “utente”               nome con cui ci si identifica al server

 

connect “command” permette di usare il comando “command” per connettersi, di solito è chat

 

noauto                        non esegue l’autenticazione

 

auth                           specifica il tipo di autenticazione (ES: auth –chap +pap)

 

Generalmente sul pppd si usa il comando “chmod u+s /usr/sbin/pppd” per dare al pppd i permessi di root anche quando viene lanciato da un utente.

 

UTILITY

 

linuxconf                        Presente nelle RH configura diversi parametri

netcfg o netconfig

ifconfig ethx                   configurazione di una scheda di rete

netstat                           controlla lo stato della rete

traceroute                       mostra il percorso dei pacchetti

arp                                mostra gli indirizzi fisici collegati alla macchina

hostname                       mostra o imposta l’hostname

ping                               richiede un echo alla macchina chiamata

 

FILES DI CONFIGURAZIONE

 

·        /etc/hosts.conf

 

Indica dove ricercare la risoluzione dei nomi. La direttiva “host” indica di ricercare l’indirizzo numerico nel file /etc/hosts, “bind” indica di avvalersi dei server DNS.

 

ESEMPIO:

 

order hosts,bind

multi on

 

·        /etc/resolv.conf

 

Contiene gli indirizzi dei server DNS, i quali permettono la conversione degli indirizzi dal formato testuale (www……….) in formato numerico (xxx.yyy.zzz.kkk).

La sintassi è la seguente:

 

domain aaabbbccc.it                opzionale

search aaabbbccc.it                opzionale

nameserver xxx.yyy.zzz.kkk            indirizzo del DNS principale

nameserver aaa.bbb.ccc.ddd          indirizzo del DNS secondario

 

ESEMPIO

 

<inserire un esempio!!!!!!!!>

 

·        /etc/hosts

 

Memorizza gli indirizzi numerici dei server “conosciuti”.

Per cambiare nome alla macchina modificare il file /etc/hosts ed aggiornare di conseguenza la voce “HOSTNAME” del file /etc/sysconfig/network.

 

·        /etc/ppp/options

 

Contiene alcuni parametri per la configurazione della connessione. Con “noipdefault” si intende che l’assegnazione dell’indirizzo IP è dinamica: di volta in volta viene assegnato un indirizzo differente.

 

ESEMPIO

 

57600               velocità del modem

/dev/modem               dispositivo da usare

lock                  inibisce l’uso del modem ad altre applicazioni

crtscts               tipo di controllo del flusso (hardware)

defoultroute               interfaccia di default per i pacchetti in uscita

mtu 552            dimensione dei pacchetti trasmessi

mru 552            dimensione dei pacchetti ricevuti

 

·        /etc/ppp/pap-secret   /etc/ppp/chap-secret

 

Normalmente per le connessioni si utilizza il protocollo TCP/IP, ma per l’autenticazione della coppia userID/password si usano i protocolli PAP (più diffuso) oppure CHAP (più sicuro). Per configurare l’autenticazione in modo automatico (se non si dispone di appositi tool grafici) vanno modificati, a seconda del caso, i files /etc/ppp/pap-secret o /etc/ppp/chap-secret. La sintassi è la stessa:

 

UserID * Password

 

Es:     pippo * pluto

 

Per ovvi motivi di sicurezza i permessi di tali file devono essere impostati ad accesso esclusivo da parte di root.

 

SCRIPT PER LA CONNESSIONE

 

ESEMPIO

 

#!/bin/sh

chat –v “” ATDTnumprovider CONNECT “”

 

In /etc/ppp ci sono due files (ip-up e ip-down) che vengono eseguiti all’inizio ed alla fine della connessione: possono essere personalizzati per ottenere effetti particolari (messaggi, ecc.).

 

SAMBA

 

Samba implementa il protocollo smb (usato anche da Windows NT) per interfacciare Linux con altri sistemi operativi, permettendo la condivisione di files, stampanti ed anche connessioni ad internet. E’ utile installare swat (Samba Web Administration Tool) per la configurazione anche se si può sempre agire direttamente sul file /etc/smb.conf. Esiste inoltre un tool chiama Gnomba.

 

PORTE SERIALI

 

Per superare i 9600 bps il controllo del flusso deve essere fatto dall’hardware (CRTSCTS) e non dal software (Xon/Xoff).

 

LOGIN IN RETE

 

I login in rete funzionano in modo leggermente diverso dai login normali. C’è una linea seriale fisica separata per ciascun terminale attraverso cui ci si collega; per ciascuna persona che si collega via rete c’è invece una connessione virtuale separata e ce ne possono essere infinite: non è quindi possibile avviare una getty  separata per ciascuna connessione virtuale possibile. Ci sono diversi modi per collegarsi attraverso una rete: i principali, nelle reti, TCP/IP sono TELNET e RLOGIN. I login di rete hanno, invece di un insieme di getty, un daemon singolo per ciascun modo di collegamento che stanno in ascolto per i tentativi di login in ingresso. Quando ne notano uno inizializzano una copia di se stessi per gestire quel singolo tentativo; l’istanza principale continua ad aspettarne altri.

 

TELNET

 

telnet xxx.xxx.xxx.xxx per collegarsi ad un pc con un certo indirizzo ip

mput “file”                       per inviare files verso il pc con cui si e’ connessi

mget “file”                       per ricevere files dal pc con cui si e’ connessi

lcd                                  visualizza la directory corrente

 

Oltre a “telnet” e’ possibile usare il Midnight Commander.

 

FTP

 

E’ disponibile l’utility “ftp” ma si può usare anche il Midnight Commander.

 

FILESYSTEMS DI RETE

 

Attraverso i servizi di rete è possibile condividere files; normalmente si sfrutta l’NFS (Network File System) tramite il quale si può operare su file via rete come su files locali; anche per i programmi la cosa è trasparente.

 

KPPP

 

Getty legge il nome dell’utente ed avvia login che legge la password. Se user e password sono corretti login avvia la shell. Quando la shell termina init avvia un’altra copia di getty.

utilizzare. E’ necessario inserire nel file /etc/resolv.conf l’indirizzo di almeno un indirizzo numerico di un server DNS:

 

         search tiscalinet.it

         nameserver xxx.xxx.xxx.xxx      (server DNS primario)

         nameserver yyy.yyy.yyy.yyy      (server DNS secondario)

 

Impostare il timeout del modem e del pppd a 120 secondi.

Per rendere disponibile Kppp agli utenti normali:

 

 

FIREWALL

 

Per configurare un firewall in tutte le distribuzioni è presente ip-chains, facilmente amministrabile tramite un tool grafico chiamato gfcc. Naturalmente per i più esperti valgono sempre i comandi da shell.

 

VIDEO/MOUSE

 

Se non è disponibile una utility fornita nella distribuzione si possono provare:

 

XF86Config

È un programma che funziona in modalità a carattere che permette la configurazione di XFree86. Se il mouse è PS2 si può provare con protocol “MouseSystems” e Device “/dev/gpmdata”.

XF86Setup

Strumento grafico per la configurazione di XFree86. Rispondere

Riconfigurazione: no

X86Config come default: no

Poi seguire le istruzioni

Xconfigurator

Funziona in modalità a carattere, è presente nelle distribuzioni Red Hat e permette la configurazione tramite il probing (autodetect) dell’hardware

Sax

Presente nelle distribuzioni S.u.S.E., configura il Server X in modalità a caratteri.

Xvidtune

Permette di selezionare la frequenza del monitor

Mouseconfig

Imposta il mouse

 

Per modificare la risoluzione è possibile usare “CTRL”-”ALT”-”+” e “CTRL”-”ALT”-”-”

Una volta configurato il Server X lo si fa’ partire con “startx” o “X”.

Normalmente è bene che ci sia un link simbolico /dev/mouse verso il dispositivo usato ad esempio /dev/psaux se il mouse è PS2. Per sfruttare la rotellina del mouse si utilizza normalmente imwheel, la cui documentazione è presente in /usr/doc/imwheel.

 

STAMPANTI:

 

Linux accumula tutte le stampe in una zona del disco denominata spool, normalmente /var/spool/lpd/”nome_stampante”, e gestisce una coda di stampa. All’interno di ognuna di queste directory esistono almeno 4 files:

 

LOCK           semaforo per evitare di stampare più lavori contemporaneamente

LOG            log degli errori

ACCT          la sequenza dei lavori da stampare

STATUS         immagazzina il messaggio che viene generato col comando lpc –stat

 

IL FILE /etc/printcap

 

Il file /etc/printcap contiene la descrizione delle stampanti; in genere le stampanti descritte corrispondono alle directory presenti in /var/spool/lpd/.

Questo file viene trattato come fosse un’unica stringa, ecco perché si usa la “\” alla fine di ogni riga. I comandi presenti nel file sono separati da “:”.

La prima stringa contiene gli alias con cui si può chiamare la stampante:

 

lp|Stampante|HP500C:\                      si può chiamare lp, Stampante oppure HP500C

 

La seconda riga indica il dispositivo di stampa:

 

:lp=/dev/lp0:\                                    porta alla quale è collegata la stampante

 

Seguono tutti gli altri parametri:

 

:sd=/var/spool/lpd/HP500C:\              il nome della directory di spool

:if=/var/spool/lpd/HP500C/log:\          file di log degli errori

:af=/var/spool/lpd/HP500C/acct:\         sequenza delle attività

La stringa successiva è molto importante perchè riguarda il nome e l’ubicazione del filtro di input.

 

:if=/var/lib/apsfilter/bin/FILTRO-HP500C-MONO-300:\

 

Il filtro di stampa elabora i dati prima di spedirli alla stampante e se non si riesce a reperirne uno per la propria stampante si deve ricorrere a quello di un modello compatibile, col rischio di non riuscire a sfruttare tutte le potenzialità. Si può tentare di impostarne uno col comando /usr/lib/apsfilter/setup.

 

:sf:\                                                  elimina le pagine bianche alla fine della stampa

:mx#0:\                                            non limita la dimensione massima dei blocchi

 

Un’altra cosa molto importante è che non ci siano spazi in bianco all’interno del file.

 

Diverse distribuzioni mettono a disposizione tool per la configurazione automatica della stampante, ad esempio SuSe con YaSt, Caldera con COAS e RedHat con printtool.

 

Il demone deputato alla stampa è LPR; questo demone cerca la variabile PRINTER per conoscere la stampante predefinita, se non la trova vuole che gli sia passato come parametro il nome della stampante da utilizzare. E’ quindi consigliabile inserire nel file /etc/profile la riga:

 

export PRINTER=”lp0”

 

nel caso la stampante sia collegata sulla prima porta parallela.

Per eliminare il nome utente ed il nome job dalle stampe inserire in /etc/printcap la riga:

 

:sh:\

 

AUDIO:

 

Per informazioni sulla configurazione usata usare “cat /dev/sndstat”.

Se, invece, ci fossero problemi di configurazione della scheda audio si può usare “isapnp” per risolvere i conflitti e “pnpdump” per verificare le configurazioni possibili:

 

Ø      pnpdump > /etc/isapnp.config

 

A questo punto editare il file isapnp.config e decommentare la configurazione che si vuole usare.

E’ sempre possibile inoltre eseguire lo script in fondo a /etc/src/linux/drivers/sound.

 

Esiste un meccanismo alternativo per gestire l’audio e ricorre ad ALSA che, in futuro, sarà più gestibile e funzionale del classico OpenSound. Bisogna scaricare i drivers da www.alsaproject.org :

Ø      alsadriver-x.y.z.tar.gz

Ø      alsa-lib-x.y.z.tar.gz

Ø      alsa-util-x.y.z.tar.gz

 

ed installarli nell’ordine drivers, libs, util con “./configure”, “make”, “make install”.

Disattivare nel kernel ogni supporto per specifiche schede audio, deve rimanere attivato solo il supporto generico.

 

MODEM:

 

Linux gestisce benissimo senza dover installare drivers tutti i modem esterni sfruttando semplicemente un link /dev/modem alla porte seriale alla quale è collegato (es: /dev/ttyS1 per com 2).

Per quanto riguarda i modelli interni il discorso cambia: normalmente non sono dei veri e propri modem ma, dato il basso costo, sono semplicemente delle interfacce alla linea telefonica e demandano tutta la logica alla CPU ed al driver.

In mancanza del proprio driver il modem non può funzionare! E’ disponibile il sito www.linmodems.org per ulteriori informazioni.

 

SCANNER:

 

SCSI: compilare ‘sane’.

Paralleli: non supportati

 

MASTERIZZATORE:

 

Per masterizzare con dischi IDE bisogna ricompilare il kernel facendo in modo che il masterizzatore (ed il cdrom) siano visti non come dispositivi ma come scsi tramite emulazione.

In “Block Device” disabilitare “IDE/ATAPI cdrom support” e abilitare “SCSI emulation”

In “SCSI support” abilitare “SCSI support”, “SCSI cdrom support”, “Generic SCSI support”

 

Esistono diverse utility per masterizzare a riga di comando:

 

cdrecord –scanbus                                                       mostra i dispositivi SCSI ed i loro “indirizzi”

 

cdda2wav –D0,0,0 –t 1 –B –x                               preleva le tracce audio dal CD in files .wav

cdrecord –v –dev=0,1,0 –speed=2 –audio *.wav         masterizza le tracce su un CD audio

mkisofs –v –o immagine.cd –J –a “dir”                      crea un immagine iso della “dir”

cdrecord –v –dev=0,1,0 –speed=2 –data imm.cd         masterizza l’immagine su un CD-ROM

cdrecord dev=0,1,0 blank=fast                                cancella velocemente un CD riscrivibile

 

Avendo sufficiente memoria si può sfruttare un buffer FIFO con:

 

mkisofs –R –l –L –o fifo /directory | cdrecord dev=0,0,0 speed=4 fifo=nnnn

 

ZIP IOMEGA:

 

Attivare nel kernel il “supporto generico SCSI” e “IOMEGA parallel port”.

Il modulo è ‘ppa.o’.

 

GESTIONE DISCHI

 

Per attivare la modalità U-DMA e l’accesso a 32 bit inserire:

 

/sbin/hdparm –c1 –d1 /dev/hdx               nel file /etc/rc.d/rc.sysinit

 

ARRESTO DEL SISTEMA

 

Per consentire la chiusure delle attività in corso e lo scarico della cache su disco il sistema deve essere arrestato correttamente. Le soluzioni sono diverse: la più pratica è probabilmente usare il menù dell’interfaccia grafica scelta ma esistono comandi e stratagemmi che possono essere sfruttati da console o tramite script:

 

shutdown –h now            arresta il sistema

shutdown –r now            riavvia il sistema

init 0                              arresta il sistema

init 6                              riavvia il sistema

 

Nel caso che la tastiera non rispondesse, se il demone gpm è stato avviato con

 

gpm –s “ “

 

resta sempre a disposizione il mouse.

Tenendo premuto un tasto del mouse, triplo click con l’altro, click sul sinistro e si ottiene un arresto pulito del sistema; premendo il destro, invece, si ottiene un reboot. La pressione dell’ultimo tasto deve avvenire entro 3 secondi dal triplo click.

 

GESTIONE PACCHETTI

 

FORMATO RPM

 

Per pacchetti in formato .rpm si usa l’utility rpm con le seguenti opzioni:

 

i         install

e         rimozione

q        query

U         upgrade

V       verify

v         verbose

h        mostra avanzamento

 

Normalmente si usa “rpm –ivh xxxxxxx.rpm” per installare il pacchetto xxxxxxx e “rpm –evh xxxxxxx.rpm” per disinstallarlo.

Per creare un pacchetto rmp occorre seguire i seguenti passi:

 

1.     creare in file di testo semplice xxxxx.spec

2.     scrivere all’interno le righe:

name: Pippo

Summary: <descrizione>

Version: x.y

Release: z

Copyright: ___________

Group: Applications

Packager: <creatore>

%description

____________

____________

____________

%files

/…/…/…/xxxx.yyy

/………..

3.     rpm –bb xxxxx.spec

 

FORMATO .SRC.RPM

 

Contengono i sorgenti di un programma che va compilato con:

 

rpm –recompile xxxx.src.rpm

 

che compila ed installa gli eseguibili. Per creare ANCHE un pacchetto rpm si usa:

 

rpm –rebuild xxxxx.src.rpm

 

FORMATO DEB

 

I pacchetti “.deb” sono pacchetti per la distribuzione Debian di Linux ma possono essere sfruttati anche su altre versioni o attraverso software in grado di gestirli o, eventualmente, tramite i normali strumenti di Linux:

 

ar x abcd.deb                  restituisce abcd.tar.gz

tar zxvf abcd.tar.gz            scompatta il pacchetto

 

FORMATO TAR.GZ

 

Per pacchetti .tar.gz (o .tgz):

 

  1. Copiare il file .tar.gz in /tmp se si intende cancellare i sorgenti oppure in /usr/src per conservarli
  2. cd /tmp o cd /usr/src
  3. tar zxfv xxxxxxxx.tar.gz
  4. rm xxxxxxxx.tar.gz
  5. cd xxxxxxxxx
  6. ./configure
  7. make
  8. make install
  9. Se si intende cancellare i sorgenti rimuovere l’intera directory altrimenti dare: make clean
  10. ldconfig -v

 

FILE SYSTEM:

 

Il file-system nativo di linux è l’EXT2 (cod. 83) mentre la memoria virtuale viene gestita tramite una partizione di swap (cod. 82). Sono comunque supportati moltissimi altri file-system (MSDOS, VFAT, NTFS ecc. ecc.). E’ da notare che nei sistemi UNIX-like le maiuscole e le minuscole hanno la loro importanza: un file di nome “foo” è diverso da un altro che si chiama “Foo”.

 

LILO

 

SELEZIONARE UN SISTEMA OPERATIVO

 

LILO dà la possibilità di eseguire non solo Linux ma anche altri sistemi operativi.

Un sistema viene definito “di default” ed è quello che parte se quando compare la scritta “LILO:” non si preme nessun tasto oppure se si preme enter. Se, invece, alla partenza di LILO si preme il tasto “TAB” (prima che scatti il timeout) compare la lista degli altri sistemi operativi che sono configurati. Digitando il nome del sistema operativo scelto lo si fa’ partire.

Se selezioniamo Linux possiamo inserire dopo uno spazio degli argomenti che vengono passati al kernel, ad esempio digitando “linux 1” viene selezionato Linux come sistema ed 1 come run-level; in pratica si entra nel sistema con i privilegi di root senza digitare alcuna password.

Il file da configurare è /etc/lilo.conf: le sezioni con “image=” si riferiscono a sistemi Linux (possono essere più di uno, ad esempio se s intende avere un kernel stabile ma nello stesso tempo provarne uno ancora in fase di sviluppo) mentre quelle con “other=” si riferiscono ad agli altri sistemi per i quali LILO è configurato. La riga “default=” definisce ovviamente il sistema “di default”. Ogni modifica di tale file va’ attivata con “lilo –v”.

Attenzione: LILO non riesce a far partire Windows NT quindi bisogna sfruttare il loader di NT per la selezione del sistema operativo ed installare LILO sul boot record della partizione di boot di Linux.

 

DOVE INSTALLARE LILO

 

Per selezionare dove installare LILO modificare la voce “boot=” del file /etc/lilo.conf, per esempio: se “boot=/dev/hda” LILO si installerà nell’MBR del primo disco IDE, se boot=/dev/hdb2 LILO si installerà nel settore di boot della seconda partizione del secondo disco IDE. In quest’utlimo caso bisogna rendere avviabile la partizione tramite fdisk (comando “a”) o cfdisk (comando “b”). Dopo le modifiche lanciare “lilo –v” per renderle effettive.

 

ELIMINARE LILO

 

Volendo eliminare LILO le soluzioni sono 2: da Windows “fdisk /mbr” e da Linux “lilo –U”.

 

PARTIZIONI

 

Le partizioni visibile a Linux normalmente sono indicate nel file /etc/fstab, mentre quelle montate sono in /etc/mtab. E’ possibile assegnare una label alle partizioni con:

 

tunefs –L “label” “device”

 

Si può quindi usare mount –L “label” /mnt/xxxxxxx

 

FILES

 

In sistemi Unix-like “everything is a file” quindi anche una partizione viene vista come un file (Es. /dev/hda1). I files che cominciano con “.” sono nascosti.

 

IL PROPRIETARIO

 

Per impostare il proprietario di un file si usa il comando chown:

 

chown “utente” “file”         oppure

chown “utente”.”gruppo” “file”

 

PERMESSI

 

In un sistema multiutente deve esistere un meccanismo di protezione dei file per garantire la sicurezza di tutti e del sistema. Linux riconosce tre tipi di persone per ogni file: il proprietario (autorizzato ad usare chmod, il gruppo del proprietario e tutti gli altri. Per ognuno di essi è possibile stabilire i permessi di lettura, scrittura ed esecuzione.

Notare che nei sistemi Unix c’è una concezione del sistema che dice “everything is a file”, ossia tutto è un file, questo significa, per esempio, che anche i dispositivi vengono visti dal sistema come un file.

I permessi dei file e delle dir si vedono col comando “ls –l” e vengono visualizzati tramite 10 caratteri (es: -rwxr-xr--).

Il primo carattere indica il tipo di file:

 

- =file normale

d =directory

c =character special file

p =named pipe

s =socket

l=link simbolico

 

Gli altri caratteri possono valere “r”, “w” o “x” e vanno presi a gruppi di tre.

Il primo gruppo si riferisce ai permessi del proprietario, il secondo ai permessi relativi agli appartenenti allo stesso gruppo del proprietario ed il terzo a tutti gli altri.

La “r” indica il permesso di lettura, la “w” il permesso di scrittura e la “x” è per il diritto di esecuzione. Per le directory il permesso di esecuzione va inteso come permesso di poter accedere a tale directory (con cd xxxx), il permesso di lettura significa poter “listare” i files, il permesso di scrittura significa poter aggiungere files.

Per modificare i permessi di un file si usa il comando chmod “permessi” “file”.

I permessi possono essere digitati in due modi.

 

FORMA OTTALE

 

Si usa un numero compreso tra 0 e 7 per ogni tipo di utenza (proprietario, gruppo, altri):

 

Numero ottale

Permesso

Descrizione

0

---

Nessuna autorizzazione

1

--x

Solo esecuzione

2

-w-

Solo scrittura

3

-wx

Scrittura ed esecuzione

4

r--

Solo lettura

5

r-x

Lettura ed esecuzione

6

rw-

Lettura e scrittura

7

Rwx

Lettura, scrittura, esecuzione

 

Un esempio potrebbe essere “chmod 755 pippo” che attribuisce per il file pippo tutti i permessi al proprietario mentre agli utenti dello stesso gruppo e a tutti gli altri solo lettura ed esecuzione.

 

FORMA “CHIARA”

 

Si specifica prima l’utente con una lettera identificativa (o=proprietario, g=gruppo, o=altri, a=tutti), poi il segno “+” se si intende aggiungere un permesso, “-“ per toglierne oppure “=” per fissare determinati permessi e poi i permessi su cui agire.

Un esempio potrebbe essere “chmod g+x pippo” che “aggiunge” agli appartenenti allo stesso gruppo del proprietario il diritto di esecuzione del file pippo.

 

FUSER

 

Per identificare quali utenti o processi stanno usando un file o una socket si usa il comando fuser:

 

fuser –v file1,file2,…..,filen                                        per i files

fuser –v –n tcp hostpart1,hostpart2,……,hostpartn         per le socket

 

TCP può essere sostituito con UDP a seconda del tipo di connessione.

Fuser restituisce nell’ordine: utente proprietario, pid, tipo di accesso, il comando con cui è stato lanciato il processo.

 

TIPI DI ACCESSO

 

c (current directory)         il processo ha settato il file specificato come dir corrente

e (executable being run)         il file specificato è un eseguibile correntemente in exec

f (open file)                    il file è aperto

r (root directory)              il file specificato è la root del comando

m (shared memory)               il file è una libreria condivisa correntemenet in uso.

 

Per quanto riguarda la socket può risultare più utile:

 

netstat –p

 

che restituisce i pid ed i nomi dei possessori della socket.

 

STRUTTURA DELLE DIRECTORY:

 

/bin

binari indispensabili per la partenza del sistema

/boot

Contiene tutti i files necessari all’avvio di linux, compreso il kernel

/dev

file speciali associati ai dispositivi:

/dev/fbx

Frame Buffer x della scheda video

/dev/fdx

floppy x

/dev/hdxy

HD o CDROM collegato sul canale IDE. hday = Primary Master, hdby = Primary Slave, hdcy Secondary Master, hddy = Secondary Slave. La y e’ opzionale e si usa nel caso di più partizioni sulla stessa unità (es: hda2 è la seconda partizione dell’unità Primary Master

/dev/lpx

Porta parallela x

/dev/null

nullo: se letto ritorna solo 0, se scritto assorbe tutto l’output che gli si manda come un buco nero

/dev/psaux

Porta PS2

/dev/random

Ritorna numeri random

/dev/rtc

Real Time Clock

/dev/sdxy

Simile alla precedente ma per dischi SCSI

/dev/ttxy

Console virtuale n° y

/dev/ttySx

Porta seriale n° x

/etc

contiene files di configurazione

/etc/rc.d

contiene tutti gli script che vengono eseguiti durante l’avvio e l’arresto del sistema

/home

contiene le home degli utenti

/lib

librerie condivise dai programmi

/lost+found

Contiene i file persi o corrotti recuperati dopo un riavvio “brutale” del sistema

/mnt

contiene i mount-point

/opt

vecchia dir Unix per i programmi (ex /usr)

/proc

dir virtuale gestita dal kernel per la gestione dei processi

/root

home dell’utente root

/sbin

binari per la gestione del sistema da parte di root

/tmp

file temporanei

/usr

applicazioni, librerie ecc. per gli utenti

/usr/bin

comandi utente

/usr/include

header per compilazioni

/usr/lib

librerie

/usr/local/bin

programmi installati da sorgenti

/usr/sbin

programmi non essenziali

/usr/share

dipendente dall’architettura del sistema

/usr/src

sorgenti

/usr/X11R6

sistema Xwindow

/var

varie: log, spool, ecc.

 

INTEGRITA’ DEL FILE-SYSTEM

 

Dopo un riavvio “brutale” di Linux o comunque dopo n riavvii del sistema viene eseguito automaticamente il controllo del file-system (fsck).

Nel caso lo si voglia forzare a mano occorre smontare prima il disco da controllare ed usare, eventualmente, l’opzione “–a” per chiedere la correzione automatica degli errori riscontrati.

 

SPOSTAMENTO DIRECTORY

 

Per spostare una dir da una partizione ad un’altra:

 

mv /home /old-home

mkdir /home

mount –t ext2 /dev/hdax /home

cp –dpR /hold-home/* /home

aggiornare /etc/fstab con “/dev/hdax         /home                  ext2         defaults”

 

IMMAGINI

 

Per creare l’immagine di un dischetto:

 

         cp /dev/fd0 immagine.img

 

Per creare un dischetto da un’immagine:

 

         cp immagine.img /dev/fd0

 

Per montare un’immagine:

 

         mount –o loop –t  ext2 immagine.img /mnt/xxx

 

Per creare l’immagine masterizzabile di una directory:

 

         mkisofs –a –r –v –T –o immagine.img /…/dir

 

Per montarla:

 

         mount –o loop –t iso9660 immagine.img /mnt/xxx

 

LIBRERIE DINAMICHE

 

Se viene segnalata la mancanza di librerie dinamiche (*.so.*) inserirne la path in /etc/ld.so.conf e poi eseguire ‘ldconfig –v’

 

RICERCHE:

 

locate “file”                                            trova un file velocemente sulla base di un elenco aggiornato periodicamente

 

find “dir di partenza” –name “nome-file” cerca un file setacciando tutto il file-system

 

Per eseguire un comando sui files trovati da find:

 

find “dir di partenza” –name “nome-file” –exec “comando” {} \;

 

Quando si usano i caratteri jolly con l’opzione “-name” bisogna usare le doppie apici, es:

 

find / -name “foo*”

 

Quando si usa “-exec” bisogna mettere una “\” alla fine del comando, es:

 

find / -name “foo*” –exec cat {} \

 

LINK

 

Un link permette di dare più nomi allo stesso file. I link possono essere hard o simbolici.

Gli hard-link si creano col comando “ln” e generano semplicemente un’altra “entrata” nell’elenco dei file di una directory, il risultato è che due nomi corrispondono allo stesso file, quindi modificarne uno significa modificare anche l’altro. I permessi sono gli stessi del file originale. Cancellando il link il file non viene eliminato.

I link simbolici si creano col comando “ln –s” e generano un collegamento ad un nome di file. Questa forma è molto più usata perché più elastica, ad esempio il link può avere permessi diversi dal file originale.

 

COMPRESSIONE:

 

GZIP, gestisce un solo file alla volta:

 

gzip –9 xxxx.abc comprime xxxx.abc in xxxx.abc.gz con la massima compressione, xxxx.abc viene eliminato

gunzip xxxx.abc.gz decomprime xxxx.abc.gz

gzip –d xxxx.abc.gz come gunzip

 

Per gestire più files normalmente gzip si combina con tar:

 

tar zxfvp xxxx.tar.gz decomprime archivi “tar.gz” o “tgz”

tar cvzfp ……… crea un archivio “tar.gz” o “tgz”

 

Notare l’uso dell’opzione “p” che salva i permessi: non e’ indispensabile ma è molto utile quando si intende effettuare un back-up del sistema.

 

ZIP, gestisce archivi:

 

zip –9 xxxx.zip *.txt comprime tutti i files .txt nell’unico file xxxx.zip

unzip xxxx.zip decomprime il file xxxx.zip

 

BZIP2, gestisce un solo file alla volta:

 

bzip2 xxxx.abc comprime xxxx.abc in xxxx.abc.gz, xxxx.abc viene eliminato

bunzip xxxx.abc.bz2 decomprime xxxx.abc.bz2

bzip2 –d xxxx.abc.bz2 come bunzip

 

Bzip2 viene spesso usato insieme a tar:

 

tar cvfp “dir da comprimere” | bzip2 –9 > abcd.tar.bz2          comprime una dir con bzip2

bzip2 –dc abcd.tar.bz2 | tar xfvp                                                     decomprime l’archivio

 

Utility grafiche:

 

Esistono varie utility grafiche che semplificano la gestione di archivi compressi, alcuni di essi sono:

 

·        LinZip

·        Tkzip

 

IL FILE /etc/fstab

 

In /etc/fstab ogni riga indica quale dispositivo deve essere montato, qual è il suo mountpoint, di che tipo è (ext2, vfat, ntfs ecc. ecc.) ed altre opzioni. Alcune righe hanno la parola “auto” altre no: serve per indicare quali dispositivi devono essere montati automaticamente in fase di partenza e quali invece devono essere montati manualmente. Dichiarare dei dispositivi “noauto” serve per poterli montare specificando solo il dispositivo oppure solo il mountpoint (es. mount /mnt/cdrom).

Tutti i campi vanno separati da tabulazione.

L’opzione “umask=xyz” permette di stabilire quali permessi INIBIRE ai vari utenti (x=root, y=utenti del gruppo di colui che monta il file-system, z=altri). X y e z possono valere:

 

0                   tutti i permessi

1                   inibisce l’esecuzione

2                   inibisce la scrittura

3                   inibisce scrittura + esecuzione

4                   inibisce la lettura

5                   inibisce lettura + esecuzione

6                   inibisce lettura + scrittura

7                   nessun permesso

 

N.B.: se si specifica l’opzione “user” solo l’utente che ha montato un file-system può smontarlo, mentre se si specifica “users” lo può fare qualunque user.

 

CREAZIONE E COPIA DI DISCHI DI BOOT

 

Per creare un’immagine di un floppy su hd:

 

         dd if=/dev/fd0 of=floppy.img

 

Per scrivere un floppy partendo da un’immagine:

 

         dd if=floppy.img of=/dev/fd0

 

Per creare un disco di boot (es per kernel 2.2.7):

 

mkbootdisk --device /dev/fd0 2.2.7

 

oppure

 

         cp /boot/bzImage /dev/fd0

         rdev /dev/fd0 /dev/”partizione di root”

 

LA SHELL

 

La shell è l’interprete comandi di linux (e la più famosa e la shell Bash) ma è anche un completo linguaggio di programmazione e permette l’esecuzione di veri e propri script. Esistono costrutti per il controllo del flusso del programma (ramificazioni, cicli, ecc.) ed anche variabili.

La shell può essere di login o interattiva. La shell di login è quella in cui viene chiesto di identificarsi per accedere al sistema ed è configurata tramite il file “.bash_profile”; le shell interattive sono tutte le shell che vengono aperte dopo il login, in questo caso il file di configurazione è “.bashrc”.

 

CONFIGURAZIONE

 

All’interno dei files di configurazione delle shell (~/.bashrc e ~./.bash_profile) ma anche in /etc/profile è possibile inserire le personalizzazioni. Il file /etc/profile fa’ da “.bash_profile” globale, ossia valido per tutti gli utenti. Normalmente vengono definiti degli alias che modificano il funzionamento di un comando oppure creano un nuovo comando. Ad esempio con

 

alias ls=”ls –la”

alias pippo=”

 

digitando ls si otterrà in realtà “ls –la” (modifica) mentre digitando pippo si otterrà “ cat ~/pippo | grep pluto” (nuovo). Usare sempre i doppi apici nella definizione degli alias.

E’ inoltre possibile definire delle variabili valide solo all’interno della shell oppure valide sempre:

 

abc=”1”

export PRINTER=”lp1”

 

La variabile abc avrà valore 1 all’interno della shell mentre la variabile lp sarà sempre impostata col valore lp1.

Per estrarre il valore di una variabile si premette il carattere $, ad esempio:

 

echo $PRINTER

 

restituirà lp1.

 

La variabile PATH contiene tutte le directory in cui vengono cercati gli eseguibili quando nel richiamare un comando non viene specificato il percorso.

La variabile per la configurazione del prompt e PS1. Con

 

export PS1=’$pwd’

 

il prompt indicherà la directory in cui ci si trova perché gli apici singoli indicano che la variabile deve essere valutata di volta in volta.

Il comando “env” elenca tutte le variabile d’ambiente definite ed il relativo valore.

Può risultare utile mettere in “.bash_profile” la riga “source ~/.bashrc” per mantenere tutte le personalizzazioni della shell interattiva anche nella shell di login: quando viene richiamato il file “.bash_profile” viene eseguito ANCHE “.bashrc”.

 

Il file /etc/termcap è un elenco di tutti i terminali che il sistema conosce.

E’ possibile cambiare la shell di login col comando chsh, la lista di quelle disponibile è in /etc/shells.

 

REINDIRIZZAMENTI

 

Per “stdout” (standard output) si intende il monitor, mentre per “stdin” (standard input) si intende la tastiera; l’ “stderr” è lo standard errors ed è un filtro che intercetta solo i messaggi di errore. Tutti e tre possono essere rediretti tramite appositi operatori:

 

>         redirige l’stdout

<         redirige l’stdin

>>         redirige l’stdout accodando

<<         redirige l’stdin accodando

2>         redirige l’stderr

2>>         redirige l’stderr accodando

 

Il reindirizzamento può essere fatto solo su files, non su comandi. Per passare l’output ad un programma si utilizza l’operatore “|” (pipe).

 

Esempi:

 

ls –f > lista.txt                  crea (o sovrascrive) lista.txt con l’elenco dei file della dir corrente

cat lista.txt >> lista2.txt         accoda lista.txt al file lista2.txt

ls | more                        mostra “ls” una videata alla volta.

 

I nomi dei file possono essere indicati tramite l’uso di caratteri jolly, al fine di passare ai comandi più di un file.

 

*        indica 0 o più caratteri

?        indica un carattere

a-z     un carattere compreso tra a e z

abc     un carattere a scelta tra a b e c

^       vieta la corrispondenza

~         equivale alla home directory

 

ALCUNI COMANDI:

 

cat

conCATena più files. Generalmente e’ usato per visualizzare un file sullo standard output (video) oppure redirigendo l’output, es: cat xxxxx.txt | grep cc cerca “cc” nel file xxxxx.txt e lo visualizza a video cat /dev/hda1|bzip2>img salva nel file img l’intera partizione hda1 compressa con bzip2

chmod

cambia i permessi

chogrp

cambia il gruppo

chown

cambia il proprietario

chsh

cambia la shell di login

clock

modifica l’orologio hardware e software

cmp

compara due files

cp

copia files

date

modifica la data/ora del pc ma non nell’hardware

diff

simile a cmp

dcho

manda l’echo sullo standard output

dile

determina il tipo di file analizzandone il contenuto

export

rende “globale” la visibilità di una variabile

find

Ricerca un file (vedi la sezione FILE-SYSTEM)

grep

cerca una stringa in un file

halt

arresta il sistema

init

passa ad un altro run-level

less

mostra il contenuto consentendone lo scorrimento su e giù

ln

crea link a files esistenti, con l’opzione “-s” crea link simbolici

lpc

Verifica lo stato delle stampanti, avvia ed arresta lo spool, attiva e disattiva le stampanti, riorganizza l’ordine dei lavori

lpq

mostra la coda di stampa (lpq –l). In alternativa: cancel [stampante] oppure lpstat

lpr

stampa un file. Se è definita la variabile d’ambiente PRINTER questa viene usata come stampante predefinita, altrimenti bisogna specificare –Pstampante.

lprm

rimuove i processi accodati (“lprm –“ li rimuove tutti). In alternativa “cancel all”

ls

lista il contenuto di una dir. Dispone di diverse e utili opzioni una delle quali è senz’altro “-l”: mostra i files e le directory incolonnati con i relativi dettagli, permessi ecc.(il secondo campo indica quanti sono i collegamenti a quel file). Per le directory si usa “-ld”.

man

cerca la documentazione relativa ad un comando

mkdir

crea un directory

more

mostra un file una videata alla volta

mount

monta un file-system “esterno”

mv

muove files o li rinomina

nice/renice

visualizzano o modificano la priorità di esecuzione dei processi (da –20 che è la più alta a +19)

passwd

modifica la password di un utente

pr

prepara uno o più files per la stampa

printenv

mostra le variabili d’ambiente

ps

mostra i processi in esecuzione

pstree

mostra i processi in esecuzione sotto forma di albero

pwd

mostra la directory corrente

pwd

indica il percorso in cui ci si trova al momento

quota

mostra l’occupazione del disco per un determinato account

rdate

legge l’ora da un time-server in rete. Es: “rdate www.clock.org|hwclock -systohcc” messo in /etc/ppp/ip-up aggiorna la data/ora ad ogni connessione ad internet

reboot

riavvia il sistema

rm

rimuove files

rm –r

rimuove una cartella ed il suo contenuto

rmdir

rimuove una directory

rpm

installa/disinstalla/aggiorna pacchetti in formato rpm (Gestione pacchetti)

split

spezza un file in più parti

su

passa momentaneamente ad un altro utente

tar

archivia più files in un unico file

tee

legge dallo standard input e scrive sullo standard output

touch

se si specifica un file inesistente lo crea vuoto, altrimenti aggiorna la l’ora e la data dell’ultima modifica

umount

smonta un file-system “esterno”

whatis

ricerca la descrizione di ogni comando

who

mostra gli utenti connessi

 

CARATTERI ESPANSI / QUOTING

 

La shell mette a disposizione una serie di caratteri speciali molto utili per la creazione di script ma utilizzabili anche direttamente da riga di comando:

 

;

separa due comandi sulla stessa riga

(com1;com2)

raggruppa più comandi, crea una sub-shell

{com1
  com2
}

raggruppa una serie di comandi in un unico blocco

com1|com2

reindirizza l’output di com1 nell’input di com2

`expr`

valuta l’espressione

\xx

non valuta l’espressione

$var1

indica la presenza di una variabile

$comando

restituisce l’output di un comando. ES: month=$(cat xxxx)

com1&&com2

esegue com2 solo dopo che com1 è terminato correttamente

com1||com2

esegue com2 solo se fallisce l’esecuzione di com1

“ “

racchiudono una stringa che non va elaborata tranne che per i caratteri $, `, “

‘ ‘

racchiudono una stringa che va presa alla lettera

 

COSTRUTTI

 

CICLO FOR

 

for $var1 in “stringa” do

<istr1>

<istr2>

……..

<istr n>

done

 

CICLO WHILE

 

while <cond.> ;

do <istr.> ;

done

 

CICLO UNTIL

 

until <cond.> ;

do <istr.> ;

done

 

SELEZIONE

 

if <cond. 1> ; then <istr. 1> ;

elif <cond. 2> ; then <istr. 2> ;

else <istr. 3>

 

SELEZIONE MULTIPLA

 

case $var1 in

“stringa 1” ) <istr. 1> ;;

“stringa 2” ) <istr. 2> ;;

…….. ) ………. ;;

“stringa n” ) <istr. n> ;;

esac

 

TASTI SPECIALI

 

CTRL-S                   arresta il flusso di output sullo schermo

CTRL-Q                   lo riprende

CTRL-Z                   sospende un programma

CTRL-\                   “killa” un programma con tanto di file core

CTRL-D                   genera un carattere di EOF

 

CARATTERI SPECIALI

 

Parentesi graffe: ALTGR+7   ALTGR+0

Parentesi quadre ALTGR+8   ALTGR+9

Tilde                        ALTGR+ì

 

SCRIPT

 

I file script sono riconoscibili normalmente ma non sempre dall’estensione”.sh”. Non sono altro che dei files di testo in cui viene inserita una serie di comandi. Ogni script è in realtà un programma e deve quindi avere i permessi di esecuzione e deve trovarsi nella path di ricerca dei binari. La prima riga indica quale interprete deve essere utilizzato e comincia sempre con #! seguito dall’indirizzo e dal nome della shell (es.: #!/bin/sh).

Tutte le altre righe che cominciano col carattere “#” sono commenti e non vengono interpretate.

Uno script lanciato da una shell esegue i comandi in una shell secondaria e quando termina vengono perse tutte le impostazioni quindi, ad esempio, una riga del tipo VAR=”pippo” attribuirebbe il valore pippo alla variabile VAR solo all’interno dello script stesso. Per modificare permanentemente la variabile è necessario usare export VAR="pippo”

 

COMPILAZIONI

 

Il compilatore più diffuso è gcc della GNU e si usa con:

 

gcc –o pippo.c

 

e produce un file “.o” (object) che va poi passato ad un linker(????).

Sono necessarie le librerie glibc-devel o libstdc++-devel.

 

EMULATORI

 

WINE

 

Wine è un programma che consente di eseguire programmi progettati per Windows su Linux ma, come dice l’acronimo Wine Is Not an Emulator, non è un emulatore anche se il risulato è lo stesso. Wine è reperibile allindirizzo http://www.winehq.com.

 

CONFIGURAZIONE

 

Wine si configura globalmente tramite due files:

 

/etc/wine.conf

/usr/local/etc/wine.conf

 

mentre la configurazione per ogni utente si trova in

 

~/.winerc

 

Wine può funzionare sia appoggiandosi ad una partizione con Windows installato sia da solo.

Nella modalità stand-alone (senza Windows installato) bisogna creare una directory windows ed una windows/system ad esempio in /usr/local/lib/win e dare i permessi di accesso agli utenti. Nella dir windows bisogna creare un file win.ini vuoto mentre nella dir system creare vuoti shell.dll, shell32.dll, winsock.dll, winsock32.dll.

 

Per la modalità con Windows installato invece ………VEDI INTER.NET N° 58/2000 PAG. 121.

 

X WINDOW

 

Il sistema X Window è alla base dell’ambiente grafico di Linux. X implementa una struttura client-server ma client e server non devono necessariamente essere sulla stassa macchina.

 

Server X:    è il programma che gestisce l’interfaccia grafica e accetta le connessioni di rete per la gestione remota. Fornisce i servizi ai client.

 

Client X:     lo sono tutti i programmi che utilizzano l’ambiente grafico gestito dal Server X, sia sulla macchina locale che in rete.

 

Protocollo X: è il protocollo di comunicazione utilizzato dal Server X e dai Client X

 

WM:            Window Manager, sono particolari software che comunicano al server dove posizionare le finestre ed altri componenti. Forniscono all’utente i mezzi per spostarle e ridimensionarle. Si appoggiano al Server X e sono anch’essi client.

 

Normalmente per avviare X si usa il comando startx, in questo caso si avvia prima il server e poi diversi client (twm, xterm, …..).

 

XFree86

 

Il server XFree86 non è altro che una delle implementazione del sistema X Window che di per sé è solo un modello. E’ una versione liberamente ridistribuibile, normalmente si installa nella directory /usr/X11R6/ mentre i file di configurazione sono in /etc/X11/. Per i settaggi si usa l’XF86Config.

 

~/.xinitrc         viene usato da X all’avvio

~/.twmrc         viene letto dal window manager twm

~/.fvwmrc         viene letto dal window manager fwm

 

ERRORI

 

Se si blocca l’X11 si può tentare di ucciderlo con CTRL-ALT-BACKSPACE oppure riavviare il sistema in maniera pulita con CTRL-ALT-CANC.

Naturalmente vale la pena di tentare il passaggio alla modalità a carattere con CTRL-F1 (F2, F3..F6); per ritornare alla modalità grafica usare ALT-F7.

Per capire gli errore si può esaminare il file prodotto con: “startx 2> report.txt”.

 

OTTENERE INFORMAZIONI

 

uname –a:                   per informazioni sul computer (microprocessore, kernel, nome del PC,…….)

free –mt:                   per verificare l’uso della RAM

top:                   per vedere i processi più “pesanti”

sar:                   riporta l’attività del sistema, è utilizzabile per creare grafici

jobs:                   per vedere i processi in background

dmesg:                   per vedere i messaggi di BOOT del kernel

/”stringa”                   per cercare nelle pagine del man

df (disk free)                    per vedere l’occupazione dei dischi

du (disk usage)                   per vedere l’occupazione dei dischi

wc                   per vedere statistiche su files di testo

ldd <prog>                   visualizza le librerie usate da <prog>

 

DOCUMENTAZIONE:

 

MAN

 

man “comando”         per fare ricerche all’interno della pagina /”stringa”

 

Per stampare le pagine man si può procedere come segue:

 

man –t “comando” | lpr

man –t “comando” | mpage –2 | lpr                        solo Rh per un risultato migliore

 

APPUNTI LINUX

 

Reperibili su http://www.pluto.linux.it sono una vera e propria enciclopedia del Linux

 

LDR - Linux Domande e Risposte

 

Contiene una vastissima serie di FAQ ed è reperibile sempre su http://www.pluto.linux.it .

 

ALTRI

 

Se non si trova niente usare “man –k” per cercare qualcosa di attinente.

apropos                trova le pagine di man contenenti una certa parola chiave

whatis                   mostra una breve descrizione dei comandi

 

Eventualmente cercare in /usr/src/linux/documentation o in /usr/doc.

 

AMMINISTRAZIONE DEL SISTEMA

 

AMMINISTRAZIONE GENERALE

 

Per amministrare un sistema Linux esiste un programma molto comodo che si chiama webmin, sono inoltre disponibili i vari tool messi a disposizione da ogni distribuzione (linuxconf, YaST, ecc.).

Webmin non ha bisogno di compilazioni, è sufficiente scompattare l’archivio in /usr/local, fare “cd webmin-x.yy e poi “./setup.sh”. Fare attenzione alla login che non corrisponde alla login del sistema ma soltanto a webmin: per root la passeord è “admin”. Il programma ri richiama lanciando il browser e ricercando la porta 10.000.

 

GESTIONE ACCOUNT

 

GESTIONE UTENTI

 

AGGIUNGERE UN UTENTE

 

Da terminale digitare “adduser” poi rispondere a “login name” col nome dell’utente da creare poi battere INVIO fino alla fine.

 

GESTIONE GRUPPI

 

AGGIUNGERE UN GRUPPO

 

Da terminale digitare “groupadd <nome del gruppo>”.

 

ASSEGNARE UN GRUPPO AD UN UTENTE

 

Da terminale digirate “usermod –G <gruppo> <nome>”.

 

CAMBIARE PASSWORD:

 

Da utente root digitare “passwd <utente>” oppure loggarsi come utente e poi battere “password”.

 

Con la Red Hat 6.x è possibile sfruttare le apposite utilità grafiche: dal menu G selezionare “System Configuration” e poi scegliere “User and group configuration” oppure la voce con l’icona del direttore d’orchestra.

 

In /etc/passwd (o /etc/shadow se criptate) si trovano le password di tutti gli utenti, mentre in /etc/group c’è l’elenco dei gruppi.

 

GESTIONE DELLA MEMORIA

 

Linux non ha una gestione precisa della memoria perché il gestore della memoria è strettamente dipendente dall’architettura della macchina.

Sulle architetture x86 per Linux la memoria è divisa a pagine di 4kb. Ogni processo “vede” solo un certo numero di pagine (spazio virtuale) che sono riservate solo a lui. Il kernel permette di concatenare logicamente pagine fisicamente separate ma per i processi ciò è trasparente. Se un processo si blocca non blocca gli altri processi e tanto meno il sistema operativo perché ha una zona definita di memoria ed ha diritto ad una percentuale di risorse del sistema, tra cui anche il processore: non è possibile teoricamente che un processo monopolizzi una risorsa. Inoltre ogni processo può avere a disposizione più RAM di quanta non ne sia fisicamente installata nel sistema per mezzo dell’area di swap: una partizione dell’hard-disk che viene vista come fosse RAM sempre grazie al kernel. Più processi possono comunque condividere aree di memoria che vengono chiamate Shared Memory. Per quanto riguarda la protezione della memoria Linux usa 2 livelli: kernel space e user space.

 

COMPILAZIONE DEL KERNEL:

 

0        Nel file /usr/src/linux/arch/i386/makefile:

 

                  

2        Se non ci sono creare i link:

ln –s /usr/src/linux/include/asm-i386/ /usr/include/asm

ln –s /usr/src/linux/include/linux/ /usr/include/linux

ln –s /usr/src/linux/include/scsi/ /usr/include/scsi

3        cd /usr/src/linux

4        make mrproper (cancella il file .config quindi resetta la configurazione, si può evitare se si stà ricompilandi la stessa versione, mentre è indispensabile se si aggiorna il kernel con una nuova versione)

5        make xconfig o make menuconfig

6        make dep

7        make clean

8        make bzImage (si può anche scrivere “make dep clean bzImage”)

9        rm –R /lib/modules/”versione del kernel”

10   make modules

11   make modules_install

12   make install

 

In alternativa al punto 9 è possibile utilizzare ‘rm “depmod –a|cut –d: -f1”’ alla fine di tutto.

Volendo “salvarsi” il kernel occorre salvare le directory /boot, /usr/src/linux/include e /lib/modules/x.x.xx

 

GNOME:

 

GNOME è l’acronimo di GNU Network Object Model Environment cioè ambiente di Lavoro basato su oggetti di rete del progetto GNU ed è un’interfaccia grafica per il desktop. GNU è un’acronimo ricorsivo per “GNU’s Not Unix.

Gnome è multipiattaforma, non è legato a nessun gestore di finestre in particolare ma ne può sfruttare diversi a patto che rispettino determinate specifiche (Enlightenment, IceWM, Sawmill sono solo alcuni). Gnome si basa sulle librerie di Gimp, le GTK, su CORBA e sulle imlib; inoltre supporta l’OpenGl per gli effetti 3D. La pronuncia ufficiale di GNOME è “guh-NEW”.

 

AVVIARE GNOME

 

Per avviare Gnome si può inserire la riga “exec gnome-session” alla fine dello script di avvio di X; questo script si può chiamare “.xinitrc”, “.xsession” o “xclient”. Tuttavia la maniera più semplice e più elastica è sfruttare programmi come XDM, GDM o KDM.

Avviando gnome-session si attiveranno il window manager predefinito, il pannello e il Gnome Midnight Commander. Se crashasse il pannello o se ci fosse la necessità di ucciderlo il comando per riavviarlo è “panel” mentre per cancellare le personalizzazioni e ripartire con le impostazioni di default eliminare il file ~/.gnome-session.

 

AGGANCIARE IL MENU’ DI KDE IN QUELLO DI GNOME

 

Tasto dx sul “piede”

Proprietà

Attivare “Menù di KDE in sottomenù”

 

WORKSPACES

 

Per attivare i pulsanti per i workspaces aggiungere nel pannello il Gnome-pager, poi configurarli col Centro di Controllo di Gnome e/o cliccando col destro sul pannello e poi su “proprietà di questo pannello.

 

INDIRIZZI UTILI

 

ACQUISTARE LINUX - DISTRIBUZIONI

 

www.lsl.com

 

www.linuxmall.com