Linux - Introduzione e InstallazioneIl variegato mondo Linux. Obiettivo: |
Storia di un pinguino e altri animali liberiStoria di Unix e Linux. Il modello OpenSource. GPL e licenze aperte. Statistiche sulla diffusione. Kernel, dialetti e distribuzioniIl kernel. I dialetti Unix. Le distribuzioni Linux. Partizionamento di un sistema LinuxLa struttura del filesystem. Fdisk e diskdruid. Policy di partizionamento. Installare LinuxRaccolta informazioni. Scelta dell'hardware. Definizione degli obiettivi. Opzioni di installazione. |
Primi passi su un sistema LinuxLe procedure di login e logout. Obiettivo: |
Login sul sistema, utenti normali e rootProcedure di login e logout. Root e altri utenti. Acceso remoto via telnet. Introduzione alla interfaccia testuale: la shellDefinizione di shell. Panoramica delle shell più diffuse. Introduzione alla bash. Introduzione all'interfaccia grafica: X Window SystemIntroduzione all'uso e alla comprensione delle interfacce grafiche a finestre di Linux Istruzioni e documentazione su LinuxLe risorse online [siti e mailing list , Libri e riviste] - Man, info, /usr/docs Linux SoftwareRisorse e informazione su dove trovare software per Linux |
File e FilesystemLa gestione dei file e delle directory. La gestione dei filesystem. Visualizzare file. Obiettivo: |
Gestire file, directory e linksCapire, muoversi e modificare file e directory: /, .., . , cd, ls, cp, mv, rm, rmdir, mkdir. Uso di link e symlink. Leggere e visualizzare fileComandi per visualizzare e leggere file: cat, less, more, tail, info, strings. Gestione dei file systemI principi e i comandi per gestire un file system: mount, df, du, fsck, mkfs. Attributi e permessiLa gestione di attributi e permessi sui file: chmod, chown, chgrp. Ricerca, confronto e filtriRicerca nel file system: find, locate. Confronto e verifica di file: diff, md5sum. Filtri di output: grep, wc, sed, awk. |
Processi e uso evoluto della shellUtilizzo più evoluto della shell. Regular expressions. Introduzione allo shell scripting. I processi e i job. Obiettivo: |
Ambiente shell e scriptingL'ambiente shell e lo scripting: variabili d'ambiente, cicli, strutture base. I processiDefinizione e gestione dei processi. Segnali e job. Debugging dei processiStrumenti e indicazioni su come eseguire il debugging delle applicazioni: strace, lsof, ldd. |
Il processo di bootIl dettagli sul processo di boot: dal BIOS all'avvio dei servizi. Obiettivo: |
Il processo di bootDescrizione del processo di boot su sistemi Intel: ROM BIOS - LINUX LOADER - KERNEL LOADING - INIT Linux loaders: LILO, GrubInstallazione e configurazione di LILO, GRUB e altri Linux loader Init e runlevelsInit, i runlevel e la gestione dei servizi da avviare al boot. |
Amministrazione del sistemaLe attività comuni di un sistemista: gestione degli utenti, installazione di programmi, schedulazione, backup, gestione e analisi dei log. Obiettivo: |
Gestione degli utentiI file che gestiscono gli utenti: /etc/passwd, /etc/group, /etc/shadow. I comandi per gestire gli utenti: adduser, passwd, userdel. Installare programmi su Unix e LinuxUtilizzo di RPM per installare, aggiornare, rimuovere pacchetti .rpm. Utilizzo di tar.gz Backup e compressione di fileTecniche di backup. L'uso di tar, gunzip, e altri comandi di compressione. Schedulazione dei processiUtilizzo di crontab e at. Configurazione e alternative a crontab. Gestione e analisi dei logAnalisi, monitoring, rotazione e gestione dei log di sistema. Configurazione di syslogd. |
InternetworkingConfigurazione, gestione e controllo del networking. Introduzione al firewalling. Gestione dei servizi Internet. Obiettivo: |
Networking - ConfigurazioneConfigurare i parametri di rete e il DNS: ifconfig, route, resolv.conf Networking - DiagnosiI comandi e le tecniche per diagnosticare la rete: netstat, arp, tcpdump. Networking - Tool comuniI comandi comuni per utilizzare la rete: finger, ftp, nslookup, dig, lynx, wget. Il superdemone Inetd (e Xinetd)Configurazione di inetd e tcp wrappers. Configurazione di xinetd. |
Overview dei principali servizi di rete su linuxRassegna dei software per Linux per gestire i principali servizi di rete: Obiettivo: |
Apache: principi di baseIntroduzione all'installazione, uso e configurazione di Apache Samba: Principi di baseIntroduzione all'installazione, la configurazione e l'uso di Samba. |
Gestione e hardening del sistemaSi presentano i principali strumenti grafici di gestione di un sistema e viene dettagliata una completa procedure di system hardening post-installlazione. Obiettivo: |
Aggiornamento di un sistema LinuxI metodi e le tecniche per l'upgrade manuale e automatico di un sistema Linux Tool grafici per l'amministrazione del sistemaLe alternative grafiche alla command line per la gestione e configurazione di sistemi Linux / Unix. Webmin e altri tool grafici. Esempi di configurazione di IptablesEsempi di configurazioni di un firewall Linux con iptables Linux post-installation check-listOperazioni da compiere su un sistema Linux dopo averlo installato dal CDROM. Security fixes e patches. |
Linux, da alcuni chiamato GNU/Linux, è un sistema operativo dalle caratteristiche uniche:
- si può liberamente utilizzare, senza pagare licenze d'uso,
- si può liberamente adattare alle proprie esigenze e, sapendo come, modificare,
- è realizzato da un numero imprecisato di persone, società, enti distribuiti su tutto il pianeta,
- è un colossale progetto condiviso di sviluppo software.
- funziona bene, sia su server che su computer desktop.
Linux è composto da un kernel, il cui sviluppo è coordinato da Linus Torvalds, da vari tool e programmi del progetto GNU e da altri software rilasciati con licenze Open Source e in vario modo "impacchettati" dai produttori delle varie distribuzioni.
Approfondimenti in: Kernel, dialetti e distribuzioni
La sua storia è legata a quella del software libero ed è popolata da protagonisti i cui nomi, nell'ambiente, sono piuttosto noti.
Per ragguagli consultare: Storia di un pinguino e altri animali liberi
L'installazione di Linux è ormai una pratica semplice grazie al lavoro svolto dalle varie, diverse, distribuzioni, con cui Linux si può presentare.
Procedure e riferimenti in: Installare Linux
Le uniche, minime, complicazioni si possono avere quando si deve installare Linux su un sistema in cui si vuole mantenere Windows.
In questo caso è necessario avere delle partizioni libere su cui operare e il processo di ripartizionamento del sistema può, per i neofiti, comportare preoccupazioni e problemi.
Per approfondimenti: Partizionamento di un sistema Linux
Storia di un pinguino e altri animali liberi |
Storia di Unix e Linux. Il modello OpenSource. GPL e licenze aperte. Statistiche sulla diffusione. |
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-21 19:32:37
La storia di Linux è la storia del più colossale progetto di sviluppo condiviso di software di tutti i tempi.
Sotto la direzione di Linux Torwalds quello che inizialmente doveva essere un programma sviluppato ad uso personale è diventato il più noto risultato di un modello di sviluppo basato sulla disinteressata collaborazione di migliaia di sviluppatori tramite Internet.
E' una storia relativamente breve, perchè in campo informatico tutto accade velocemente e perchè la collaborazione creativa di tante persone, se ben coordinate, ha un potenziale enorme.
Luglio 1991 - Agli occhi della Rete, tutto inizia in un'estate finlandese, Linus Benedict Torvalds, ancora un giovane studente dell'Università di Helsinki, si informa su Usenet:
"Hello netlanders, Due to a project I'm working on (in minix), I'm interested in the posix standard definition. Could somebody please point me to a (preferably) machine-readable format of the latest posix rules? Ftp-sites would be nice." Torvalds giustificherà poi la folle impresa con queste parole: "I couldn't afford some of the commercial OSes and I didn't want to run DOS or Windows -- I don't even know, did Windows really exist then?".
5 Ottobre 1991 - Nello stesso anno viene rilasciata la versione 0.02. Il post su usenet che ne annuncia la presenza è diventato un classico.
Gennaio 1992 - Viene rilasciata la versione 0.12. Risulta relativamente stabile e supporta vario hardware.
Da questa versione in poi la crescita di Linux inizia a diventare progressiva e dirompente, sia come numero di coder che supportano lo sviluppo, sia come utilizzatori."Earlier kernel releases were very much only for hackers: 0.12 actually worked quite well"
Aprile 1992 - Rilasciate la versione 0.95 e 0.96. Il salto è diretto dalla 0.12. Nascono le prime distribuzioni: la MCC Linux e la SLS.
1994 -Viene rilasciata la prima versione definitiva 1.0. Nascono RedHat, Debian, SUSE tutt'ora fra le distribuzioni più diffuse. Linux, che resta Copyrighted by Linux Torvalds, diventa ufficialmente un software aperto, abbracciando in pieno la General Public License (GPL) del movimento Free Software di Stallman.
Grazie all'aumento esponenziale dell'interesse da parte della comunità mondiale nascono i primi LUGs (Linux User Groups), ormai diffusi anche in Italia.
1995 - Compaiono sul mercato nuove distribuzioni commerciali come Caldera Linux. Kernel 1.2 out in Marzo. Dal kernel 1.3 in sviluppo si passerà direttamente al 2.0
1996 - Rilasciata la versione 2.0. Compaiono le prime versioni tradotte in più lingue.
Linux ha bisogno di una mascotte: nasce TUX, il pinguino più famoso del mondo.
1997 - Da qui in poi la storia di Linux diventa sempre più Linus indipendent, che nel 1997 lascia la Finlandia per raggiungere Santa Clara, Silicon Valley, dove lo aspetta, nella misteriosa start-up Transmeta, un ruolo che ai più non è chiaro.
Per anni, prima di annunciare al pubblico di produrre microprocessori a basso consumo e quotarsi al NASDAQ, Transmeta rimane un segreto impenetrabile intorno al quale si accumulano rumours e misteri:
- E' la società dove lavora Linus Torvalds (che continua a sviluppare Linux e non si capisce per cosa venga pagato)
- Fra i soci finanziatori figura Paul Allen (Microsoft co-founder)
- Assume programmatori e tecnici di altissimo livello
- Sfoggia per anni una home page che è un capolavoro di anti-marketing.
1999 - Dopo lunga attesa il kernel 2.2 vede la luce, un passo avanti notevole. Nel pieno del boom della new economy si quotano al Nasdaq con successo società che basano il loro business interamente su Linux come RedHat, Va Linux e Caldera (che, paradossalmente, dopo alcuni anni, movimenti societari e il cambio di nome in Sco Group, diventerà uno dei peggiori nemici del pinguino).
2001 - Agli inizi dell'anno, dopo varie pre-version, su kernel.org appare l'immagine da 19.788.626 byte del 2.4.0 La prima release di un altro stable thread, con un maggiore e più ampio supporto di hardware di livello enterprise.
2002 - Linux è una reale alternativa al mondo Microsoft e Unix, si ritrova milioni di utenti, migliaia di sviluppatori e un mercato in espansione.
E' presente in sistemi integrati, è usato per il controllo di dispositivi robotizzati e ha volato a bordo dello Shuttle, praticamente gira su oggetti elettronici di tutti i tipi, dai palmari alle workstation Alpha, risultando l'OS in assoluto il sistema operativo più soggetto a porting.
Nessuno ormai si sogna di considerarlo un progetto sperimentale che non possa essere usato in applicazioni mission-critical, IBM "lo monta sui suoi server" (e lo pubblicizza pure), Microsoft lo considera il principale nemico da combattere (e non lesina risorse nel farlo), Oracle ci fa girare sopra il suo DB.
2003 - Le guerre si combattono per il petrolio e, più sotterraneamente, per il controllo dei computer. Il 2003 sarà ricordato anche per l'anno di SCO e dei suoi attacchi a Linux e al mondo OpenSource, consequenziali ad una azione legale intrapresa contro IBM.
Le modalità degli attacchi, la loro natura, il modo con cui si cerca creare FUD intorno a Linux (Fear Uncertainty and Doubt) sono sintomo di interessi che vanno oltre la protezione di presunte proprietà intellettuali per parti di codice che vengono nominate ma non mostrate sembrano delinearsi come un banco di prova decisivo per la definitiva affermazione di Linux anche sul lato desktop e per un cambio paradigmatico su come viene valorizzato e diffuso il software.
Tecnologicamente la strada è chiara e le carte sono vincenti: Linux e tutto il software OpenSource sono decisamente all'altezza sia sui sistemi di fascia alta che sui desktop, oltre ad essere presente nel cuore invisibile di innumerevoli device elettronici.
2004 - Sgonfiato, anche se non concluso, il caso SCO, nuove minacce si profilano all'orizzonte di un pinguino che continua a diffondersi e conquistare nuovi territori: in particolare leggi draconiane sui brevetti, che permettono di brevettare indiscriminatamente algoritmi, soluzioni e idee informatiche triviali e ambiamente diffuse, o soluzioni tecniche tali da rendere impossibile o soggetta a una fee arbitraria l'interoperabilità fra sistemi operativi.
Intanto il kernel 2.6 si diffonde e viene usato nelle principali distribuzioni, sempre più user friendly e pronte per il desktop. E' una guerra, più o meno dichiarata, i cui i nemici spesso mostrano una faccia sorridente e colpiscono su campi e livelli che non hanno nulla a che vedere con l'innovazione e l'eccellenza tecnica.
(F)AQ: Come è nato Linux? -
LINK: Linux Kernel History (beginnings) - http://ftp.cdut.edu.cn/pub2/linux/kernel/history/Master.html
SOURCE: "Rivoluzionario per caso" di Linus Torvalds e David Diamond. -
GOOGLE: linux history -
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Luca 'pillolinux' Bove - Ultimo Aggiornamento: 2004-05-21 19:33:35
Uno degli aspetti più confusionari del fenomeno open source é la proliferazione di differenti licenze che regolano la proprietà intellettuale e la distribuzione del software. In questo articolo presenteremo una piccola guida sulla terminologia utilizzata nelle licenze che accompagnano i vari software free. In particolare illustreremo i seguenti termini:
->Software Proprietario
->Shareware
->Freeware
->Free Software
->Public Domain Software
->GNU General Public License (GPL)
->GNU Lesser General Public License (LGPL)
->Open Source
->Community Source
Software Proprietario
E' il modello di licenza più tradizionale per il software commerciale: nessuna persona ha il permesso di esaminare il codice sorgente per il prodotto. L'unica eccezione è un cliente disposto a pagare un cifra, spesso esorbitante, come "tassa" per avere a disposizione il codice sorgente. Ma anche se comprate il codice sorgente per tale prodotto, non potrete pubblicarlo o sarete fuorilegge poiché la licenza per il codice sorgente proprietario non può essere ceduta. E inoltre i vostri diritti di modificare il codice sorgente per meglio adattarlo alle vostre esigenze sono ristretti.
Shareware
Con la licenza Shareware, il modello tradizionale è (leggermente) rovesciato. Vale la filosofia "prima prova, poi paga". Il software è distribuito gratuitamente, e ve lo potete passare l'un l'altro. Gli utenti dei prodotti shareware sono poi legalmente tenuti a pagare un compenso allo sviluppatore per la registrazione; questo compenso alcune volte è libero altre volte è predeterminato. Una variante di questa licenza, chiamata "crippleware" (si potrebbe tradurre software "storpiato"), fa in modo che il software non abbia tutte le funzionalità abilitate sino a quando non viene pagato il compenso per la registrazione. Un'altra tipica variante è la shareware a scadenza: il programma funziona solo per un determinato periodo di tempo, la durata viene estesa solo se viene pagato il compenso.
Il codice sorgente non è tipicamente incluso con i programmi.
Free software
Il free software (software libero) è il software in cui si ha pieno accesso al codice sorgente. Esiste una vera e propria organizzazione politica che ne difende i diritti: il Movimento per il Free Software (http://www.fsf.org). Sotto il modello di licenza "free software" è un vostro sacrosanto diritto usare il software, modificarlo e ridistribuirlo con ogni mezzo a disposizione. Ma è anche possibile far pagare dei soldi per la distribuzione.
Comunque, dietro a questi diritti ci sono dei doveri: tutte le modifiche devono essere accessibili a tutti e nessuno può restringere i diritti di distribuzione libera.
La maggior parte dei sostenitori del free software, crede che l'informazione, e specialmente il codice sorgente, debba essere libera. Nei paesi di lingua inglese la parola "free" racchiude i termini di libero e di gratis, e si usa dire che il free software va inteso come "libero discorso" ("Free Speech") e non come "birra gratis" ("Free Beer"). I seguaci del Free Software difendono la frase principale della copyleft che recita: "coloro che ridistribuiscono il software, con o senza modifiche, devono lasciare intatta la libertà di effettuare ulteriori copie e modifiche" ("anyone who redistributes the software, with or without changes, must pass along the freedom to further copy and change it").
Software di Pubblico Dominio
Il software di pubblico dominio è sia software gratis (freeware) che free software, ma meno restrittivo. Esso può essere usato, modificato o ridistribuito con ogni mezzo. Però voi siete liberi di fare cambiamenti al software e rendere tali modifiche proprietarie. Potete anche scegliere di far pagare il codice o i suoi derivati senza fornire alcun accesso al codice sorgente. In ogni modo, chiunque può fare uso (e abuso) di software di pubblico dominio, senza consultare alcun uomo di legge.
GNU General Public License (GPL)
Dal 1984, lo scopo del progetto GNU è stato di sviluppare un ambiente UNIX completo che comprenda la licenza dei free software.
Sebbene una parte del codice utilizzato nel progetto GNU ricada nell'ambito del pubblico dominio, la grande maggioranza ha licenza GPL. GPL è una specifica implementazione del copyleft, gioco di parole che indica il contrario di copyright:
right=destra left=sinistra ma anche right=diritto left=permesso, quindi copia permessa.
Il software copyleft deve essere libero, deve includere il codice sorgente e deve essere modificabile e ridistribuibile senza limitazioni. La GPL proibisce i brevetti proprietari relativi alla modifica del software, proibisce le royalties e richiede che gli stessi termini di libera distribuzione siano allegati quando si ridistribuisce il software o anche derivazioni di esso. Per questo motivo la licenza è anche conosciuta come "licenza virus". Questa licenza non è ristretta solo ai progetti GNU, chiunque può creare del software e rilasciarlo con questa licenza.
Ad esempio il popolare compilatore GNU e gli strumenti associati hanno licenza GPL. Questo significa che tutti coloro che effettuano dei miglioramenti al compilatore GNU devono poi dare il nuovo codice alla comunità. E' importante comunque notare che questo non significa che il software costruito con il compilatore debba essere free.
Quindi e' legale utilizzare uno strumento free software per produrre software proprietario.
GNU Lesser General Public License (LGPL)
La LGPL è usata come licenza per il free software in modo che quest'ultimo possa essere incorporato sia nel software free sia in quello proprietario. Si puo' dire che sia il fratellastro più debole della GPL.
Le regole sono sostanzialmente le stesse, tranne una: è eliminato l'obbligo che le proprie estensioni al software siano aperte. In questo modo i componenti LGPL rimangono sempre free software, ma possono essere inclusi in un pacchetto software proprietario.
La GPL è stata progettata per scoraggiare la creazione di software proprietario e incoraggiare il free software. Se volete costruire il vostro codice intorno a una libreria o pacchetto GPL, sarete poi costretti a dare il codice sorgente delle vostre modifiche. Questo non è un problema con un pacchetto LGPL, come la libreria GNU C, che può essere legalmente inclusa in un software proprietario.
Questa licenza viene in genere utilizzata per le librerie, che sono sfruttate nella produzione di software.
Ricapitolando il software GPL non può essere incluso in software proprietario, mentre quello LGPL si. In entrambi i casi si possano comunque utilizzare (ma con la GPL non includere) in prodotti proprietari.
Open Source
Questo termine ha creato molta confusione. Sebbene abbiamo iniziato l'articolo con questa parola, non c'é alcuna chiara definizione per "software open source" e nessuna licenza standard. Diverse società usano il termine "open source" in modi completamente diversi. L'idea è simile a quella del free software (si può generalmente usare, modificare e ridistribuire il software), ma c'é poca enfasi sui diritti del software di essere libero. Questo perché le grandi società mostrano grandi riserve quando si tratta di perdere il controllo del loro software. C'é anche una definizione di Open Source che si può trovare a http://www.opensource.org (la traduzione italiana si trova in http://www.apogeonline.com/openpress/op_definition.html ). Nonostante la proliferazione di diverse licenze che rientrano nella cerchia dell'Open Source (una lista completa si può trovare in http://www.opensource.org/licenses ), in genere esse si avvicinano più alla licenza LGPL piuttosto che alla GPL. In altre parole se utilizziamo del software Open Source, lo possiamo in genere includere in codice proprietario.
Riguardo questa classe di licenza c'é stato un ampio dibattito tra i sostenitori del puro Free Software e quelli del più generico Open Source. In questo momento sembra prevalere quest'ultimo.
SOURCE: PILLOLINUX: Piccola guida alle licenze - http://www.freeonline.it/articolo_linux_dtml?id_articolo=32
LINK: Linux Information Sheet - http://ldp.openskills.info/HOWTO/INFO-SHEET.html
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-03-27 22:41:32
Nel 1985 Richard Stallman, ex ricercatore del MIT, fondò la Free Software Foundation (FSF), finanziata prevalentemente da donazioni, alla cui base c'era il progetto GNU, che ambiva alla realizzazione di un sistema operativo free, libero di essere usato, studiato, modificato, distribuito.
Il software free, rilasciato con la GNU General Public Licence (GPL), in questo contesto, implica:
- Ridistribuzione Libera del software e del codice
- Il Codice Sorgente è disponibile per lettura, modifiche, analisi, controllo
- Chiunque può prendere del software libero e modificarlo come vuole, ma deve mantenere per il suo prodotto derivato la licenza GPL
- Il Copyright del software appartiene all'autore. Chi ne fa modifiche deve segnalare la fonte.
- Libero, free, non significa necessariamente gratis. Chiunque può vendere software free o servizi correlati al prezzo che vuole.
Linux è il più famoso progetto GNU, di fatto è composto dal kernel di Torvalds e da molte altre utility e programmi di base, ispirate agli equivalenti Unix.
Spesso associato al concetto di free software è quello di OpenSource le differenze sono apparentemente sottili ma ben precise. L'Open Source è stato definito e si è diffuso in tempi successivi per definire software rilasciato con modelli di licenza che permettono l'accesso e la modifica del codice sorgente.
Si basa su logiche pragmatiche, mentre il Free Software (così come descritto nella GPL) ha radici più etiche e filosofiche, anche se non escludono la commercializzazione e la vendita.
Per l'OSI (Open Source Initiative) si dovrebbe rilasciare il codice del proprio software perchè è una scelta sostenibile e valida, che ne aiuta la diffusione e il miglioramento, per la FSF il codice dovrebbe essere aperto per rispettare la libertà degli autori e degli utenti. Non esiste inoltre una licenza di riferimento dell'OSI, come può essere la GPL per la FSF, ma un elenco di licenze considerate compatibili per essere definite OpenSource.
Fra i fondatori dell'OSI figura Eric Raymond noto fra l'altro per aver scritto il libro/manifesto "The Cathedral and the bazaar" il cui percorso editoriale è emblematico su cosa può essere un modello di business basato sull'open source: il libro è liberamente disponibile, nella sua interezza, in rete e chiunque può leggerlo ma l'autore ha venduto i diritti di pubblicazione su carta alla O'Reilly (che ne vende parecchie copie).
LINK: Definizione di Free software - http://www.gnu.org/philosophy/free-sw.it.html
LINK: Definizione di Open Source - http://opensource.org/docs/osd-italian.html
LINK: Sito Ufficiale della Free Software Foundation - http://www.fsf.org/
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2006-03-24 10:01:21
Non essendoci dati di vendita centralizzati è difficile valutare la diffusione di Linux.
Informazioni e indicazioni utili ma incomplete vengono date da Linux Counter, dove viene fatto un censimento (su base volontaria) sul numero di utenti Linux: nel Marzo 2006 risultano 138056 utenti registrati e 153627 macchine registrate.
Questa stima è ovviamente per difetto (la registrazione viene fatta sul sito stesso e molti che usano Linux nemmeno sanno della sua esistenza).
Il gestore di questo sito (ovviamente un Linux enthusiast) stima intorno a 29 milioni il numero effettivo di utenti Linux, sulla base di statistiche, proiezioni e analisi varie.
Altro indicatore interessante è Netcraft, che, pur senza fare riferimento a singoli OS, da indicazioni utili sui server Web utilizzati in rete. Qui domina Apache (che può girare sia su Unix vari che su Windows) con 51.810.676 siti web pari al 69,01% dei server web totali analizzati.
Ricerche varie fatte in passato sulla diffusione di Linux nel mondo danno risultati diversi:
- IDC ha stimato 1.300.000 server Linux consegnati nel 1999 e ha previsto uno share del 4% su totale dei computer sul desktop nel 2004.
- Dataquest ben più prudenzialmente stima in 543.778 il numero di server Linux consegnati nel 2001.
A titolo di curiosità Google, nel Maggio 2004 conta circa 115.000.000 pagine contenenti la parola Linux (erano nel 50.500.000 Gennaio 2002 e 64.300.000 nel Settembre 2003). Per confronto la parola Windows appare in 121.000.000 pagine (erano 65.900.000 a Settembre 2003).
Sempre nel Maggio 2004 esistevano 629 Linux User Groups (LUG).
Comunque si vogliano considerare questi numeri il dato certo è:
- La crescita nella diffusione di Linux è innegabile;
- Il suo utilizzo in ambiti aziendale, corporate e accademico sempre maggiore;
- La conoscenza delle sue potenzialità è sempre più precisa e consapevole.
SOURCE: Linux Counter - Reports - http://counter.li.org/reports/
(F)AQ: Quanto è diffuso Linux? -
LINK: Statistiche web server usati su Netcraft - http://news.netcraft.com/archives/web_server_survey.html
LINK: Linux Statistics - http://www.linux-stats.org/
Tipo Infobox: ETCETERA - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-09-20 08:47:36
Linux non è l'unico sistema operativo Open source ma è sicuramente il più conosciuto.
Ne esistono molti altri in circolazione tra cui i dialetti *BSD (FreeBSD, OpenBSD, NetBSD) e GNU/Hurd, che costituisce il secondo sistema operativo "ufficiale" della FSF.
Lo stesso kernel di Mac Os X, Darwin, è open source (è basato su FreeBSD e Mach 3.0) ed esistono versioni open di sistemi del passato (ma non troppo) come Open BeOS o OpenVMS.
LINK: DMOZ: Sistemi operativi OpenSource - http://dmoz.org/Computers/Software/Operating_Systems/Open_Source/
Kernel, dialetti e distribuzioni |
Il kernel. I dialetti Unix. Le distribuzioni Linux. |
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-03-23 18:20:13
Linux si presenta in multiformi e numerose distribuzioni, dai nomi a volte curiosi: Debian, Ubuntu, Mandrake, Fedora, Slackware che ormai sono noti e conosciuti da molti per quello che permettono di fare facilmente: installare un sistema Linux completo di software OpenSource in grado di placare la dieta informatica di ogni tipo di utente o sistemista.
Si consideri che il "Linux di Linus Torvalds" non è un sistema operativo completo come comunemente percepito, ma il semplice kernel, il cuore del sistema, che, a basso livello, si occupa della gestione diretta delle risorse hardware (CPU,memoria, dischi, interfacce, schede audio/video...).
Al kernel ogni distribuzione aggiunge tutto il software necessario per avere un sistema completo di programmi applicativi, utility e software lato server per gestire diversi servizi Internet.
Il panorama del software open source comunemente fornito in ogni distro prevede una grande varietà di programmi realizzati da persone, società ed organizzazioni diverse che riescono a interagire grazie a standard e librerie condivise.
Anche per questo molti preferiscono chiamarlo GNU/Linux poiché tutte le utility di base, dal gcc (compilatore di riferimento) alle utility tipiche del mondo Unix fanno parte del progetto GNU, ideato da Richard Stallman.
Le distribuzioni differiscono per:
- Numero e versioni dei programmi installabili;
- Versione del kernel utilizzata e modalità di pre-installazione (il kernel solitamente non viene compilato durante una normale installazione);
- Procedura di installazione (interfaccia utente e possibilità di definire opzioni e scegliere quale software installare);
- Organizzazione di file di configurazione, programmi, log nel file system;
- Configurazioni predefinite del software installato.
PRINCIPALI DISTRIBUZIONI
Red Hat
Red Hat è la più popolare distribuzione Linux e si adatta bene ad usi diversi (desktop, server, laptop) pur avendo una storia di sicurezza non certo esemplare. Pioniera nell'includere un meccanismo di update User Friendly e l'aggiornamento automatico tramite il RedHat Network. Ha introdotto il sistema di gestione di pacchetti software con estensione .RPM che facilita installazione e aggiornamento del software.
Fornisce due linee principali di prodotto:
Fedora, distribuzione completamente libera, aggiornata spesso e sviluppata in collaborazione con la community, con tempi di vita relativamente brevi.
Red Hat Enterprise Edition, versione commerciale, con supporto online per assistenza e aggiornamenti a pagamento, con tempi di vita lunghi e costo, non trascurabile, per singola licenza (in base alla possibilità di collegarsi al RedHat Network).
Debian
Distribuzione completamente sviluppata da una comunità che consta di migliaia di persone in tutto il mondo incarnando appieno lo spirito del Free Software. Fornisce un proprio sistema di pacchettizzazione simile all'RPM (pacchetti .DEB). Viene considerata per puristi ed esperti e risulta generalmente meno user-friendly e più stabile delle altre.
Ha tempi di vita decisamente superiori a quelli di altre distribuzioni free (spesso soggette ad aggiornamenti e cambi di versione frequenti) e per questo ben si presta per sistemi server dove la durata di vita del sistema è prioritaria rispetto alla necessità di software recente.
S.U.S.E.
Distribuzione nata in Germania, solida e ben accessoriata, RPM compatibile e user-friendly. Utilizza un software di gestione e configurazione (YAST) completo e piuttosto semplice, che può facilitare l'uso ad utenti non esperti.
Acquistata nel 2004 da Novell, Suse si propone come il più agguerrito concorrente commerciale di RedHat.
Viene fornita in diverse versioni:
Suse Linux Personal e Professional per il desktop (la versione Personal è liberamente scaricabile)
SuSE Linux Enterprise Server per ambienti enterprise, con costi di licenza superiori e supporto più duraturo.
Mandrake
In crescente diffusione, usa pacchetti simili a RPM (MDK) che sono aggiornati molto rapidamente. E' molto user friendly e probabilmente è una delle più adeguata per sistemi desktop. Prevede anche versioni server esplicitamente rivolte al mercato enterprise.
Slackware
Slackware è una delle prime distribuzioni, a differenza delle altre, è fortemente basata sulla attività di una singola persona, supportata comunque da una fedele comunità. Si distingue dalle altre per non usare package tipo RPM o DEB. E' essenziale nella sua logica e questo può essere gradito ai puristi e gli esperti ma risulta ostica per i principianti.
Gentoo
E' una distro relativamente recente ma a suo modo rivoluzionaria per il mondo Linux. E' fatta per essere compilata direttamente sul PC di installazione in ogni sua parte. Si basa su un sistema simile ai ports BSD basati su semplici file di testo con tutti i riferimenti su un programma/pacchetto in termini di nome, descrizione, caratteristiche, dipendenze e url per scaricare i sorgenti e procedure di compilazione.
E' decisamente per esperti, ma permette tuning e personalizzazioni notevoli.
Linspire
E' una delle distribuzioni più "commerciali", espressamente dedicata ad utenti non esperti che sono abituati a Windows. Incorpora e integra Wine e altri strumenti per rendere il sistema il più possibile simile a Windows, prevede un sistema di abbonamento online (Click'n'Run) tramite il quale si possono facilmente installare nuovi programmi. Non include nemmeno il compilatore gcc. Precedentemente chiamata Lindows ha dovuto cambiare nome in seguito a screzi legali con Microsoft.
ALTRE DISTRIBUZIONI
Il numero delle distribuzioni Linux supera le 300 unità, sviluppate in più di 50 nazioni diverse molte sono sfrozi collaborativi a livello mondiale), gli utilizzi sono svariati: molte sono "general purpose", alcune sono specifiche per il desktop, altre per il firewall, varie sono adatte per systemi embedded o incluse in network appliance di varia natura... Esistono inoltre distribuzioni specializzate per piattaforme non basate su processori Intel: PowerPC, sparc, alpha, motorola 68000, i390 e disribuzioni "Live" che possono essere utilizzate caricandole direttamente da un CDROM, senza installarle su Hard Disk.
Questo apparente caos e frammentazione, in realtà non devono fuorviare: le distribuzioni principali sono poche e da queste derivano gran parte delle altre, i punti in comune, inoltre, sono parecchi (kernel, software GNU, logica Unix, gerarchia del file system...) e un sistemista esperto non ha difficoltà a gestire una o l'altra.
LINK: Distro Watch - Il paradiso delle distribuzioni - http://www.distrowatch.com
LINK: Linux for Scratch - Come costruire il proprio sistema Linux da zero - http://www.linuxfromscratch.org/
LINK: Panoramica sulle distribuzioni disponibili - http://www.linuxhq.com/dist.html
HOWTO: English-language GNU/Linux distributions on CD-ROM - http://ldp.openskills.info/HOWTO/CD-Distributions-EN-HOWTO/index.html
LINK: Linux ISO torrents - http://www.linuxisotorrent.com/
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-03-23 20:06:05
Il kernel è il codice che gestisce le risorse presenti in un computer e le rende disponibili alle applicazioni con cui l'utente comunemente interagisce. In un sistema operativo, inteso in senso esteso, come può esserlo Windows completo di programmi accessori (Explorer, Internet Explorer, notepad e via dicendo), il kernel costituisce solo lo strato più profondo, quello che si occupa del "lavoro sporco" di interagire direttamente con l'hardware.
Il kernel si occupa principalmente di gestire:
- le comunicazioni con le memorie di massa (hard disk, floppy cdrom, dispositivi usb rimuovibili... ),
- i file system, cioè il modo con cui sono organizzate le informazioni sulle memorie di massa (fat, fat32, ntfs, ext3, reiserfs...),
- la memoria RAM, l'accesso dei singoli programmi alla stessa e il paging della memoria su hard disk,
- l'utilizzo della CPU e la condivisione della stessa fra i vari programmi,
- l'interfacciamento e la comunicazione con hardware vario (schede di rete, porte seriali, USB, parallele, schede audio, schede video ecc.
Le versioni del kernel Linux sono identificate con numeri a tre cifre separate da un punto (ed: 2.1.45) con una convenzione ben precisa.
Per esempio il kernel 2.4.15 ha:
2- Il major number, la serie principale. I kernel della serie 1.x sono ormai piuttosto vecchi e poco usati, quelli della serie 0.x sono ancora più vecchi e ormai rarità da collezionista (si fa per dire, dal sito ufficiale del kernel Linux sono ancora scaricabili.
4- Il minor number, il numero di versione principale. Se è pari il kernel viene considerato stable e pronto per sistemi in produzione, se è dispari lo si considera in development e da usare con cautela o per sperimentazione. Le release stable sono sempre figlie delle devel precedenti. Ad esempio il kernel attualmente considerato stabile, il 2.6, deriva dal 2.5 che era la versione in sviluppo mentre la 2.4 era quella considerata stabile. Solitamente nei kernel stable si tende a fare maintenance ed a implementare solo le feature strettamente necessarie, lasciando a quello in development lo sviluppo di nuove funzionalità.
15- E' la revisione (patch) corrente. Questo è un numero progressivo che parte da 0. Da una revisione alla successiva possono passare da pochi giorni a varie settimane.
Esistono inoltre varie patch temporanee, anche non di Torvalds stesso (comuni sono le -ac patch, di Alan Cox) che rappresentano stadi intermedi prima della release di una revisione definitiva.
Ha senso utilizzarle subito solo in caso di utilizzo di kernel con gravi problemi di sicurezza o stabilità (sul proprio sistema) che vengono risolte con le relative patch parziali.
Il kernel in development è attualmente composto da sorgenti realizzati da centinaia di programmatori e assemblati da Linus Torvalds che rilascia personalmente le nuove versioni.
Navigare e leggere il codice sorgente del kernel
Poter avere accesso completo al codice sorgente del proprio sistema operativo può essere per molti totalmente irrilevante ma per alcuni è una fonte inesauribile di studio, approfondimento e supporto allo sviluppo.
Esistono in rete progetti che favoriscono la possibilità di lettura ed analisi dei sorgenti di Linux, fra questi Cross-Referencing Linux.
E' un sito che permette il browsing all'interno del codice del kernel. E' particolarmente affascinante ed utile perchè, tramite una moltitudine di link, permette di correlare funzioni, variabili e strutture risultando piuttosto interessante, anche per il semplice curioso senza particolari cognizioni di programmazione in C.
Le discussioni sul kernel
Gli sviluppatori che affiancano Torvalds sono molti e tipicamente discutono e comunicano in una mailing list dedicata e piuttosto affollata: la linux-kernel mailing-list (è fortemente sconsigliato iscriversi, a meno che si sia direttamente coinvolti nello sviluppo del kernel.
Esistono in rete siti che riassumono le attività in corso sul kernel e le presentano in forme più accessibili a chi non è un kernel hacker:
Kernel Trap è un blog completo e aggiornato sugli sviluppi del kernel.
Kernel Traffic è una mailing list che riassume le principali discussioni su linux-kernel.
Kernel Newbies è un sito indicato per chi il kernel lo deve usare, compilare e imparare. Di fatto è il punto di partenza ideale per un sistemista Linux che vuole approfondire le sue conoscenze sul kernel.
LINK: Kernel Newbies - http://kernelnewbies.org/
LINK: The linux-kernel mailing list FAQ - http://www.tux.org/lkml/
LINK: Kernel traffic - http://www.kernel-traffic.org/
LINK: Cross Referencing Linux - http://lxr.linux.no/
LINK: Kernel Trap - http://kerneltrap.org/
LINK: Kernel.Org - Official Linux Kernel Site - http://www.kernel.org
Tipo Infobox: TIPS - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2006-03-24 12:43:11
Scegliere la distribuzione giusta fra le centinaia disponibili è impresa ardua, come lo è ottenere una risposta precisa da un "esperto di Linux".
Inevitabilmente, da bravo informatico, risponderebbe "dipende".
In genere, la migliore distribuzione da usare è quella che meglio si conosce e se si devono gestire diverse macchine è opportuno averle tutte con la stessa distribuzione e possibilmente versione, per facilità e rapidità di aggiornamente e manutenzione.
Qualunque sia la distro adottata è spesso consigliabile installarne l'ultima versione disponibile (contiene pacchetti e kernel più recenti) lasciando possibilmente passare almeno un mese dalla sua release per permettere il fixing dei bug e dei buchi di sicurezza più evidenti.
Fondamentale è comunque seguirne sul relativo sito le segnalazioni di aggiornamenti ("errata" o "patch"), possibilmente attivando sistemi di autoaggiornamento dei pacchetti.
Considerare che dopo l'installazione di una qualsiasi distribuzione, se si sta lavorando su un server che deve andare in produzione, sono auspicabili, consigliati e necessari una serie di interventi di post installazione:
- Aggiornamento di tutti i pacchetti per i quali esistono degli errata (nuove versioni che aggiornano bug o buchi di quelle rilasciata con il CDROM originale);
- Rimozione di tutti i servizi Internet non utilizzati;
- Eventuale aggiornamento del kernel;
- Configurazione dei servizi di produzione che si intende utilizzare;
- Implemementazione di script o configurazioni custom.
Nella scelta della distribuzione vanno valutati i seguenti aspetti e date risposte alle seguenti domande:
- In che contesto viene utilizzata?
Su un server, su un laptop, un dekstop... A seconda delle funzionalità richieste può essere adeguata una distribuzione piuttosto che un'altra.
Ci sono distribuzioni come Ubuntu, Mepis, Linspire, Xandros che sono particolarmente orientate al desktop e si differenziano per facilità di utilizzo o presenza di programmi per Internet e il multimedia in grado di soddisfare le tipiche esigenze di un poweruser.
Per un firewall esistono distribuzioni dedicate che possono risultare particolarmente comode e semplici da configurare.
Per un server è opportuno cercare distribuzioni con tempi di vita lunghi e in grado di riconoscere e supportare il proprio hardware.
- Che tempo di vita mi aspetto da questa installazione?
Un computer desktop può essere reinstallato in tempi relativamente brevi, quantomeno per rincorrere le nuove versioni di vari programmi comuni, un server può richiedere tempi di vita molto maggiori e questo influenza la scelta.
Un vizio comune a molte distribuzione sono i tempi di release estremamente rapidi, tali da rendere apparentemente obsoleta una versione dopo pochi mesi dal suo rilascio.
Questo vale in modo evidente con Fedora (una release indicativamente ogni 6 mesi, fine del supporto ufficiale di RedHat dopo 2 release) ma anche, in misura minore, per le versioni Personal/Professional di Mandriva, Suse e altre fra le distribuzioni principali.
Questa costante rincorsa è dovuta al tumultuoso e rapido sviluppo di software opensource e al fatto che difficilmente all'interno della stessa versione di una distribuzione viene fatto un "major upgrade" dei programmi forniti (per garantire la piena compatibilità e il funzionamento delle procedure di aggiornamento automatico del software (per bug e vulnerabilità di sicurezza)).
Fra le distribuzioni liberamente accessibili, Debian e in misura minore Slackware si distinguono per tempi di vita decisamente superiori. Debian, in particolare, ha un ramo "stable" particolarmente conservativo che ha tempi di vita molto lunghi a scapito di una certa obsolescenza del software fornito.
Se la necessità è di avere un sistema Linux per poche ore o alcuni giorni (per dimostrazioni, corsi, prove, test, ecc) le Live CD come Knoppix sono particolarmente indicate, in quanto non richiedono nemmeno l'installazione su hard disk.
- Quanto sono disposto a spendere per la licenza del mio Linux?
Le versioni commerciali delle distribuzioni Linux hanno tempi di vita e supporto generalmente maggiori e sono adatte ad ambienti in cui è prioritario avere garanzia di supporto duraturo rispetto ai costi di licenza.
RedHat, Suse/Novell, Mandriva forniscono tutte versioni "enterprise" a pagamento delle proprie distribuzione con tempi di supporto di vari anni e durata di vita del software molto superiori alle versioni liberamente distribuite dagli stessi produttori.
Nella analisi dei costi, ovviamente, vanno anche considerati il training del personale, la consulenza di esterni, i tempi di disservizio eventualmente dovuti a guasti o problemi, ecc.
- La distribuzione che voglio usare supporta l'hardware che ho a disposizione?
Per quanto il supporto hardware su Linux sia piuttosto avanzato esistono casi in cui va opportunamente verificato. In particolare non tutte le distribuzioni sono in grado di riconoscere immediatamente i device di un laptop (winmodem, scheda wireless connettori infrarossi ecc.) e, per sistemi di fascia medio/alta con controller scsi è schede di retei in gigabit è opportuno verificarne il supporto nella hardware compatibility list del produttore della distribuzione.
Tipo Infobox: DISTRO - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-12-19 18:38:44
Esistono distribuzioni che si presentano come un "LIVE CD" che permette l'esecuzione sul proprio computer di un Linux completo, che viene caricato direttamente dal CD-ROM e non ha bisogno di essere installato su Hard Disk.
In questo caso l'hard disk può essere assente o venir utilizzato solo per creare file temporanei, ed eventuali dati dell'utente.
Simili Live CD, che ovviamente richiedono l'impostazione del CDROM come device di boot principale, possono essere utili per operazioni di disaster recovery e, soprattutto, per provare sulla propria macchina un Linux senza di fatto doverlo installare sull'Hard Disk.
Una interessante applicazione di un LiveCD è quella specificatamente dedicata all'utilizzo di una macchina Linux come firewall. In questi casi basta un Live CD, che viene caricato al boot, e un floppy da cui caricare le impostazioni e le configurazioni specifiche: al termine del caricamento si potrà avere un firewall basato su Linux particolarmente sicuro, in quanto non presenta la possibilità di scrivere file da alcuna parte e, fatte salve adeguate regole di packet filtering, risulta praticamente impermeabile a molti tipi di attacco.
Fra queste distribuzione una delle più complete, interessanti ed efficaci è Knoppix che condensa in un singolo CD, 2Gb di software compattato che può essere eseguito e scompattato on-the-fly, dopo un rapido boot (nell'ordine di 2 minuti, dal Bios ad un KDE completo) direttamente da CD, senza scrivere un byte su hard disk e con attime capacità di riconoscimento dell'hardware locale.
Consigliato a chi vuole provare Linux o deve farne dimostrazioni pubbliche.
LINK: DMOZ: Live CD Distributions - http://dmoz.org/Computers/Software/Operating_Systems/Linux/Distributions/Live_CD/
LINK: Live CD Italiana per Firewall / VPN Gateway - http://www.zeroshell.net/
Tipo Infobox: DISTRO - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-10-15 17:17:09
Questa è un sommario elenco dei prezzi delle varie distribuzioni Linux, così come esposti sui siti ufficiali.
Va vista come lista indicativa dell'offerta commerciale su Linux basata sui prezzi di listino online, ovviamente non comprende costi indiretti potenzialmente legati all'uso di Linux (assistenza, formazione, hardware ecc) e si riferisce alle versioni commerciali delle varie distribuzioni, dove generlamente viene fornito supporto e assistenza di livello enterprise.
Dove specificato "ISO Online" si indica che le relative ISO sono scaricabili da Internet (un buon sito è www.linuxiso.org ) e liberamente distribuibili.
Aggiornamento: 15 Ottobre 2004
Prezzi e condizioni possono essere riportati in modo inesatto o incompleto, si rimanda ai siti ufficiali per informazioni dirette.
REDHAT
http://www.redhat.com/apps/commerce/ - RedHat Store
Per i suoi prodotti commerciali RedHat offre diverse "edition" che fondamentalmente si differenziano per il livello di supporto, e diverse versioni per WorkStation o Server.
Esistono poi delle soluzioni per il desktop e per sistemi di managemnt e assistenza.
Red Hat Enterprise Linux WS (WorkStation) - Basic Edition: $179 - Standard Edition: $299
Red Hat Enterprise Linux ES (Enterprise Server) - Basic Edition: $349 - Standard Edition: $799
Red Hat Enterprise Linux AS (Advanced Server) - Standard Edition: $1499 - Premium Edition: $2499
RedHat Desktop - Proxy Starter Pack: $2500 (10 Licenze RedHat Desktop + Red Hat Network Proxy Server (include Red Hat Enterprise Linux AS, Premium Edition)
RedHat Desktop - Extension Pack: $3500 (50 Licenze RedHat Desktop aggiuntive)
SUSE
http://store.suse.com - SUSE Store
SUSE Linux 9.1 Professional: $89.95
SUSE Linux 9.1 Professional Update: $59.95
SUSE Linux 9.1 Personal: $29.95 - ISO Online
SUSE Linux Enterprise Server 9 - 2CPU: $389 - 16 CPU: $939
MANDRAKE
http://store.mandrakesoft.com/ - Mandrake Store
Su Mandrake Store esistono vari bundle che alla distribuzione base aggiungono hardware e gadget di varia natura. Vediamo i costi delle versioni essenziali, su CD o DVD e dell'inscrizione al Mandrake Club, da cui è possibile scaricare tutte le versioni desktop di Mandrake.
Mandrakeclub membership Silver 120,00 € / anno (Accesso alla PowerPack Edition e altri bonus)
Mandrakelinux 10.1 Community DVD: 54,00 € ISO Online
Mandrakelinux 10.0 PowerPack: 79,90 € (8 CD, versione completa di programmi accessori)
Mandrakelinux 10.0 Discovery: 44,90 € (2+1 CD, versione entry level)
MandrakeSecurity Multi-Network Firewall: 499,90 € (Firewall Enterprise)
Corporate Server 2.1 - Standard support: 749,90 € (Enterprise Server, esistono costi aggiuntivi per diversi livelli di supporto)
MandrakeClustering Pentium (1-16 CPU): 1.990,90 € (Versione per cluster enterprise)
LINSPIRE
Linspire fornisce il servizio online Click And Run (CNR) per rendere semplice l'aggiornamento e l'installazione di nuovi programmi. Questo servizio viene erogano tramite un abbonamento che può essere mensile o annuo e permette l'accesso anche ad ulteriori software commerciali per Linux (ai relativi costi).
Linspire 4.5: $59.95
Abbonamento CNR Warehouse: $49.95 / anno - (Servizio online di aggiornamento e gestione software)
SLACKWARE GENTOO DEBIAN e molti altri
Non esistono versioni commerciali di queste distribuzioni, è comunque possibile comprarne i CD dai siti ufficiali o da terzi, pagandone i materiali, il tempo e i costi di distribuzione in puro GPL style, in ogni caso questi contengono esattamente le stesse versioni scaricabili da Internet o reperibili in varie riviste del settore.
Partizionamento di un sistema Linux |
La struttura del filesystem. Fdisk e diskdruid. Policy di partizionamento. |
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-08-14 11:24:17
Tool testuale con la possibilità di operazioni avanzate per il partizionamento e la manipolazione della partition table degli hard disk.
Presenta un'interfaccia a menu con la quale è possibile creare, visualizzare, modificare le partizioni del device specificato.
fdisk [ -l ] [ -v ] [ -s partition] [ device ]
device
Specificando solo il nome di un device (es: /dev/hda ) entra nella modalità menu per modificare la partition table del device
-l
Mostra la partition table degli harddisk del sistema. Per ogni device indica le partizioni, la dimensione in blocchi, il filesystem e i cilindri utilizzati
SOURCE: Man Pages - http://man.openskills.info/fdisk
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2009-02-23 02:17:06
Durante l'installazione di una distribuzione Linux viene richiesto come partizionare gli hard disk, definendo dimensioni e tipo di file system.
Non è necessario avere una partizione già predisposta prima i iniziare, la fase di definizione delle varie partizioni necessarie per Linux viene gestita dal tool di installazione, ma si deve avere dello spazio libero (hard disk libero, spazio non partizionato o una partizione esistente che si puà cancellare (e dividere nelle partizioni che servono a Linux))
Il minimo partizionamento richiesto prevede:
- una partizione generale ("/" , la root directory) in cui vengono copiati tutti i file.
- una partizione di swap (non contiente file e viene usata solo come Virtual Memory, quando si esaurisce la RAM)
E' comunque consigliabile, almeno su un server, utilizzare partizioni indipendenti per diverse directory.
La decisione su come suddividerle e quali dimensioni assegnargli dipende dalle specifiche necessità del sistema.
Considerare che un eccessivo partizionamento aumenta la possibilità di sfruttare male la capacità dell'hard disk e rischiare che alcune partizioni si riempano al 100%.
Queste sono alcune directory che ha senso tenere su partizioni indipendenti da quella dalla root ( / ).
- /boot (partizione di boot, dove risiedono kernel e file di boot. Con BIOS vecchi deve stare nei primi 1023 settori dell'hard disk. 100 Mb di spazio possono bastare)
- /var (partizione in cui vengono messi file che cambiano di dimensione, tipicamente i log. E' utile averla su partizione indipendente per evitare che un aumento dei log inattesi riempa tutto il filesystem. Farla almeno di 100 Mb)
- /home (dove risiedono i file di tutti gli utenti. Può essere piccola e praticamente inutilizzata (mail, dns server) o molto grossa e piena di documenti (web, file server). Dimensionarla a seconda dell'uso della macchina)
- /tmp dove risiedono file temporanei.
In fase di partizionamento, oltre a decidere come partizionare gli hard disk bisogna assegnare ad ogni partizione un mount point.
Per esempio se abbiamo un hard disk da 10 Gb come primary master e lo vogliamo dividere in 6 partizioni, potremo ottenere:
PARTIZIONE MOUNT POINT
/dev/hda1 /
/dev/hda2 /boot
/dev/hda3 /var
/dev/hda4 /home
/dev/hda5 /tmp
/dev/hda6 /SWAP
Notare che la partizione di SWAP non necessita di un mount point.
Per /dev/hda si intende l'hard disk Primary Master IDE. I numeri successivi indicano le partizioni all'interno dell'hard disk.
Gli hard disk IDE hanno i seguenti nomi:
Primary Master: /dev/hda
Primary Slave: /dev/hdb
Secondary Master: /dev/hdc
Secondary Slave: /dev/hdd
Le singole partizioni di un hard disk hanno nomi tipo:
- /dev/hda1 (prima partizione del primary master)
- /dev/hdc4 (quarta partizione del secondary master)
Considerare inoltre che si possono formattare le partizioni con un file system diverso.
Possiamo per esempio avere, nell'esempio sopra indicato, tutte le partizioni in ext3 (uno dei File System più usati su Linux) e la partizione /dev/hda4 ( dove viene montala la /home ) formattata in FAT 32 (File System di Windows 98, supportato anche da Linux).
Su una directory del filesystem Unix è possibile montare anche Network File System come SMB (Reti Windows) o NFS.
HOWTO: Linux Partition HOWTO - http://ldp.openskills.info/HOWTO/Partition/index.html
HOWTO: Linux Swap Space Mini-HOWTO - http://ldp.openskills.info/HOWTO/Swap-Space.html
Tipo Infobox: ETCETERA - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-08-14 20:48:25
Su sistemi Windows lo swapping viene fatto su un file dedicato ("pagefile.sys"), presente nel normale file system mentre su Unix e Linux si dedica una partizione autonoma, che viene formattata indipendentemente.
Anche su Windows FDISK è il nome del più comune strumento per partizionare gli hard disk.
La versione per Windows è diversa e meno flessibile ma prevede le stesse funzioni di base.
LINK: Usare FDISK su Windows - http://support.microsoft.com/support/kb/articles/Q255/8/67.ASP
Tipo Infobox: TIPS - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-12 21:01:20
Esistono vari programmi sia su Linux che su Windows per gestire le partizioni degli hard disk. Alcuni di questi si limitano a preparare le partizioni in modo da poterle formattare con il file system che verrà usato dal proprio sistema operativo, altri, dal compito più delicato ed evoluto, permettono di cambiare le dimensioni di partizioni esistenti (senza danneggiarne i dati), in modo da creare spazio per nuove partizioni.
Durante l'installazione di Linux viene richiesto come partizionare i(l) propri(o) hard disk, in modo da definire cosa formattare e dove installare il sistema operativo, se preservare le eventuali partizioni esistenti (contenenti altri OS) o ripulire completamente gli hard disk.
Va considerato che se non si intende cancellare nulla e se non esistono hard disk o partizioni liberi, l'installazione non può essere eseguita, a meno che non si scelga la strada (non sempre disponibile) di installare Linux su una partizione Windows esistente.
Linux - Gli strumenti più usati per gestire il partizionamento su Linux sono:
- Fdisk - Diffuso tool testuale, simile all'analogo su Windows, che offre opzioni avanzate per il partizionamento.
- Diskdruid - Tool grafico fornito da RedHat, semplice ed intuitivo, è una alternativa funzionale a fdisk se non si ha bisogno di funzionalità avanzate. E' accessibile solamente durante la fase di installazione di RedHat.
- Parted - Oltre alle normali operazione di creazione e visualizzazione della partition table, questo programma permette di modificare le dimensioni di partizioni esistenti, anche formattate con file system non nativi Linux. E' fondamentale per liberare spazio su un hard disk completamente partizionato.
Windows offre una vasta scelta di soluzioni commerciali e alcuni strumenti free:
- Partition Magic - E' il software, commerciale, di gestione di partizioni più conosciuto e probabilmente più evoluto. Permette di ridimensionare, senza cancellare dati, partizioni formattati con tutti i più diffusi file system.
Alternativamente, esistono analoghi prodotti commerciali come: 7tools Partition Manager, Paragon Hard Disk Manager (assai simile). Hanno il vantaggio di funzionare sotto Windows ma la loro versione demo, generalmente, NON permette la modifica delle partizioni.
- Fips - Software free che permette il ridimensionamento di partizioni esistenti. Ha funzionalità essenziali e spesso è fornito con le distribuzioni Linux per creare spazio per una installazione. Basato su DOS.
- Ranish Partition Manager - Alternativa valida a Fips. E' anch'esso OpenSource e basato su DOS, pur avendo un'interfaccia testuale a finestre.
LINK: Linux Partition Mini HOWTO - http://www.tldp.org/HOWTO/mini/Partition/
Installare Linux |
Raccolta informazioni. Scelta dell'hardware. Definizione degli obiettivi. Opzioni di installazione. |
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2006-03-23 12:01:19
L'installazione di Linux è ormai una operazione piuttosto semplice, visto il progresso evidente che molte distribuzioni hanno avuto negli ultimi anni in termini di facilità d'uso.
Nonostante questo esistono alcune informazioni fondamentali che vanno conosciute, in particolare per i casi in cui si intende installare Linux su un computer dove è già installato, e si vuole mantenere, Windows.
Sapere com'è il proprio sistema, come e dove si vuole installare Linux, nel caso sia presente già un altro sistema operativo, è fondamentale, per cui è bene assicurarsi, prima di procedere, di conoscere le informazioni di base riguardo a:
- Hardware a disposizione. Solitamente durante l'installazione il proprio hardware viene rilevato automaticamente, ma possono esserci rari casi in cui questo non accade. In genere se si usa un PC standard con una nuova distribuzione non ci sono problemi nel riconoscimento di componenti e periferiche.
- Sapere quali e quanti Hard Disk sono presenti sul sistema, come sono partizionati, quali sono cancellabili. Queste informazioni sono visualizzabili durante l'installazione, ma si deve essere certi di sapere dove sono i dati (per esempio, una installazione di Windows esistente) che non si vogliono cancellare.
- Configurazione di rete, se prevista (indirizzo IP, subnetmask, nome macchina, server DNS).
- Il tipo di attività che si intende fare con Linux (si userà come workstation o come server? si installa su un portatile? Si ha idea di quale software si vorrà usare?).
Gli scenari possibili sono vari, dipendono dalle singole situazioni e possono riassumersi in questi casi generali:
- Installazione su un computer esclusivamente dedicato a Linux (con o senza dati presenti sull'hard disk, che comunque si intende cancellare). Questo è il caso più semplice e se si ha a che fare con hardware non particolarmente esotico (normale PC, di marca, o assemblato, con processore Pentium o superiore) non dovrebbe creare alcun problema con una distribuzione recente.
- Installazione su un PC dove è già presente Windows e si ha a disposizione un hard disk libero o una partizione completamente libera all'interno dell'hard disk con Windows. Anche in questo caso l'installazione può procedere senza particolari problemi: durante le sue fasi verranno evidenziate le partizioni presenti sull'hard disk e sarà possibile decidere di utilizzare per Linux quelle libere, senza toccare quelle in cui si trova Windows.
- Installazione su un PC dove è presente Windows e non è disponbile un hard disk aggiuntivo, spazio non partizionato o una partizione sacrificabile. Questo purtroppo, oltre ad essere il caso più ostico, per un normale computer domestico, è anche il più comune. In queste situazioni si possono seguire diverse strade:
-- Provare Linux con un Live CD (come Knoppix) che permette di usare Linux senza installarlo sull'harddisk, eseguendo il boot direttamente dal CDROM. Non è una soluzione definitiva (un sismile approccio ha degli inevitabili limiti e minori performance) ma può essere un ottimo modo per iniziare a familiarizzare con Linux senza alcun bisogno di installarlo e in completa sicurezza.
-- Procurarsi un hard disk aggiuntivo (di 1 GB o più) e aggiungerlo al proprio PC (indicativamente come Secondary Master, lasciando Windows sul Primary Master) per poterlo usare liberamente con Linux.
-- Creare dello spazio sull'hard disk esistente: se si hanno partizioni quasi vuote, spostare i dati presenti, in altre partizioni Windows e "sacrificare" la partizione semi-vuota per l'installazione Linux; alternativamente considerare la possibilità di usare strumenti come Fips o Partition Magic per Windows o Parted per Linux (lanciato da un Live CD) per ridurre la dimensione delle partizioni esistenti e creare spazio per Linux.
Fare massima attenzione a simili procedure: se fatte in modo scorretto o interrotte (per esempio da un blackout) possono definitivamente compromettere i dati presenti sul proprio hard disk. Un backup preventivo dei propri file, seppur di solito non necessario, è generalmente consigliato.
-- Installazione su PC con hardware particolare o architetture non basate su processori tipo Intel o AMD (i386).
In questi casi la procedura di installazione può essere più complicata (per la richiesta di driver aggiuntivi per gestire l'accesso al disco) o non riconoscere alcuni dispositivi e schede (per esempio i modem interni).
Se si vuole installare Linux su Mac o sistemi con architettura non Intel-like, sono necessarie distribuzioni particolari e procedure a volte più complesse.
HOWTO: The Linux Installation HOWTO - http://ldp.openskills.info/HOWTO/Installation-HOWTO/index.html
Tipo Infobox: DISTRO - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2006-08-23 00:56:40
Qualunque appassionato di informatica o anche semplice curioso dovrebbe essere interessato a provare Linux e iniziare a vedere direttamente come funziona.
Per i pigri, gli insicuri o coloro che non se la sentono di fare una normale installazione di Linux sul proprio PC, esistono e sono ormai consolidate varie distribuzioni "LIVE" che permettono il caricamento di Linux direttamente dal CDROM, senza la necessità di installare alcunchè sul proprio prezioso e fragile hard disk.
Queste distribuzioni che bootano direttamente un sistema Linux completo dal CDROM possono essere usate in varie occasioni:
- Dimostrazioni dal vivo, in tempi rapidi, senza le potenziali complicazioni di un'installazione su Hard Disk;
- System Recovery, con la possibilità di operare sul sistema locale senza averlo bootato;
- Network monitoring in situazioni straordinarie, con la possibilità di sniffare, diagnosticare, eseguire test;
- Prove e valutazioni rapide e innocue di un sistema Linux sul proprio PC, senza il rischio di far danni.
Citiamo alcune delle distribuzioni LIVE CD più significative, si raccomanda sempre di utilizzare le più recenti e di considerare che l'esecuzione di molteplici applicazioni richiede memoria che va paginata sull'hard disk, se non basta la RAM.
In genere è fondamentale che la distribuzione riconosca la propria scheda di rete o modem, nel momento in cui questo avviene la configurazione del networking diventa semplice (tramite DHCP o configurazione manuale).
Alcune schede sonore o periferiche particolari (winmodem, schede integrate su motherboard ecc.) possono non essere rinosciute.
KNOPPIX - Impressionante, efficace e comoda.
Il tedesco Klaus Knopper ha fatto un gioiello di immagine ISO, basata su Debian. Due Gigabyte di software compresso su un CD di quasi 700 Mb (o molto di più nella versione DVD), un boot rapido ed efficiente nel riconoscimento dell'hardware locale, la possibilità di eseguire moltissimi programmi da un ambiente grafico completo (KDE di default) ne fanno la distribuzione ideale sia per dimostrazioni e valutazioni che per system recovery e network analysys.
In caso di carenza di RAM crea dello SWAP space sull'hard disk e per chi si affeziona puo' essere installato su Hard Disk.
KNOPILS - Il Knoppix italiano
KnopILS (il cui nome vuole ricordare KNOPPIX e ILS) è una KNOPPIX modificata con queste caratteristiche particolari:
- i pacchetti .deb installati appartengono tutti al ramo free di Debian GNU/Linux (o consentono una classificazione equivalente nel caso di pacchetti non ufficiali)
- la schermata di boot è in italiano
- la schermata ``F2`` iniziale è in italiano
- la tastiera predefinita è quella italiana
- la lingua predefinita è l'italiano
- quando possibile, sono presenti pacchetti localizzati
- altre modifiche minori (grafica, bug fixing ecc...)
Morphix - Derivazione modulare di Knoppix
Live cd basato su debian sid e derivato da Knoppix, è possibile vedere più ambienti grafici (Gnome, KDE, XFCE) in base alla iso che si utilizza. Comoda ed aggiornata ha la possibilità di essere customizzata in modo modulare ed installata su Hard Disk in modo estremamamente semplice.
LINUX BOOTABLE BUSINESS CARD Un Linux su una Business Card CD
In poco più di 100 Mb di CD (basta un Mini CD) permette il boot da CD di un sistema Linux grafico con un tool di diagnostica utili e gli strumenti essenziali per un system recovery (fdisk, lilo...).
LINUXCARE BOOTABLE TOOLBOX Essenziale e pratica.
Distribuzione che deriva dalla precedente e ne mantiene le caratteristiche.
Preente un pratico menu di diagnosi e setup del sistema.
DEMO LINUX Una derivazione Live basata su Mandrake e ben fornita.
Gnome, KDE, StarOffice, Gimp, Netscape e molti altro software comune in Linux.
DYNE:BOLIC A network streaming server on CD.
Curioso Live CD, che carica un ambiente grafico basato su Enlightement e presenta i programmi essenziali per l'uso di Internet e una suite di strumenti, basata sul software MUSE e il network PublicVoice per imbastire uno streaming server velocemente e facilmente. Puo' essere usato come un rapido sistema per mettere online una Internet Radio da qualsiasi postazione.
BACK TRACK - Probabilmente il LIVE CD relativo alla sicurezza più completo ed efficace. Comprende moltissimi e non comuni programmi relativi alle diverse facce del variegato mondo della sicurezza. E' basata su Slax, una Live a sua volta basata su Slackware.
LINK: Home Page KNOPPIX Linux - http://www.knoppix.net/
LINK: LINUXCARE BOOTABLE TOOLBOX (Live CD) Home Page - http://lbt.linuxcare.com/
LINK: DYNEBOLIC LIVE CD Home Page - http://dynebolic.org/
LINK: DEMO-LINUX Home Page - http://www.demolinux.org/
LINK: Home Page Distro Morphix - http://www.morphix.org/
LINK: Home Page knopILS - http://knopils.linux.it/
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-09-20 11:13:35
Una scelta importantissima è quella della configurazione hardware, dal numero di interfacce di rete al numero di processori, dalla dimensione dei dischi fissi a quanta ram utilizzare.
Ormai Linux offre una vasta compatibilità con la maggior parte dell'hardware esistente, sia direttamente a livello di kernel ufficiale, sia con driver rilasciati direttamente dai produttori, inoltre, per il vero hacker, avendo a disposizione i sorgenti del kernel, c'è sempre la possibilità ultima di scriversi autonomamente i propri driver.
Segue un breve quadro sulla scelta dell'hardware, si rimanda ai link indicati per informazioni più dettagliate:
CPU
Le distribuzioni standard contengono un Linux predisposto per processori Intel Based a 32 bit. (dal 386 al Pentium 4 Intel, oltre a compatibili quali AMD Athlon, Cyrix, Transmeta ecc.) Se si vuole installare Linux su un Mac, una Sun o un Compaq Alpha si deve trovare una distribuzione per PowerPC, Sparc o Alpha.
La potenza del processore dipende ovviamente dalle applicazioni usate, un Pentium 2 o superiore basta per normali applicazioni server senza eccessivo carico. Esiste il supporto multiprocessore.
RAM
Come sempre, più ce n'è, meglio è. Se si usa Linux senza interfaccia grafica, le esigenze sono modeste: 64Mb bastano per un sistema base, ma sono ovviamente da aumentare per server che devono gestire volumi di traffico medio/alti o ospitare applicativi pesanti.
HARD DISK
La scelta fra un sistema (E)IDE o SCSI dipende essenzialmente dal budget a disposizione. In genere, prima di pensare ad un sistema SCSI è opportuno "carrozzare" la macchina con un buon processore e abbastanza memoria. Il supporto per schede SCSI è ottimo.
CDROM - FLOPPY
Un normale CD-ROM IDE o SCSI basta e avanza (di fatto, per un server, serve solo in fase di installazione). Il floppy può mancare se la motherboard supporta il boot direttamente dal CD (funzione comune in tutte le motherboard non vecchie). E' disponibile il supporto di CD-RW.
SCHEDA VIDEO
Per un server (su cui si avrà soltanto l'interfaccia a caratteri) basta una semplice VGA. Per un desktop con interfaccia visuale il minimo è una SVGA.
E' disponibile l'accelerazione 3D su schede che supportano OpenGL.
SCHEDA RETE
Si consiglia una scheda ethernet 10/100. Esistono driver per alcune schede gigabit, ma è opportuno verificarne l'esistenza per il proprio hardware.
Esiste anche il supporto per Token Ring, schede wireless e WAN cards.
ACCESSORI MULTIMEDIALI
Per un server non sono necessarie schede audio o accessori multimediali. I kernel dalla 2.4 in su, comunque supportano le Sound Blaster Live e Audigy, schede audio meno recenti e le periferiche USB. Esiste anche il supporto Firewire.
MODEM
I modem esterni (analogici o ISDN) su interfaccia seriale (meglio) o USB sono normalmente utilizzabili.
Possibili complicazioni esistono per modem interni (Winmodem), che in genere sono sconsigliabili e tipicamente si trovano su portatili.
LINK: Un sito completo sul Linux Hardware - http://www.linuxhardware.net/
LINK: Linux Hardware Database su ZDNET - http://lhd.zdnet.com/
HOWTO: The Linux 3Dfx HOWTO - http://ldp.openskills.info/HOWTO/3Dfx-HOWTO.html
HOWTO: Framebuffer HOWTO - http://ldp.openskills.info/HOWTO/Framebuffer-HOWTO.html
HOWTO: i810 with XFree86 4.x HOWTO - http://ldp.openskills.info/HOWTO/i810-HOWTO/index.html
HOWTO: Nvidia OpenGL Configuration mini-HOWTO - http://ldp.openskills.info/HOWTO/Nvidia-OpenGL-Configuration/index.html
HOWTO: ATI R200 + XFree86 4.x mini-HOWTO - http://ldp.openskills.info/HOWTO/XFree86-R200/index.html
HOWTO: Brief Introduction to Alpha Systems and Processors - http://ldp.openskills.info/HOWTO/Alpha-HOWTO.html
HOWTO: CPU Design HOW-TO - http://ldp.openskills.info/HOWTO/CPU-Design-HOWTO.html
HOWTO: The Elite's K7s5a mainboard HOWTO - http://ldp.openskills.info/HOWTO/K7s5a-HOWTO.html
HOWTO: Linux/MIPS HOWTO - http://ldp.openskills.info/HOWTO/MIPS-HOWTO.html
HOWTO: SPARC-HOWTO. - http://ldp.openskills.info/HOWTO/SPARC-HOWTO.html
HOWTO: CD-Writing HOWTO - http://ldp.openskills.info/HOWTO/CD-Writing-HOWTO.html
HOWTO: The Linux CD-ROM HOWTO - http://ldp.openskills.info/HOWTO/CDROM-HOWTO/index.html
HOWTO: Linux DVD HOWTO - http://ldp.openskills.info/HOWTO/DVD-HOWTO.html
HOWTO: Linux - Optical Disk HOWTO - http://ldp.openskills.info/HOWTO/Optical-Disk-HOWTO.html
HOWTO: The Linux keyboard and console HOWTO - http://ldp.openskills.info/HOWTO/Keyboard-and-Console-HOWTO.html
HOWTO: Remote Serial Console HOWTO - http://ldp.openskills.info/HOWTO/Remote-Serial-Console-HOWTO/index.html
HOWTO: Linux ATA RAID HOWTO - http://ldp.openskills.info/HOWTO/ATA-RAID-HOWTO/index.html
HOWTO: Linux DPT Hardware RAID mini-HOWTO - http://ldp.openskills.info/HOWTO/DPT-Hardware-RAID.html
HOWTO: Jaz-drive HOWTO - http://ldp.openskills.info/HOWTO/Jaz-Drive-HOWTO.html
HOWTO: The 3 Button Serial Mouse mini-HOWTO - http://ldp.openskills.info/HOWTO/3-Button-Mouse.html
HOWTO: Linux ACP Modem (Mwave) mini-HOWTO - http://ldp.openskills.info/HOWTO/ACP-Modem/index.html
HOWTO: Cable Modem Providers HOWTO - http://ldp.openskills.info/HOWTO/Cable-Modem/index.html
HOWTO: Modem-HOWTO - http://ldp.openskills.info/HOWTO/Modem-HOWTO.html
HOWTO: Linksys Blue Box Router HOWTO - http://ldp.openskills.info/HOWTO/Linksys-Blue-Box-Router-HOWTO/index.html
HOWTO: The Linux 2.4 SCSI subsystem HOWTO - http://ldp.openskills.info/HOWTO/SCSI-2.4-HOWTO/index.html
HOWTO: The Linux SCSI Generic (sg) HOWTO - http://ldp.openskills.info/HOWTO/SCSI-Generic-HOWTO/index.html
HOWTO: The Linux SCSI programming HOWTO - http://ldp.openskills.info/HOWTO/SCSI-Programming-HOWTO.html
HOWTO: The Linux MIDI-HOWTO - http://ldp.openskills.info/HOWTO/MIDI-HOWTO.html
HOWTO: Sound Blaster AWE 32/64 HOWTO - http://ldp.openskills.info/HOWTO/Soundblaster-AWE.html
HOWTO: Ftape-HOWTO - http://ldp.openskills.info/HOWTO/Ftape-HOWTO.html
HOWTO: Linux Touch Screen HOWTO - http://ldp.openskills.info/HOWTO/XFree86-Touch-Screen-HOWTO.html
HOWTO: The UPS Howto - http://ldp.openskills.info/HOWTO/UPS-HOWTO.html
HOWTO: Wireless Howto - http://ldp.openskills.info/HOWTO/Wireless-HOWTO.html
HOWTO: Linux Infrared HOWTO - http://ldp.openskills.info/HOWTO/Infrared-HOWTO/index.html
HOWTO: Linux PCI-HOWTO - http://ldp.openskills.info/HOWTO/PCI-HOWTO.html
HOWTO: Linux PCMCIA HOWTO - http://ldp.openskills.info/HOWTO/PCMCIA-HOWTO.html
HOWTO: Plug-and-Play-HOWTO - http://ldp.openskills.info/HOWTO/Plug-and-Play-HOWTO.html
HOWTO: Smart Card HOWTO - http://ldp.openskills.info/HOWTO/Smart-Card-HOWTO/index.html
HOWTO: VCR-HOWTO - Using your GNU/Linux computer as a VCR - http://ldp.openskills.info/HOWTO/VCR-HOWTO.html
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-12 21:37:27
L'installazione di Linux si può eseguire seguendo metodi differenti: generalmente si usa il CD-ROM (ogni PC almeno dal 1998 in poi permette il boot diretto da CD) oppure via floppy ma sono possibili anche installazioni centralizzate via rete (via http, ftp, nfs, smb) particolarmente utili quando si devono gestire ed installare un gran numero di macchine.
Il primo e fondamentale punto da considerare è lo spazio su hard disk dove installare il sistema operativo.
E' necessario avere a disposizione un hard disk almeno parzialmente libero. Qualora fosse necessario liberare spazio su disco e creare una partizione, si può usare il programma Parted, gratuito per Linux e presente su un Live CD come Knoppix, o programmi per Windows come Partition Magic (commerciale) o Fips (gpl).
Solo quando si è sicuri di avere una partizione o un hard disk disponibile (i dati eventualmente presenti verrebbero cancellati), si può procedere con l'installazione vera e propria.
Sebbene ogni distribuzione utilizzi un proprio tool di setup, le procedure sono generalmente le stesse:
- Viene caricato da CD o floppy di boot un sistema Linux temporaneo, tramite il quale è possibile lanciare il tool di installazione ed eseguire tutte le operazioni previste.
- Viene partizionato lo spazio su disco disponibile secondo i criteri definiti dall'utente;
- Vengono formattate le partizioni create, con il filesystem scelto;
- Si selezionano i programmi da installare, scegliendoli individualmente o selezionando delle impostazioni di default a seconda del tipo di sistema che si sta creando: desktop, server, stazione di sviluppo, laptop ecc. Il sistema provvede automaticamente ad installare le dependencies (pacchetti non selezionati dall'utente ma necessari per poter far funzionare quelli scelti). Se il computer è per un uso personale (desktop) e lo spazio su Hard Disk non manca ( > 2Gb ) ci si può sbizzarrire ad installare un po' di tutto, per verificare la funzionalità di programmi diversi. I programmi scelti vengono copiati sulle partizioni appena formattate.
- Si sceglie se installare l'interfaccia a finestre X window o lasciare soltanto la shell (interfaccia testuale). Se la macchina che si sta installando è destinata a diventare un server si consiglia di rimuovere ogni programma legato a X window ed ogni applicazione ludica/multimediale.
- Si inseriscono parametri relativi alla configurazione di rete, password dell'utente root, eventuali utenti aggiuntivi, servizi da avviare al boot ecc.
- Si installa sul Master Boot Record (MBR) del computer un Linux Loader (LILO o GRUB sono i più comuni) che permette il boot di Linux al riavvio e di eventuali altri sistemi operativi presenti sul sistema.
- Si crea, facoltativamente, un floppy disk di ripristino che permette di caricare il sistema installato in caso di problemi con l'MBR o altri fasi del boot.
Alla fine dell'installazione si esegue un reboot e ci si ritrova, da subito (non sono necessari ulteriori riavvii) un sistema Linux completo, già provvisto di una moltitudine diprogrammi per tutti gli usi.
Il tempo totale di installazione può variare generalmente dai 20 ai 60 minuti.
SOURCE: The Linux Bootdisk HowTo - http://www.linuxdoc.org/HOWTO/Bootdisk-HOWTO/
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-09-20 11:44:54
In ambienti Unix e quindi anche su Linux esistono differenze fra i vari utenti, definite dai permessi e dall'acceso ai file e comandi che un'utente può lanciare.
Per convenzione i semplici utenti possono scrivere, leggere e modificare file solo all'interno del loro ambiente (home) e lanciare comandi che non influiscono sulla configurazione o il corretto funzionamento del sistema.
Per poter accedere completamente alle risorse del sistema bisogna accedere al sistema come superuser ovvero impersonificando l'utente root.
In fase di installazione di una macchina Linux si consiglia di scegliere una password di root piuttosto complicata (ma che si possa ricordare) e di creare immediatamente un normale utente con il quale eseguire le proprie funzioni più comuni.
In particolare si consiglia, per motivi di sicurezza, di non lanciare mai X window (l'interfaccia a finestre disponibile su Linux) come utente root su una macchina che ha accesso a reti esterne.
L'utente root è diverso dagli altri, in quanto ha pieno controllo del sistema.
Può infatti:
- Aggiungere, eliminare, modificare e cambiare la password degli altri utenti
- Installare e configurare tutti i servizi del sistema
- Accedere senza limitazioni (lettura e scrittura) a tutti i file presenti nel filesystem
- Gestire (avviare, terminare, modificare la priorità) tutti i processi
- Gestire l'hardware del computer
- Distruggere tutto con un solo comando (e tante altre brutte cose, il potere di root sul sistema è assoluto).
Inutile sottolineare che è molto importante che l'accesso a root sia limitato solo al proprietario o all'amministratore del sistema.
Tipo Infobox: DISTRO - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-08-19 16:37:21
Molte distribuzioni hanno una propria pagina dedicata all'hardware supportato. Seguire i link per dettagli.
Considerare che il supporto hardware di Linux dipende dal kernel più che dalle singole distribuzioni.
Una distribuzione più recente ha maggiori probabilità di supportare una gamma maggiore di hardware, avendo, presumibilmente, un kernel più recente.
LINK: Red Hat - Linux Hardware Compatibility List - http://www.redhat.com/support/hardware/
LINK: Mandrake - Hardware Database - http://www.linux-mandrake.com/en/hardware.php3
LINK: Caldera - Compatible Hardware - http://www.caldera.com/support/hardware/
LINK: SUSE - Linux Component DataBase - CDB - http://hardwaredb.suse.de/index.php?LANG=en_UK
LINK: Yellow Dog Linux - Power PC hardware support - http://www.yellowdoglinux.com/support/hardware/
LINK: Mandrake - Hardware Database - http://www.linux-mandrake.com/en/hardware.php3
LINK: DMOZ - Categoria Linux Hardware Support - http://dmoz.org/Computers/Software/Operating_Systems/Linux/Hardware_Support/
LINK: Turbolinux - Hardware supported - http://www.turbolinux.com/hcl/
Una volta installato Linux possiamo iniziare ad utilizzarlo, prendendo dimestichezza con le sue componenti fondamentali.
Alcuni aspetti dell'uso di un sistema operativo (SO) possono essere tanto comuni e conosciuti da apparire scontati. Lo sono, come sempre, solo per chi li conosce.
Accesso al sistema e utenti
Su ogni SO moderno è generalmente previsto che l'utente acceda al sistema tramite login e password. Possono inoltre coesistere diversi utenti, alcuni dei quali hanno poteri speciali di amministrazione (Administrator su Windows, root su Linux e Unix).
Su Linux è possibile accedere, via via interfaccia testuale che grafica, anche d un sistema remoto.
L'interfaccia testuale: la shell
Caratteristica alla base di ogni sistema Unix è la shell, un interprete dei comandi dell'utente con interfaccia a caratteri che di fatto, per la sua flessibilità, è alla base dell'intero sistema.
Esistono diversi tipi di shell, con sintassi e funzionamento leggermente diversi, su Linux è particolarmente diffusa la bash.
Avere dimestichezza con la propria shell è indispensabile per un amministratore di sistema.
L'interfaccia grafica: X Window System
Nel mondo Unix l'interfaccia grafica è gestita con X Window, un sistema client server dove il client è la normale applicazione che usa l'utente e il server si preoccupa di gestire l'output su Video. Linux ha 2 alternative principali per X: XFree86 e Xorg.
Esistono poi diversi Windows Manager, che gestiscono il sistema di finestre e menu, e pochi desktop manager (come Gnome, KDE, XFCE) che forniscono un ambiente desktop uniforme.
Documentazione
La migliore fonte di documentazione di un sistema Linux è il sistema stesso, sia da riga di comando che da ambiente grafico è possibile accedere a moltissime informazioni contestuali e complete. Abituarsi ad usarle e conoscere dove trovarle è fondamentale.
Software
Un sistema operativo senza software è come un cnalae televisivo senza programmi. La disponibilità di software per Linux è notevole e, per quanto normalmente gran parte di quello che serve è già disponibille con la proprio distribuzione, è sempre utile sapere dove trovarlo.
Login sul sistema, utenti normali e root |
Procedure di login e logout. Root e altri utenti. Acceso remoto via telnet. |
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-18 22:51:50
Linux, come ogni Unix, è un sistema operativo multiutente, dove differenti utenti possono avere, contemporaneamente, accesso al sistema avendo i propri dati, documenti e impostazioni completamente separati da quelli di altri utenti oltre ad avere la possibilità di accedere alla risorse del sistema simultaneamente ed eseguire i programmi disponibili.
L'accesso ad un sistema Unix può avvenire tramite un'interfaccia grafica a finestre, paragonabile a quella di Windows e basata sull'X Window System, o una interfaccia testuale, a riga di comando, tramite un programma che ha lo scopo di interpetare i comandi digitati dall'utente: la shell
Essendo un sistema operativo orientato alle reti, si può accedere a Linux, come ad altri dialetti Unix, sia direttamente tramite console (la tastiera direttamente collegata al computer) sia da una postazione remota, via rete.
L'accesso al sistema è subordinata all'inserimento, da parte dell'utente, di una login (nome utente) e della relativa password. Questa operazione di autenticazione dell'utente è detta login.
Il login può quindi essere eseguito in ambienti diversi, grafici o testuali da locale o da remoto ma ha sempre lo stesso scopo: permettere all'utnete di accedere ed interagire con il sistema dopo averne verificate le credenziali (login e password).
Il logout è esattamente l'opposto del login: se si è in modalità testuale si chiude la shell aperta con il precedente login, se si è in un ambiente grafico, si esce da questo. In entrambi i casi dopo il logout si ha la possibilità di ripetere una operazione di login, eventualmente con un nome utente diverso.
Per eseguire il login da remoto su un sistema Unix si utilizzano generalmente programmi con telnet (nome di un protocollo e del relativo comando, ampiamente usato, sopratutto in passato) o ssh (una alternativa a telnet con le stesse funzionalità ma la possibilità di criptare i dati in transito e quindi, di questi tempi, preferito al telnet).
LINK: The Login Process - http://ctdp.tripod.com/os/linux/howlinuxworks/linux_hllogin.html
HOWTO: What happens when you log in? - http://ldp.openskills.info/HOWTO/Unix-and-Internet-Fundamentals-HOWTO/login.html
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-18 23:00:57
Eseguire lo spegnimento o il riavvio del proprio Linux da interfaccia grafica è intuitivo quanto su Windows: nel menu delle applicazioni, di solito, in basso a sinistra, esistono le adeguate icone.
Anche con Linux, come con Windows e tutti i sistemi operativi moderni, che fanno largo e costante uso dell'hard disk per scrivere file anche temporanei, è consigliabile evitare di spegnere brutalmente il computer direttamente con l'interruttore ed è meglio seguire la procedure di spegnimento "soft" prevista dal sistema.
I comandi per spegnere il sistema, operando in modalità testuale, sono vari, a volte sono semplici alias:
shutdown -h
(passa al runlevel 0, corrisponde ad un spegnimento del sistema).
halt
poweroff
init 0
Per riavviare il sistema si possono usare i seguenti comandi:
shutdown -r
(passa al runlevel 6, reboot)
reboot
init 6
In molte distribuzioni è attivata la combinazione di tasti CTRL+ALT+CANC, associata al comando "shutdown -t3 -r now
" (o analoghi) che esegue un reboot entro 3 secondi.
Per disabilitare la possibilità di fare un reboot da console (anche senza essere loggati sul sistema!) con i tre famigerati tasti, si deve editare il file /etc/inittab
.
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-06-17 12:52:22
Per usare telnet (da prompt DOS, shell UNIX e qualsiasi altra CLI (Command Line Interface) che presenti questo comando) basta scrivere: telnet seguito dall'indirizzo o dal nome dell'host da raggiungere.
Per esempio: telnet www.whitehouse.gov
Scrivendo semplicemente telnet senza specificare l'host remoto, si entra in modalità comandi, da cui è possibile aprire o chiudere connessioni o effettuare altre operazioni (digitare help per l'elenco dei comandi in ambiente telnet).
Per chiudere una sessione telnet basta digitare logout (sulla macchina remota).
Se per qualche motivo la connessione telnet risulta bloccata, è possibile premere CTRL + ] per entrare in modalità comandi e da li scrivere quit per chiudere la sessione telnet bloccata. Se si hanno più sessioni telnet in successione, scrivere send escape per passare dalla prima aperta all'ultima.
La porta a cui risponde un telnet server è la 23 (TCP) e viene data per sottointesa.
E' comunque possibile effettuare un telnet ad altre porte TCP e digitare direttamente dei comandi validi per il protocollo utilizzato dal server a cui ci si è connessi.
Per esempio, un sistema rapido, disponibile ovunque e piuttosto utile, per diagnosticare velocemente il funzionamento di un server web è scrivere:
telnet www.server.net 80
(o qualsiasi altro comando HTTP)
GET /
Premendo INVIO due volte si visualizza il codice html della pagina richiesta (l'home page, in questo caso) e ci si assicura che il server web sta rispondendo e non ci sono problemi di connettività a raggiungerlo.
LINK: Using and Understranding the Internet: TELNET - http://www.pbs.org/uti/guide/telnet.html
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-06-17 13:15:05
Accedere a Unix in modalità testuale direttamente da console (tramite una tastiera direttamente collegata al computer) o da remoto, via rete, è fondamentalmente la stessa cosa e permette di operare con la shell in modo analogo.
Di fatto è molto più comune accedere a dei server da remoto che tramite console, che a volte viene usato solo per interventi straordinari o guasti, quando la macchina non è interconnessa in rete.
Il metodo più comune, in passato, per accedere ad una macchina Unix era tramite telnet.
Telnet è un semplice programma di terminale oltre ad essere il nome del protocollo che viene utilizzato da questo programma.
Il suo uso primario è quello di aprire connessioni su macchine remote per permettere il login e quindi accedere alla shell come se fosse un'operazione eseguita in locale.
Con telnet i pacchetti contenenti login e password passano in chiaro nella rete, con i relativi rischi in termini di sicurezza informatica (esistono sniffer specifici per sessioni telnet, che evidenziano le password senza nemmeno la fatica di andare ad analizzare i singoli pacchetti telnet).
Un' alternativa valida e ormai molto diffusa per l'accesso ad host remoti via command-line è ssh, con il quale i dati trasferiti vengono criptati.
Il protocollo SSH (ora giunto alla versione 2, sensibilmente più affidabile e sicura della versione 1) su Linux è generalmente implementato con il pacchetto openssh, che ha sia una componente client che una server.
E' possibile usare un sistema remoto operando anche in modalità grafica. Il sistema X Window, alla base dell'interfaccia grafica di Linux, di fatto è basato su una architettura client-server che rende possibile l'esecuzione di un programma su un computer remoto e la sua visualizzazione sul proprio schermo (normalmente server e client X operano sulla stessa macchina).
Esistono inoltre tecnologie che permettono la gestione dell'ambiente grafico fra sistemi operativi diversi:
- rdesktop è un client Linux per accedere ad un Desktop Remoto Windows.
- Vnc è una tecnologia, disponibile su tutti i principali sistemi operativi, per visualizzare l'output di un sistema remoto.
- NX è un sistema di ottimizzazione di X Window che permette l'accesso a sistemi Linux anche da macchine Windows.
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-06-17 13:46:18
Alcuni sysadm particolarmente sensibili a problematiche di sicurezza e controllo ritengono che non si dovrebbe mai amministrare la macchina come utente root, ma utilizzare esclusivamente un utente normale e, quando è necessario, "diventare" root per eseguire funzioni da superuser.
Con il comando su
si può impersonificare (sapendo la password) qualsiasi utente (di default, se non viene specificato "su nomeutente", questo comando si utilizza per diventare root).
Se si è già loggati come root è possibile impersonificare qualsiasi utente senza dover digitare la password.
E' raccomandabile non permettere l'accesso remoto, via telnet, ssh o analoghi, direttamente all'utente root.
Il comando sudo
permette di accordare a semplici utenti la possibilità di eseguire comandi che solo root potrebbe lanciare. Le policy su chi può fare cosa sono definite nel suo file di configurazione /etc/sudoers
.
Quando si usa sudo viene richiesta la password dell'utente stesso (non quella di root), sempre se l'utente è autorizzato ad eseguire il comando richiesto.
Con sudo -s
di fatto viene aperta una shell di root, dalla quale è poi possibile operare con i diritti del superuser.
Su alcuni sistemi, la password di root può essere disattivata e ogni attività da superuser viene fatta tramite sudo.
Introduzione alla interfaccia testuale: la shell |
Definizione di shell. Panoramica delle shell più diffuse. Introduzione alla bash. |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2007-02-23 15:45:37
Molti termini informatici hanno, non a caso, significati che sono direttamente correlati a quelli delle rispettive parole d'uso comune.
Il "kernel" di un sistema operativo è il nucleo, la parte interna, il nocciolo, quello, in termini informatici, che si occupa di lavorare a basso livello e gestire l'hardware e le sue risorse, la "shell", al contrario, è il guscio, la conchiglia, la parte esterna, quella a contatto con il mondo esterno, l'utilizzatore di un computer.
La shell è quindi l'interfaccia (testuale) tramite la quale l'utente può operare ed interagire con il sistema.
La shell, tecnicamente, è un normale programma che interpreta ed esegue i comandi dell'utente (viene chiamata anche Command Interpreter) permettendogli di eseguire altri programmi che accedono alle risorse hardware della macchina tramite le chiamate di sistema offerte dal kernel.
Su un sistema Unix la shell è fondamentale per moltissime attività , che vanno oltre la semplice interattività con l'utente, avendo diverse modalità funzionali:
- USO INTERATTIVO, il sistema attende i comandi digitati dall'utente, che possono redirezionare input ed output, è quello che normalmente si utilizza dopo il login e a cui ci si riferisce quando si parla di usare una shell;
- CONFIGURAZIONE della propria sessione, con cui definire variabili e parametri che vengono utilizzati in ogni interazione dell'utente con la macchina, viene fatto negli script di inizializzazione;
- PROGRAMMAZIONE utilizzando comandi di sistema e funzionalità della shell è possibile realizzare piccoli programmi (script shell) in grado di automatizzare operazioni e reagire ad eventi.
Esistono diverse varietà di shell, hanno sostanzialmente la stessa funzione ma si differenziano per funzionalità e, in parte, sintassi dei loro comandi interni. Fra le shell più diffuse segnaliamo la Bourne Shell (sh
), la Korn Shell (ksh
), la C Shell (csh
) e la Bourne Again Shell (bash
), sviluppata dal progetto GNU, rilasciata con licenza GPL e particolarmente comune su sistemi Linux.
LINK: Shell Dorado - Info utili per shell programmers - http://oase-shareware.org/shell/
LINK: An introduction to Unix Shell - Scritta da Mr. Bourne in persona - http://www.ling.helsinki.fi/users/reriksso/unix/shell.html
LINK: Softpanorama University Shell Course - Shells Webliography - http://www.softpanorama.org/Scripting/shells.shtml
LINK: Elenco di provider che offrono account shell gratuiti - http://www.leftfoot.com/freeshells.html
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 15:36:29
La bash presenta una serie di funzionalità molto pratiche che è fondamentale conoscere ed utilizzare regolarmente, in quanto rendono il suo utilizzo molto più comodo e rapido.
Tutte queste funzionalità di base vanno praticate direttamente più che lette o studiate.
Si invita il lettore quindi ad aprirsi una shell e provare "sul campo" quanto segue.
TAB
Il tasto TAB è fondamentale quando su usa la bash: permette l'autocompletamento di comandi o nomi di file e directory. Abituarsi a premerlo uno o due volte in rapida successione per completare automaticamente un comando che si sta digitando o visualizzare tutti i comandi possibili che iniziano con le lettere inserite prima di "TABbare".
Oltre a velocizzare l'inserimento di comandi permette di essere certi della loro sintassi o della correttezza di nomi di file e directory inseriti.
FRECCIA SU - FRECCIA GIU
Altri tasti da usare spesso. Premendoli è possibile spostarsi nella history dei comandi digitati precedentemente nella shell. E' comodissimo in molte occasione e permette di risparmiare tempo e di fare velocemente "prove e riprove" di comandi dati.
FRECCIA DESTRA - FRECCIA SINISTRA
Permettono di muoversi all'interno della riga di comando corrente per modificarla o inserire del testo. Utili, per esempio, quando si deve cambiare leggeremente una riga di comando inserita precedentemente (e richiamata con FRECCIA SU).
SHIFT + FRECCIA SU - SHIFT + FRECCIA GIU
Permette di visualizzare l'output della shell che ormai non è più visibile nella schermata corrente. In pratica si scrolla verticalmente, di una riga alla volta, il testo visualizzato nella sessione corrente.
SHIFT + PAGINA SU - SHIFT + PAGINA GIU
Ottiene lo stesso effetto più rapidamente, eseguendo lo scroll di intere pagine alla volta invece che di singole righe.
Tipo Infobox: ETCETERA - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-08-21 22:42:09
La shell è presente in ogni Unix, ma anche su Windows si può ricostruire il propro mondo shell.
Il vecchio DOS e il più recente prompt dei comandi Windows, seppur simili come aspetto (command line interpreter testuale) e in parte come funzionalità non danno un'idea completa di cosa è possibile fare con una shell evoluta o quantomeno Bourne-like.
E' possibile sentirne l'ebbrezza con l'ottimo CYGWIN, che è molto di più di una shell, è un vero e proprio ambiente Unix, con tanto di compilatore, disponibile sotto Windows.
Può essere molto comodo per utilizzare comandi comuni e pratici tipici di un sistema Unix direttamente da una finestra Windows.
LINK: Home Page CYGWIN - http://sources.redhat.com/cygwin/
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-12 22:07:26
In linea con la natura multiforme e variegata di Unix, esistono molteplici shell, ognuna delle quali presenta caratteristiche e peculiarità proprie.
sh - Bourne shell, è disponibile su qualsiasi ambiente UNIX, quindi è la più utilizzata per creare script shell compatibili e cross-platform.
csh - C shell, prende il nome dal linguaggio di programmazione, ovviamente le funzionalità di tale shell derivano in modo diretto dal C.
bash - Bourne Again Shell. Una delle ultime nate, offre le stesse capacità della C shell, con l'aggiunta di alcune funzionalità come l'history dei comandi e la TABcompletion. E' una componente del progetto GNU come, come molti altri programmi, vengono ormai usati su altri Unix, anche commerciali.
ksh - Korn shell. Largamente diffusa è compatibile con la sh sulla parte di scripting ed ha tutte le funzionalità di interazione della csh.
tcsh - E' un'evoluzione della csh, con cui mantiene piena compatibilità e introduce feature come command line editing e name completion.
rsh - Restricted Bourne shell (da non confondere con l'omonimo comando). Una shelle con funzionlità minime ed essenziali.
jsh - Bourne Shell con Job control.
dtksh - Desktop Korn Shell.
rksh - Restricted Korn Shell.
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 15:35:52
Bash acronimo di Bourne Again Shell, è la shell di gran lunga più utilizzata in ambiente Linux. E' un componente chiave del progetto GNU e rimane disponibile su ogni Unix.
Alcune sue caratteristiche (presenti anche in altre shell):
- Possibilità di editare la command line
- TAB completion dei comandi
- Possibilità di definire alias
- History infinita dei comandi inseriti
- Funzionalità di scripting, funzioni condizionali e di ciclo.
- Possibilità di definire funzioni
- Possibilità di gestire array indicizzati di dimensioni infinite
- Gestione e controllo dei job
- Espressioni aritmetiche
- Caratteri jolly (metacaratteri) nella gestione dei nomi di file
L'uso e la pratica della bash sono l'unico vero modo per conoscerla e approfondirne le molteplici caratteristiche.
Sui sistemi Linux viene lanciata automaticamente dopo il login, alternativamente basta scrivere bash (trovandosi in un'altra shell) per eseguirla.
LINK: Bash Reference Manual - http://www.gnu.org/manual/bash/html_chapter/bashref_toc.html
LINK: Come modificare il Prompt della propria BASH - http://www.linux.org/docs/ldp/howto/Bash-Prompt-HOWTO/index.html
SOURCE: Bash Official Home Page - http://www.gnu.org/software/bash/bash.html
Tipo Infobox: BOFH - Skill Level: 3- INTERMEDIATE - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2003-11-27 17:36:03
Funzionalità della bash che permette di ri-eseguire un comando precedentemente lanciato e presente nella history.
E' possibile specificare un numero, per indicare una entry nella history, o una stringa, che permette di eseguire l'ultimo comando dato che inizia con la stringa indicata.
Tecnicamente definito event designator !
, si occupa di recuperare una entry nella history di Bash in base alla stringa o al numero passati come "parametro":
root@Joker:/home/homer/python# ls -l hello*
-rw-r--r-- 1 homer users 48 Jun 9 14:30 hello.py
-rw-r--r-- 1 homer users 70 Jun 9 15:33 hello2.py
root@Joker:/home/homer/python# history
1 ls -l hello*
2 history
root@Joker:/home/homer/python# !1
ls -l hello*
-rw-r--r-- 1 homer users 48 Jun 9 14:30 hello.py
-rw-r--r-- 1 homer users 70 Jun 9 15:33 hello2.py
Viene indicato il numero 1 (UNO) e si esegue la entry numero Uno nella history
root@Joker:/home/homer/python# !l
ls -l hello*
-rw-r--r-- 1 homer users 48 Jun 9 14:30 hello.py
-rw-r--r-- 1 homer users 70 Jun 9 15:33 hello2.py
Viene indicata la lettera l (ELLE) e si esegue l'ultimo comando presente nella history che inizia con Elle
Tutto questo è piuttosto utile per recuperare comandi complessi inseriti in precedenza, evitando di riscriverli completamente.
Introduzione all'interfaccia grafica: X Window System |
Introduzione all'uso e alla comprensione delle interfacce grafiche a finestre di Linux |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-06-15 21:58:46
E' possibile operare su un sistema Linux in due modi: tramite una shell, con interfaccia testuale a caratteri, particolarmente comoda su server, o tramite un più accessibile ambiente grafico, con un mondo di finestre e icone gestite via mouse.
Il sistema grafico di Linux viene comunemente chiamato X (X Window System) che nel tempo è diventato lo standard GUI (graphic user interface) di Unix e Linux.
A differenza di Microsoft Windows in cui l'interfaccia a finestre è parte integrante del kernel, in Unix è un normale processo e viene trattato come tale, con i vantaggi (maggiore stabilità del sistema nel momento in cui si dovesse bloccare) e gli svantaggi (prestazioni penalizzate) del caso.
L'ambiente grafico X è composto essenzialmente da questi componenti:
Server X
E' il processo che si occupa di gestire il display, ovvero si occupa di far interagire l'utente con la GUI. Esistono molteplici server X, ma su Linux sono diffusi Xorg e XFree86.
Alternative commerciali sono Accelerated-X e Metro-X.
Windows manager
Sono i software che si occupano di gestire le finestre e l'interazione con l'utente, ne esistono numerosi e possono essere alla base di sistemi desktop più complessi e completi. Fra i nomi più noti KDE (è un sistema Dekstop con un proprio Window Manager), Enlightenment, Sawfish, AfterStep, FVWM, Blackbox, Fluxbox, Metacity..
Desktop Manager
Insieme di programmi, che offrono una interfaccia unificata, coerente ed integrata. I Desktop Manager più conosciuti e utilizzati sono Gnome e KDE, dotati di tutto il software necessario per un ambiente desktop moderno, con XFCE terzo incomodo, sicuramente più "leggero".
Client X
Sono tutti i programmi eseguiti sotto X, con cui l'utente interagisce (ad esempio un browser, un word processor ecc.).
Il fatto di avere un'architettura client-server permette di utilizzare facilmente un server X locale (che mostra l'ambiente grafico sul nostro schermo) con un client in esecuzione su una macchina remota (potrebbe essere un server di applicazioni, particolarmente dotato in termini di hardware, dove di fatto vengono eseguiti i programmi che si usano).
Un'applicazione possimile di questa struttura prevede dei terminali con poche risorse hardware (thin client), a volte senza harddisk e giusto una scheda video e di rete, che caricano il sistema operativo via network, ospitano localmente un server X ed eseguono programmi (client X) su un server centrale.
Comunemente, quando si utilizza Linux sul proprio computer, il server e i client coesistono e vengono eseguiti sulla stessa macchina, ma prima di poter lanciare i client (i programmi, in ambiente grafico, che l'utente normalmente esegue), bisogna avere il server X funzionante.
HOWTO: X Window System Architecture Overview HOWTO - http://ldp.openskills.info/HOWTO/XWindow-Overview-HOWTO/index.html
HOWTO: Remote X Apps mini-HOWTO - http://openskills.info/LDP/HOWTO/Remote-X-Apps.html
HOWTO: XFree Local Multi-User HOWTO - http://openskills.info/LDP/HOWTO/XFree-Local-multi-user-HOWTO/index.html
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Massimo 'maxgrante' Caselli - Ultimo Aggiornamento: 2005-06-15 21:49:17
L'interfaccia grafica su Linux può basarsi su diversi ambienti desktop (Desktop Environment o Desktop Manager), che mirano alla definizione di un interfaccia a finestre omogenea, coerente, semplice da usare ed integrata: Gnome e KDE sono i più conosciuti e generalmente usati nelle distribuzioni Linux, ma esistono alternative come XFCE e il vecchio CDE.
Gnome e KDE hanno le caratteristiche tipiche di un ambiente desktop evoluto: un file manager integrato e coerente, un layer di librerie tramite il quale è possible realizzare programmi con un look&feel comune, degli ambienti di sviluppo IDE che semplificano lo sviluppo di applicazioni native, canali omogenei di comunicazione fra programmi ecc.
Kde (K Desktop Environment)
Comprende, oltre ad un Windows Manager autonomo, un'intero ambiente desktop molto user friendly. Fornisce vari sistemi integrati per la gestione e configurazione del sistema oltre a vari programmi come una suite office completa (KOffice) e un IDE - Ambiente di sviluppo integrato (Kdevelop).
Si basa sulle librerie Qt ed utilizza un proprio metodo di comunicazione fra processi: DCOP.
Gnome (GNU Network Object Model Environment)
E' scritto e sviluppato dal Gnome Developer's project e fa parte del progetto GNU. A differenza di KDE Gnome è solo l'ambiente desktop per cui ha bisogno di un windows manager come FVWM (Fantastic Virtual Windows Manager). Anche Gnome offre dei propri sistemi integrati per la gestione della macchina. La sua architettura è completamente basata su CORBA.
Si basa sulle librerie GTK ed utilizza Corba per la comunicazione fra processi con l'implementazione OBRit.
Molte distribuzioni Linux prevedono la possibilità di installare ed utilizzare sia Gnome che KDE, è poi possibile modificarli e aggiornarli secondo le proprie necessità.
E' possibile lanciare programmi per KDE sotto Gnome e viceversa (sono tutti client X), l'interoperabilità reciproca migliora ma resta l'onere di caricare in memoria le librerie di base di entrambi e quindi appesantire sistemi non ben dimensionati.
XFCE
E' un ambiente desktop che sta crescendo molto perchè mantiene la caratteristica di essere leggero, e quindi permettere un agevole uso anche su hardware non potente.
LINK: Gnome Home Page - http://www.gnome.org/
LINK: KDE Home Page - http://www.kde.org/
LINK: Da DMOZ: Tutti i siti su KDE - http://dmoz.org/Computers/Software/Operating_Systems/Graphic_Subsystems/Desktop_Environments/KDE/
LINK: Da DMOZ: Tutti i siti su GNOME - http://dmoz.org/Computers/Software/Operating_Systems/Graphic_Subsystems/Desktop_Environments/GNOME/
Tipo Infobox: ETCETERA - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-18 23:20:54
Rdesktop è un RDP client per Unix: in pratica l'anello mancante per accedere a sistemi Windows remoti dal proprio Linux tramite la funzionalità di accesso remoto e condivisione desktop chiamata Terminal Services su Windows 2000 Server e Remote Desktop su WindowsXP.
Di fatto con una comoda riga di comando rdesktop permette di aprire una sessione su un Windows 2000 Server remoto o un WindowsXP e visualizzarne il contenuto in una finestra all'interno del proprio ambiente X Window.
Terminal Services funziona molto meglio di VNC (ha protocollo più ottimizzato che supporta meglio limiti di banda) e il client per Unix / Linux permette quello che promette: la gestione e l'uso di server Windows remoti dalla propria postazione Linux.
La sintassi è semplice e si rimanda alla documentazione ufficiale per maggiori informazioni.
Per esempio:
rdesktop -P 98% -k it -u al 10.0.0.100 &
apre una sessione sul server Windows 10.0.0.100, con nome utente al, con dimensioni della finestra al 98% del proprio schermo e usando il layout di tastiera italiana.
Dalla versione 1.3, minima raccomandata, è migliorata la compatibilità con tastiere internazionali (tra cui l'italiana) e la possibilità di fare un copia e incolla dalla macchina locale Linxu alla finestra del Windows remoto.
Download e installazione sono semplicissimi:
make
Nella directory scompattata, per compilare (senza particolari configurazioni).
./rdesktop nomeserver
Per collegarsi al server remoto.
./rdesktop ?
Per un elenco delle opzioni disponibili.
LINK: Sito ufficale rdesktop - http://www.rdesktop.org/
LINK: Grdesktop: Una GUI per rdesktop - http://www.nongnu.org/grdesktop/
LINK: Tsclient: GUI per rdesktop e altri tool - http://www.gnomepro.com/tsclient/
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-06-17 18:29:52
XWindow è un sistema client server in cui il server si occupa della visualizzazione del display e il client è il singolo programma eseguito.
Normalmente client e server coesistono sulla stessa macchina e all'utente questa natura non appare in tutte le sue potenzialità.
E' possibile infatti eseguire programmi su macchine remote e visualizzarli sulla propria macchina.
Per farlo, in modo rapido, si possono seguire 2 vie:
Sistema normale
Consideriamo un sistema in cui la nostra macchina ha IP 10.0.0.90 e vogliamo visualizzare sul nostro schermo comandi sulla macchina 10.0.0.20.
Per farlo sulla macchina locale va impostato (con non pochi potenziali problemi di sicurezza), solitamente come root, su alcuni sistemi anche come utente normale:
xhost +
Apre a tutti gli IP la possibilità di collegarsi all'X server locale o
xhost + inet:10.0.0.90
Limita l'accesso solo all'IP 10.0.0.90
Mentre sulla macchina remota, basta collegarsi in telnet e impostare come Xserver il proprio IP:
export DISPLAY=10.0.0.20:0
A questo punto qualsiasi programma che richiede l'ambiente grafico lanciato dalla shell aperta in remoto viene visualizzato sullo schermo del PC locale.
Sistema criptato tramite SSH
Se è abilitata l'opzione X11forwarding sia sul client che sul server SSH, si possono lanciare programmi remoti e visualizzarli sul Xserver locale in modo molto più semplice e sicuro.
Per farlo basta collegarsi via SSH con l'opzione -X. Per esempio:
ssh -X 10.0.0.20
A questo punto qualsiasi programma grafico lanciato sulla macchina remota viene visualizzato automaticamente sul proprio schermo, senza bisogno di ulteriori configurazioni.
Se c'e' un firewall fra client X remoto e server X locale, ricordarsi di aprire la porta 6000 TCP, utilizzata dall'X Window System
HOWTO: Remote X Apps mini-HOWTO - http://ldp.openskills.info/HOWTO/Remote-X-Apps.html
Istruzioni e documentazione su Linux |
Le risorse online [siti e mailing list , Libri e riviste] - Man, info, /usr/docs |
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-06-17 18:42:15
Il primo posto dove cercare documentazione su Linux è Linux stesso.
Tutte le distribuzioni danno la possibilità di installare manuali e documentazione di vario genere.
Nella maggior parte dei casi sono più che sufficienti per conoscere gran parte degli argomenti da sapere.
Ambiente Testuale
Di seguito vengono riportati alcuni comandi per richiamare manuali ed info di vario genere presenti in locale, sul sistema installato, da interfaccia testuale.
man
- E' la fonte più rapida e semplice per apprendere delle informazioni riguardanti comandi, file di configurazioni, funzioni di sistema e altro. Esempio: man ps
info
- Info è un lettore di ipertesti gnu. Molti programmi hanno la loro documentazione anche in questo formato. Esempio: info grub
whatis
- Cerca la keyword specificata all'interno del database whatis (contiene una breve descrizione di tutti i comandi nel sistema). Equivalente a man -f
apropos
- Come whatis, ma cerca stringhe e non parole complete, di conseguenza può dare risultati più verbosi. Equivalente a man -k
/usr/share/doc /usr/doc
- Le directory dove risiedono generalmente le documentazioni per programmi specifici in diversi formati (txt,html,pdf etc..).
Moltissimi programmi e comandi, inoltre, permettono di visualizzare alcune righe di HELP passando una specifica opzione. Generalmente si utilizzano queste opzioni: comando --help
; comando ?
; comando -h
Ambiente Grafico
L'help in linea nell'interfaccia a finestre e generalmente ben visibile fra le icone sul desktop o le voci dei menu nelle toolbar.
Il nome del collegamento può cambiare a seconda della distribuzione o dell'ambiente desktop, spesso, oltre alla documentazione ufficiale di Gnome o KDE, sono disponibili manuali e documentazione aggiuntiva.
In genere basta cercare un icona chiamata Help (spesso a forma di salvagente) e accedere da interfaccia grafica a tutta la documentazione sul sistema.
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 15:40:52
La rete pullula di siti di informazione, gruppi di discussione, mailing list, , forum, chat rooms sul mondo Linux.
E' nella natura stessa di questo sistema operativo lo scambio di informazioni e conoscenze.
Per chi sa sfruttarle valgono quanto il supporto tecnico (a pagamento) di un normale vendor.
Viene qui presentata una breve rassegna di alcuni siti significativi di documentazione su Linux.
Linux Documentation Project (LDP) - E' la collezione più vasta di documentazione su Linux.
Comprende FAQ, HOWTO, MiniHOWTO e i docs sui singoli programmi.
Linux Org - Un buon sito di partenza per reperire tutte le informazioni riguardanti a Linux
linux.html.it - Sezione Linux di HTML.it Docs e istruzioni in italiano.
comp.os.linux.* - E newsgroups linux.* Ottimo punto di partenza, oltre a vari web forum, per ottenere supporto interagire direttamente con altri utenti.
www.google.com - groups.google.com - Google - Sempre lui, probabilmente il migliore motore di ricerca in rete, oltretutto basato su cluster di migliaia di server Linux.
Se si incontra un problema o un errore di qualche tipo, provare a digitarlo così come è scritto: probabilmente si vedranno link a forum online, siti e luoghi dove il problema è stato già incontrato, discusso e risolto.
LINK: Linux Documentation Project - http://www.tldp.org
LINK: Linux.org - http://www.linux.org
LINK: Linux su HTML.it - http://linux.html.it
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2006-07-05 15:54:14
Libri su Linux o argomenti attinenti sono ormai moltissimi, sia in italiano che in inglese.
Si trovano libri generali (con tanto di distribuzione su CDROM allegata) di diverso livello di difficoltà e libri su specifici argomenti, a volte molto dettagliati.
Anche il numero di riviste su Linux, in italiano o inglese, è ragguardevole.
Spesso queste riviste contengono CDROM con le distribuzioni più recenti e sono un'ottimo sistema per testare ed installare nuove distribuzioni senza doverle scaricare dalla rete.
http://www.linuxjournal.com/ - Linux Journal - La prima e la più autorevole rivista su Linux. Disponibile anche in rete.
http://www.oltrelinux.com/ - Linux & C. - La prima rivista in italiano su Linux. Indipendente e ben fatta.
http://www.linuxfocus.org/Italiano/ - La versione italiana di LinuxFocus Magazine
http://www.linux-magazine.it/ - Sito ufficiale di Linux Magazine
http://www.linuxitaly.net/ - La versione italiana di Linux Journal, particolarmente rivolta al mondo business.
http://linux.cassino.edu/lgei/ - La versione italiana di Linux Gazette
http://www.linuxpro.it/ - Linux Pro Rivista su Linux e OpenSource di Future Media.
http://www.linuxpratico.com/ - Linux Pratico Rivista a fascicoli.
Tipo Infobox: TIPS - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-18 23:09:21
Se non ci si accontenta di libri, siti e riviste e si vuole il contatto umano per approfondire la propria conoscenza su Linux, il LUG (Linux User Group) locale può essere l'ideale.
Un LUG è una associazione di persone che hanno Linux come hobby e interesse comune.
Nei LUG si organizzano incontri, corsi, party, install fest ecc, oltre a promuovere la diffusione e l'alfabetizzazione di Linux.
In Italia esistono parecchi LUG locali e la Italian Linux Society (ILS) che, fra le altre attività, ogni anno organizzano un Linux Day in cui si propone e presenta Linux a chi ancora non lo conosce.
LINK: Elenco LUG italiani - http://www.linux.it/LUG/
LINK: Elenco LUG nel mondo - http://www.linux.org/groups/
LINK: Italian Linux Society - http://www.linux.it
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-06-07 17:05:21
La quantità di siti in lingua italiana che trattano di OpenSource e Linux è notevole.
Viene qui presentata una rassegna di quelli più significativi.
Alcuni sono siti di news e commenti, spesso basati sulla piattaforma PHP Nuke, altri sono informativi e divulgativi, altri presentano innumerevoli risorse e informazioni tecniche interessanti.
In tutti non mancano passione e intraprendenza da parte degli autori.
ZIO BUDDHA - www.ziobudda.net - Italian Linux Portal
Uno dei primi e più conosciuti portali italiani su Linux: articoli, news, docs e info.
LINUX.HTML.IT - linux.html.it - Risorse per gli utenti Linux
Una sezione completa di docs, info, software e articoli di HTML.it
LINUX.KUHT.IT - linux.kuht.it - Portale a tutto campo su Linux
Articoli, news, documentazione, link, risorse su Linux. Ottimo.
LINUX VALLEY - www.linuxvalley.it - Portale su Linux
Informazioni, notizie, risorse, documentazioni e prodotti del mondo Linux.
WUP - www.wup.it - L'alternativa italiana a Slashdot
Fra i siti ispirati a Slashdot, WUP è uno dei primi, più completi e più seguiti: Informazioni e news sul mondo informatico che cambia.
FEELING LINUX - www.feelinglinux.com - Documentazione e approfondimenti.
Interessanti articoli sulla amministrazione e la programmazione Linux. Man Pages online.
PLUTO - www.pluto.linux.it - Il Pluto è un gruppo di persone che, unito dalla passione per il software libero, realizza progetti per favorirne lo sviluppo sul territorio italiano.
DIFF - www.diff.org - Il Vortal dei Sistemi Operativi Alternativi
Articoli, news e link su sistemi operativi e tecnologie informatiche alternative.
SPLATT - www.splatt.it - Articoli e notizie sul mondo PHP Nuke.
Un buon punto di riferimento sull'universo Nuke e sul software Splatt Forum.
FREEX.CH - www.freex.ch - News su Opensource e dintorni.
Sito Nuke con notizie, informazioni e articoli sull'opensource e il mondo IT.
ITALINUX - www.italinux.net - News su Linux.
Sito Nuke on informazioni e notizie su Linux.
LINUX TOOLS - www.linux.it/ospiti/linuxtools/ - La bussola italiana del mondo Linux.
Completo elenco ragionato di link sull'universo Linux.
LINUX A SCUOLA - www.linuxascuola.it - Info per scuole.
Informazioni sull'uso di Linux nelle scuole.
INFORMATICA E GNU/LINUX - vandali.org/DanieleMasini/infolinux.php - E-Book FDL.
Completo e interessante e-book su Hardware, Informatica e Linux.
Questo elenco è in costante aggiornamento.
Usa i commenti di questo INFOBOX per segnalare ulteriori siti.
Linux Software |
Risorse e informazione su dove trovare software per Linux |
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-09-20 12:44:15
Pochi link al software per Linux. Quelli essenziali.
Il sito ufficiale del kernel Linux: http://www.kernel.org - Home Page ufficiale del kernel
Le distribuzioni più diffuse: http://www.linuxlinks.com/Distributions -
Tutte le distribuzioni Linux: http://www.distrowatch.com/ - Distrowatch
Carne fresca. Software abbondante: http://freshmeat.net/ - Freshmeat
Due mucche e tanto software. Ben catalogato: http://linux.tucows.com/ - Tucows Linux
Officina di sviluppo di codice opensource: http://www.sourceforge.org/ - Sourceforge
Computer/Software/OS/Linux . Su dmoz. http://dmoz.org/Computers/Software/Operating_Systems/Linux/ - Dmoz
RPM repository: http://rpmfind.net - Rpmfind
LINK: Il sito ufficiale del kernel - http://www.kernel.org
LINK: Le distribuzioni più diffuse - http://www.linuxlinks.com/Distributions
LINK: Freshmeat. - http://freshmeat.net/
LINK: DMOZ: Computer/Software/OS/Linux - http://dmoz.org/Computers/Software/Operating_Systems/Linux/
(F)AQ: Dove trovo link su Linux? -
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-10-15 15:57:05
Viene qui fatta una rassegna essenziale del software che viene maggiormente utilizzato per gestire servizi comuni su un server. Va vista come indicazione sui software mainstream, quelli più diffusi e sui quali più facilmente ci si può trovare ad operare.
Quasi tutti i prodotti sotto elencati sono Open Source e disponibili su Linux come su altre piattaforme. Windows Incluso.
File sharing
Samba Windows networking. Condivisione di file e stampanti, avanzata e performante compatibilità con NetBios.
NFS Server File sharing attraverso il protocollo NFS, richiede un kernel con tale supporto abilitato.
Web Server e Application Server
Apache Il server web utilizzato dal 60% dei siti Internet. Flessibile ed estendibile con moduli.
Tomcat Java Application Server del progetto Apache. Interessante ma poco performante.
PHP HTML embedded scripting language. L'alternativa OpenSource ad ASP di Microsoft. Molto diffuso.
Mod Perl Modulo PERL per Apache. Fondamentale per chi sviluppa in Perl.
Mail & News Server
Sendmail SMTP server, cresciuto con la Rete. Molto utilizzato, molto flessibile.
Postfix Alternativa SMTP a Sendmail. Facilmente configurabile. Con enfasi sulla sicurezza.
Qmail Altro SMTP server alternativo a Sendmail. Dal design recente e sicuro.
INN Server NEWS dell'ISC.
DNS & DHCPD
Bind Il server di DNS più utilizzato. Presente in tutte le distribuzioni.
Dhcpd Il server DHCP dell'Internet Software Consortium, incluso in tutte le distribuzioni disponibili sul mercato.
DB Server & LDAP
MySQL SQL server Open Source. Molto veloce, con qualche limitazione sulle funzioni più complesse.
PostgreSQL Alternativa a Mysql, prodotto Open Source.
Openldap L'implementazione Open Source di Ldap.
Oracle ormai ben supportato e certificabile su Linux.
Altri servizi: FTP, WEB CACHE...
Wu-ftpd, proftpd, vsftpd Diversi comuni FTP server.
Squid Proxy server. Web cache engine. La soluzione OpenSource più diffusa.
VNC Virtual Netwrok Computing. Per gestire macchine remote tramite interfaccia grafica.
Lotus Domino/Notes la versione per Linux viene sviluappta di pari passo con quella Windows.
LINK: Samba Home Page - http://www.samba.org
LINK: Apache Home Page - http://www.apache.org
LINK: Php Home Page - http://www.php.net
LINK: OpenLDAP Home Page - http://www.openldap.org
LINK: Sendmail Home Page - http://www.sendmail.org
LINK: MySQL Home Page - http://www.mysql.org
LINK: PostgreSQL Home Page - http://www.postgresql.org
LINK: ISC Bind Home Page - http://www.isc.org/products/BIND/
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-10-15 23:50:44
L'aspetto sicurezza è fondamentale su ogni sistema operativo utilizzato in rete.
In questa pagina è presente una rassegna indicativa di strumenti di security disponibili su Linux (e, come sempre, anche su altre piattaforme, in particolare Unix).
La gamma dei prodotti, gratuiti e commerciali, è molto più ampia ed in continua crescita.
Questa lista da una indicazione dei progetti più noti.
SNIFFER
Tcpdump Sniffer incluso nella maggior parte delle distribuzioni, comandi semplici con la possibilità di utilizzare filtri. Analizza le intestazioni dei pacchetti, non il payload.
Ethereal Packet sniffer, analyzer & decoder. Su interfaccia a finestre.
Ettercap Sniffer per ambienti switchati.
FIREWALL
Ipchains Le utility per gestire il firewalling sui kernel pre 2.4.
Iptables Evoluzione di ipchains, gestisce il modulo netfilter del kernel 2.4
Shorewall Tool per configurare e gestire in modo semplice le iptables
IDS
Snort Network intrusion detection system, che genera alert sulla base di un database di fingerprints in costante aggiornamento.
Tripwire Host Intrusion Detection System: monitora le modifiche sui file di sistema.
Ossim Open Source Security Information Management: raccoglie e organizza le informazioni di diversi software di montoraggio e IDS
Monitoring
Nagios Sistema di monitoring e alerting dei servizi attivi in una rete, con report via web
Mrtg Non direttamente attinenete la sicurezza. Crea grafici sulla base di MIB SNMP. Molto utilizzato per visualizzare l'occupazione di banda.
Ntop Strumento di analisi del traffico di rete con ottima interfaccia web/testuale. Sviluppato dall'italiano Luca Deri.
Criptazione e VPN
mod_ssl Modulo di Apache per implementare il protocollo https.
Openssh Implementazione opensource dei protocolli criptati ssh1e ssh2.
OpenSWAN Implementazione opensource per il supporto di VPN IPSEC.
PoPtop Implementazione OpenSource del protocollo di tunneling PPTP.
Cipe Software per VPN basate su un protocollo non standard.
Network Scanners
Nmap Port scanner veloce e flessibile.
Nessus Security scanner, basato su un ampio database di vulnerabilità in costante aggiornamento.
LINK: YoLinux: List of Linux Security and Hacker Software Tools - http://www.yolinux.com/TUTORIALS/LinuxSecurityTools.html
LINK: Linux Security Portal - http://www.linuxsecurity.com/
LINK: Incidents.org Mappa in tempo reali di attacchi in rete - http://www.incidents.org/
LINK: The table of equivalents / replacements / analogs of Windows software in Linux. - http://linuxshop.ru/linuxbegin/win-lin-soft-en/
Capire il file system di un sistema operativo è fondamentale per conoscerlo e gestirlo ad un livello più approfondito di quella che può essere la normale utilizzo del computer, lato desktop. Nel caso di Linux, inoltre, questo aspetto è particolarmente importante quando si opera con la shell, in modalità testuale.
La logica del file system (FS) Linux è fortemente legata a quella di ogni Unix.
Quanto viene qui esposto si applica, per gran parte, a qualsiasi Unix.
Avremo modo di tornare a divagare sulla bellezza intrinseca di un sistema Unix, sulla sua elementare complessità, l'apparente caos di file e directory che, una volta carpiti i pochi segreti fondamentali, si rivela in tutta la sua esplicita profondità, lasciando all'utente una visione estesa, complessiva, totale di cosa succede sul proprio computer e di come il sistema operativo si adatta, riconosce e gestisce l'hardware.
Prima vediamo argomenti più prosaici:
FILE, DIRECTORY E GERARCHIA FILE SYSTEM
E' fondamentale capire la logica del file system Linux, il concetto di directory root ( / ), un' idea degli utilizzi e la funzione delle altre directory.
Conoscere i comandi tipici di elenco (ls), gestione file (cp, rm, mv, mkdir, rmdir) e gestione link è altresì necessario, pur non essendo indispensabile conoscerne gli innumerevoli (spesso utili) parametri.
Per approfondimenti: Gestire file, directory e link
VISUALIZZARE FILE
Sono disponibili diversi comandi per vedere il contenuto di un file.
Alcuni sono usati molto spesso (cat, less, tail), altri si rivelano utili quando si deve investigarne la natura (file, strings).
I dettagli in Leggere e visualizzare file
FORMATTAZIONE E MOUNT DI NUOVI FILE SYSTEM
Qualsiasi tipo di file system, presente su qualsiasi supporto (hard disk secondario, floppy, cdrom, condivisione di rete...) può essere "montato" all'interno di una sottodirectory della root.
Il sistemista Linux deve avere dimestichezza con le operazioni di mount, formattazione e gestione di file system e device di storage.
Approfondimenti in Gestione dei file system
ATTRIBUTI E PERMESSI
Su Unix/Linux, come su Windows NT, 2000 e XP, ogni file è posseduto da un utente del sistema e da un gruppo di utenti e può avere diversi attributi per gestire i permessi di scrittura, lettura ed esecuzione.
La logica degli "owner" e dei permessi sui file e i comandi per gestirli (chown, chgrp, chmod) sono comuni ad ogni sistema Unix e devono essere ben padroneggiati da ogni amministratore di sistema.
Moltissime problematiche di natura sistemistica di fatto sono dovute a problemi di permessi sul file system da parte degli utenti di sistema con cui sono in esecuzione le varie applicazione, per cui è fondamentale comprendere la logica dei permessi e il modo con cui modificarli.
Per saperne di più: Attributi e permessi
CERCARE FILE
Un motivo di diffcoltà ricorrente per il sistemista non esperto è capire dove stanno i file di configurazione, i programmi, i log e orientarsi nel groviglio della struttura delle directory.
Esistono comandi che permettono di trovare file o informazioni (whatis, whereis, locate, apropos) e di eseguire ricerche complesse sul file system (find).
Sono inoltre estremamente utili dei comandi "filtro", che permettono di visualizzare solo quello che ci intreressa di una serie di righe di output. Alcuni sono usati spessissimo e vanno ben compresi (grep, sort), altri risultano utili in condizioni specifiche ed è bene sapere che esistono (cut, wc, tr) e altri ancora sono estremamente flessibili, potenti e complessi (sed, awk).
Dettagli in Ricerca, confronto e filtri
Gestire file, directory e links |
Capire, muoversi e modificare file e directory: /, .., . , cd, ls, cp, mv, rm, rmdir, mkdir. Uso di link e symlink. |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-28 19:33:54
Il file system di un sistema Linux, come ogni Unix, ha una struttura gerarchica: tutti i suoi oggetti (file e directory) sono contenuti all'interno della root ( la directory principale, indicata semplicemente con "/
" (barra) ) e lo stesso carattere / viene usato per separare i nomi delle directory ( Ad esempio /usr/bin/
indica la directory bin
contenuta nella directory usr
contenuta nella root (/
).
La root contiente non soltanto TUTTE le altre directory di una partizione ma TUTTI i filesystem eventualmente montati sul sistema (partizioni e hard disk diversi, floppy, cdrom, condivisioni di rete ecc.).
Il principio è radicalmente diverso da quello presente nel mondo Windows, dove ogni device o risorsa ha un suo nome o lettera identificativa (A:, C:, D: ecc) al cui interno si trovano le directory del relativo filesystem.
Su molti Linux, ad esempio, i file contenuti in un floppy disk si trovano in una directory chiamata /mnt/floppy
e non in qualcosa chiamato A:
come su Windows. Il nome di questa directory, oltretutto, può cambiare ed essere decisa arbitrariamente dall'utente o da chi ha realizzato la distribuzione (ovviamente esistono metodi per sapere in quale directory viene montato qualsiasi dispositivo).
Esistono alcune notazioni standard Unix per indicare la directory corrente, la directory padre, la home directory ecc.
E' opportuno conoscere bene queste convenzioni in quanto sono comunemente utilizzate in attività sistemistiche:
/
Come sopra riferito, indica la root, la directory principale alla base di tutto il filesystem
/bin/
Indica la sottodirectory bin (una arbitraria), alla root
bin/
Indica la sottodirectory bin rispetto alla dir corrente. Notare che se il path inizia con una / indica un path assoluto, che inizia dalla root ( /, appunto). Se non inizia con / indica un path relativo alla directory in cui ci si trova.
.
Indica la directory corrente
..
Indica la directory madre di quella in cui ci si trova
../bin/
Indica la sottodirectory bin che si trova allo stesso livello della dir corrente.
~
La home directory dell'utente corrente (coincide di default con /home/login_utente
Un path assoluto, quindi, avrà un simile aspetto: /usr/local/bin
e sarà funzionante in qualsiasi directory in cui ci si trova.
Un path relativo ha aspetto simile a local/bin
e indica directory diverse a seconda della directory in cui ci si trova. In questo caso local/bin coincide con /usr/local/bin
solo se ci si trova in /usr/
Comandi comuni
I comandi di gestione dei file su Unix sono paragonabili agli equivalenti di altri sistemi operativi a riga di comando come DOS. Tutti questi comandi, come tradizione Unix, hanno varie opzioni che possono ampliare notevolmente le potenzialità del comando stesso.
ls
Visualizza il contenuto di una directory (equivale a dir su Dos e in alcuni Linux esiste anche un alia di ls che si chiama proprio dir
);
cd
Cambia la directory corrente. Corrisponde all'omonimo cd su DOS.
cp
Esegue la copia di uno o più file. Corrisponde al copy di DOS.
mv
Esegue lo spostamente o la rinomicanzione di un file. Corrisponde a move e rename su DOS.
rm
Cancella uno o più file (fare attenzione: su molti Unix e Linux non è previsto l'equivalente di un cestino: se un file viene cancellato risulta poi piuttosto complesso recuperarlo). Corrisponde al del di DOS.
mkdir
e rmdir
Rispettivamente vengono usati per creare e cancellare una directory vuota.
ln
Viene usato per create un link, hard o soft (con l'opzione ln -s
).
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 15:43:07
E' il comando per cambiare la directory corrente, cioè, in pratica, per spostarsi in una directory diversa da quella in cui ci si trova (usare il comando pwd
er visualizzare la directory corrente).
E' presente in tutti gli Unix e non è un comando a se stante (non è possibile trovarne il file binario) in quanto incorporato nella shell (BUILT IN COMMAND).
cd [directory]
Si aspetta come argomento il nome di una directory in cui spostarsi, se non ne viene specificata alcuna, entra, di default, nella home directory dell'utente.
Esempi
cd /
Cambia la directory corrente nella root.
cd ../
Si sposta nella directory padre di quella in cui ci si trova.
cd bin
Si sposta nella sottodirectory bin rispetto alla directory corrente.
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-24 23:57:24
Visualizza il contenuto di una directory. Corrisponde al "dir" di Windows.
Comando comune in tutti gli Unix, a volte con opzioni diverse.
Se non viene specificata alcuna directory, indica i file nella directory corrente.
ls [opzioni] [file]
-a
Visualizza tutti i file, anche quelli nascosti (che iniziano con un punto: .)
-l
(--format=long) Visualizza informazioni aggiuntive quali data di modifica, permessi, owner e group
-i
(--inode) Visualizza anche l'inode dei file
-f
Non esegue alcun ordinamento di file e li visualizza nell'ordine con cui sono stati memorizzati (di default ls fa un elenco in ordine alfabetico)
-t
(--sort=time) Ordina l'elenco dei file secondo la data di modifica
-u
(--time=access) Ordina l'elenco dei file secondo la data di ultimo accesso
-S
(--tsort=size) Ordina l'elenco dei file secondo la dimensione
-r
(--reverse) Ordina in senso inverso l'output dei file (da usare con -t, -u, -S ecc.)
-X
(----sort=extension) Ordina i file per estensione
-R
(--recursive) Elenca ricorsivamente tutte le sottodirectory e i file ivi contenuti, rispetto alla directory specificata (o corrente)
-I pattern
(--ignore pattern) Non visualizza i file che matchano il pattern specificato
Esempi
ls -lS /var/spool/mail
Esegue un listing esteso dei file contenuti in /var/spool/mail ordinandoli secondo dimensioni dal più grande al più piccolo.
ls -ltr /var/log
Elenca i file contenuti nella directory /var/log secondo data di modifica inversa: dal più vecchio al più recente.
ls -a ~
Elenca tutti i file (anche quelli nascosti, preceduti da un .) presenti nella propria home directory.
SOURCE: Man Pages - http://man.openskills.info/ls
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-25 14:52:03
Copia file e directory. Comando flessibile che permette di copiare sia un file su una destinazione data, sia un numero arbitrario di file su una directory d'arrivo. Può essere utile anche come strumento di backup e in script.
E' comune in tutti gli Unix ma alcuni parametri possono variare.
cp [opzioni] sorgente destinazione
cp [opzioni] sorgenti... directory_destinazione
OPZIONI POSIX (Valide in tutti gli Unix)
-f
(--force) Forza la copia, rimuovendo i file di destinazione preesistenti, se esistenti.
-i
(--interactive) Chiede conferma prima di sovrascrivere i file di destinazione (il cp su linux è solitamente un alias di cp -i, per cui di default viene chiesta la conferma alla sovrascrittura)
-p
(--preserve) Preserva gli attributi dei file copiati (owner, group, permessi, data di ultima modifica e data di ultimo accesso).
-R
(--recursive) Copia le directory ricorsivamente (include file e sottodirectory) rispettando l'integrità di file speciali.
OPZIONI GNU (Tipiche di Linux e altri Unix che usano la versione GNU di cp)
-a
(--archive) Corrisponde a cp -dpR e conserva nella copia quanto possibile la struttura e gli attributi dei file originali. Da usare quando si intende fare il backup di directory e file.
-d
(--no-dereference) Copia link simbolici come link simbolici piuttosto che copiare i file da essi puntati, e conserva la relazione di hard link tra i file originali anche nelle copie.
-s
(--symbolic-link) Crea un link simbolico invece della copia vera e propria dei file o directory.
-u
(--update) Nel caso il file di destinazione esiste già, lo sovrascrive solo se ha data di modifica più vecchia.
-v
(--verbose) Stampa il nome di ogni file prima di copiarlo.
-b
(--backup) Crea copie di backup dei file che stanno per essere sovrascritti o rimossi.
-S SUFFISSO
Aggiunge il SUFFISSO specificato a tutti file di backup.
Esempi
cp -a /etc /backup/
Copia tutta la directory /etc e i suoi contenuti nella directory /backup. Mantiene i link simbolici e i permessi inalterati.
cp /etc/grub.conf /tmp/
Copia il file /etc/grub.conf nella directory /tmp. Se /etc/grub.conf è un symlink, in /tmp/ si ritrova una copia del file a cui il link punta e non un symlink.
SOURCE: Man Pages - http://man.openskills.info/cp
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-24 23:51:21
Crea un link al file specificato. Il link è un alias, uno pseudonimo, un secondo nome con cui un file può essere richiamato, oltre che con il suo nome principale.
ln è un comando comune in tutti gli Unix, la differenza fra hard e soft link è presente in tutti gli Unix.
ln [opzioni] nome_file_puntato [nome_link]
ln [opzioni] nomi sorgente directory destinazione
Nel primo caso se nome_file_puntato è un file, viene riscritto, se non viene specificato, viene creato nella directory corrente un link con il nome_sorgente (senza path).
Nel secondo caso è possibile specificare più file sorgenti e una directory di destinazione in cui vengono creati altrettanti alias con lo stesso nome.
-s
(--symbolic) Crea un link simbolico e non un hard-link. Opzione molto utilizzata.
-b
(--backup) Esegue una copia di backup dei file di destinazione, prima di cancellarli (se esistono).
Esempi
ln -s /usr/sbin/sendmail.postfix /usr/sbin/sendmail
Crea un link simbolico chiamato /usr/sbin/sendmail che punta al file /usr/sbin/sendmail.postfix
ln -s /etc/passwd
Crea, nella directory corrente, un link simbolico chiamato passwd che punta al file /etc/passwd
ln /etc/passwd /etc/shadow /etc/group /backup/
Crea 3 hardlink chiamati passwd, shadow e group nella directory /backup/ che puntano ai rispettivi file nella directory etc.
SOURCE: Man Pages - http://man.openskills.info/ln
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-25 15:05:33
Sposta o rinomina un file o una directory.
E' un comando comune a tutti gli Unix (con opzioni che possono variare). Notare che su Unix non esiste il corrispondente del comando "rename" di Windows. Il cambiamento di nome di un file viene fatto semplicemente "spostandolo" in un file con nome diverso.
mv [opzioni] sorgente destinazione
mv [opzioni] sorgenti... directory_destinazione
-f
(--force) Forza lo spostamento, sovrascrivendo i file di destinazione preesistenti, se esistono.
-i
(--interactive) Chiede conferma prima di sovrascrivere i file di destinazione (il mv su Linux è solitamente un alias di mv -i, per cui di default viene chiesta la conferma alla sovrascrittura)
-u
(--update) Nel caso il file di destinazione esiste già, lo sovrascrive solo se ha data di modifica più vecchia.
-v
(--verbose) Stampa il nome di ogni file prima di spostarlo.
-b
(--backup) Crea copie di backup dei file che stanno per essere sovrascritti o rimossi.
-S SUFFISSO
Aggiunge il SUFFISSO specificato a tutti file di backup.
Esempi
Il comportamento di mv varia a seconda della natura di sorgente e destinazione, seguono alcuni esempi generici, se risultano poco chiari fare pratica sul proprio sistema, è sempre il metodo migliore:
mv /directory/file /directory/file_nuovo
(Rinomina file in file_nuovo)
mv /directory/file /directory/file_esistente
(Sovrascrive file_esistente con file)
mv /directory/file /directory/subdirectory_esistente
(Sposta file all'interno di subdirectory_esistente)
mv /directory/subdirectory /directory/subdirectory_nuova
(Rinomina subdirectory)
mv /directory/subdirectory /subdirectory_nuova
(Sposta, e rinomina, subdirectory)
mv /directory/subdirectory /directory/subdirectory_esistente
(Sposta subdirectory all'interno di subdirectory_esistente)
SOURCE: Man Pages - http://man.openskills.info/mv
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-24 23:07:30
Può capitare di avere un sistema installato su più partizioni di un hard disk e ritrovarsi con un utilizzo non omogeneo dello spazio su disco libero.
In tempi rapidi, usando dei symlink, si possono mettere delle rapide "pezze" senza dover ridimensionare le partizioni o aggiungere hard disk.
Analizziamo questo esempio:
[root@socrate al]# df -k
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda5 1682664 1254556 342632 79% /
/dev/hda1 19487 6793 11688 37% /boot
none 258400 0 258400 0% /dev/shm
/dev/hda2 1512000 74880 1360312 6% /var
Ipotizziamo di dover copiare da un CDROM in /home/bigdata
di questo sistema una grande quantità di dati, più di quanto possa essere contenuto nella /
, che si trova nella stessa partizione ormai piena al 79%.
Una rapida soluzione può essere copiare i dati in un'altra partizione e mantenere lo stesso path in /home
con un link simbolico:
mkdir /var/bigdata
cp -r /mnt/cdrom/* /var/bigdata
ln -s /var/bigdata /home/bigdata
In questo modo esiste sempre la directory /home/bigdata e il fatto che in realtà sia un link simbolico a /var/bigdata è trasparente, per il sistema.
Questo è solo un esempio, non perfettamente calzante (la directory /var, contenendo log e file mutevoli, è destinata a riempirsi) che comunque da l'idea di come con un semplice link si possono spostare intere directory e distribuire meglio lo spazio disponibile su partizioni diverse.
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-24 20:55:36
La struttura delle directory in un sistema Linux ha molte caratteristiche comuni a quella di altri sistemi Unix.
Sotto vengono riportare le directory principale e più comuni su Unix diversi, altre directory possono avere nomi o funzionalità diverse in Unix diversi (e anche in distribuzioni Linux diverse).
/
Radice (root). La directory principale che contiene tutte le altre.
/root
Home dell'utente root, da non confondere con la root ( / ), che è la directory principale e non una directory che si chiama /root
/boot
Contiene tutte le immagini del kernel e file indispensabili al bootstrap del sistema
/etc
Contiene i file di configurazione del sistema e dei programmi installati
/home
Contiene le home directory degli utenti normali (tutti tranne l'utente root)
/usr
Contiene binari, documentazione, librerie e sorgenti della maggior parte dei programmi (e i sorgenti del kernel)
/var
Contiene tutti file che hanno informazioni dinamiche, che tendono a modificarsi con il tempo: log, file di pid e lock dei processi in esecuzione, directory di spool (stampa, mail...) ecc.
/proc
File system virtuale, generato in tempo reale dal kernel. Contiene, come se fossero file e directory, dati dinamici sul sistema e sui processi
/dev
Contiene file speciali, che corrispondono a dispositivi hardware o a funzionalità particolari. Tramite di essi si può accedere al relativo device hardware.
/sbin
Contiene comandi e programmi riservati a root ( altri comandi sono in /usr/sbin/
)
/bin
Contiene comandi e programmi base per tutti gli utenti (altri comandi sono in /usr/bin/
)
SWAP
Non è una directory ma una partizione speciale, utilizzata come memoria virtuale.
SOURCE: Filesystems, Directories, and Devices NHF ver. 1.0 - http://www.linuxnewbie.org/nhf/Filesystems/Filesystems_Directories_and_Devices.html
(F)AQ: Quali sono le principali directory in Linux? -
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-25 15:11:10
Cancella file o directory.
E' comune in tutti gli Unix ma alcuni parametri possono variare.
ATTENZIONE: IN UNIX NON ESISTE IL "CESTINO", QUANDO UN FILE VIENE CANCELLATO NON E' POSSIBILE RECUPERARLO FACILMENTE! (Ci sono comunque dei metodi per recuperare dei file cancellati, ma non sono semplicissimi).
Per poter cancellare un file è necessario avere permessi in scrittura sulla directory che lo contiene, ma NON E' NECESSARIO AVERLI SUL FILE stesso (se non si hanno permessi di scrittura sul file che si vuole cancellare, e che si trova in una directory dove si può scrivere, viene semplicemente richiesta una conferma prima della cancellazione).
Se si vuole cancellare un file in modo definitivo, rendendo impossibile un suo recupero, utilizzare il comando shred
.
rm [opzioni] file
-f
(--force) Forza la rimozione senza richiesta di conferma.
-i
(--interactive) Chiede conferma prima di cancellare i file
-R
(-r , --recursive) Se viene indicata una directory la cancella con tutto il suo contenuto (USARE CON CAUTELA)
ATTENZIONE a usare certe opzioni di rm, un comando come rm -rf /* se eseguito come root cancella brutalmente tutto il file system (in realtà ad un certo punto la cancellazione si blocca perchè vengono cancellati alcuni file vitali al funzionamento corrente del sistema, ma il risultato è comunque catastrofico e irreparabile).
Esempi
rm -rf /tmp
Cancella tutta la directory /tmp
rm -rf /tmp/*
Cancella tutti i file contenuti nella directory /tmp (la directroy rimane vuota)
SOURCE: Man Pages - http://man.openskills.info/rm
LINK: Deleted files recovery howto - http://e2undel.sourceforge.net/recovery-howto.html
Tipo Infobox: ETCETERA - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-24 23:25:30
Molte comandi Unix eseguono funzioni comuni ad analoghi comandi su altri sistemi operativi. Per chi conosce bene un sistema operativo e vuole velocemente sapere gli equivalenti dei comandi su un nuovo OS, esistono in rete varie "Stele di Rosetta" o comunque tavole comparative.
Alcune di queste si riferiscono ai diversi dialetti Unix, che pur avendo radice comune, in certi comandi e naming convention differiscono fra loro.
Nei link associati a questo INFOBOX ci sono alcune di queste preziose risorse.
LINK: A Sysadmin's Unixersal Translator (ROSETTA STONE) - http://home.earthlink.net/~bhami/rosetta.html
LINK: Unix-DOS-Windows Rosetta Stone - http://iats.missouri.edu/servlets/knowledgebase/article/422
LINK: Unix / VMS Commands Comparison - http://www.albany.edu/academic_computing/documentation/local/unix_commands.html
Tipo Infobox: DESCRIPTION - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-24 22:25:58
La logica del file system Unix è semplice, elegante e potente, alcune sue caratteristiche sono comuni al DOS, altre all'antico MULTICS, altre sono uniche.
Le directory, a livello di sistema, sono trattate come dei file che invece di contenere dei dati contengono altri file o directory; per il sistema sono tutti i-node, che hanno in due parti separati il loro descriptor (nome, attributi, permessi ecc) dal contenuto (il dato presente nel file, o, nel caso di una directory, l'elenco dei file che contiene).
I file possono avere qualsiasi carattere (escluso NUL) nel nome, anche caratteri speciali per la shell o spazi e CR (Carriage Return).
Le estensioni non hanno nessuno specifico significato: sono usate per comodità da alcuni comandi ma non sono indispensabili e, a livello del file system, nemmeno identificative del tipo di file.
Una tipica partizione Unix contiene un file system così organizzato:
- Blocco 0, non usato da Unix, a volte usato per il boot del sistema (è l'MBR se si trova sul device primario);
- Blocco 1 o superblock, contiene informazioni critiche sulla struttura del file system (numero di i-node, numero di blocchi del disco ecc);
- Elenco degli I-node, numerati da 1 a un numero finito, che contengono le informazioni sui singoli file presenti nel file system e sulla posizione dei rispettivi dati;
- Blocchi dei dati, con i dati effettivi contenuti nel file.
Gli i-node contengono informazioni quali: tipo di file, permessi, data di creazione, modifica, ultimo accesso, utente e gruppo proprietari, posizione e dimensione del file ecc.
Tramite l'uso di link è possibile fare in modo che lo stesso i-node sia condiviso di diversi oggetti nel filesystem.
Linux di default supporta il file-system ext2 che ha molte caratteristiche in comune con un tipico file system Unix System V. Il kernel di Linux comunque permette l'uso di molti altri file system come ext3, reiserFS, jfs (file system giornalistici, che tengono un log di tutte le operazioni di scrittura per permettere un recupero dei dati più agevole in caso di guasti), i file system di Windows (fat, fat32, ntfs) e quelli di molti altri sistemi operativi (BeOs, AmigaOs, Mac, ecc), oltre a file system di rete come NFS, SMB, Novell.
SOURCE: Libro: "I moderni sistemi operativi" di Andrew Tanenbaum -
Tipo Infobox: BOFH - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 15:44:30
Trova in tutto il file system i file con l'inode specificato.
E' utile per identificare gli hard link ad un file.
Nell'esempio sotto si visualizza l'inode di un file che si è visto avere 3 nomi associati (il 3 nella terza colonna dell'output di ls -li) e si cerca in tutto il file sysyem tutti i file che hanno stesso inode.
[root@trinity root]# ls -li /usr/bin/zgrep
301759 -rwxr-xr-x 3 root root 1461 Aug 24 2001 /usr/bin/zgrep
[root@trinity root]# find / -inum 301759
/usr/bin/zfgrep
/usr/bin/zgrep
/usr/bin/zegrep
(F)AQ: Come si trovano gli hard link di un file? -
Tipo Infobox: BOFH - Skill Level: 4- ADVANCED - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2004-05-23 15:45:02
Script in una riga che trasforma il nome di file nella directory corrente in caratteri minuscoli.
E' possibile invertire il risultato, cioe' trasformare tutto in maiuscolo, invertendo di posto
[:upper:]' '[:lower:]'
Tipo Infobox: COMMANDS - Skill Level: 3- INTERMEDIATE - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2004-05-23 15:43:42
E' un comando che permette di visualizzare informazioni utili sui file come dimensione, permessi, inode, owner, data di ultimo accesso, di creazione e di modifica. In pratica tutto quello che è necessario conoscere di un file.
Ha opzioni, inoltre, che forniscono informazioni sul file system che contiene il file e che permettono di esportare i dati in modo sequenziale e poco user friendly ma comodo per essere gestiti all'interno di script.
stat [-l] [-f] [-v] [-t] file-name [file-name]...
-l
Flag da utilizzare per i links
-f
Visualizza le informazioni del file system che contiene il file
-t
Visualizza lo stdout in modo tale da essere processato da un secondo programma o comando
Esempi
stat /etc/rc.local
Fornisce informazioni, in formato "human readable" sul file /etc/rc.local (nel nostro caso un link simbolico)
stat -l /etc/rc.local
Fornisce informazioni sul file a cui punta il link simbolico /etc/rc.local
stat -t /etc/group
Fornisce informazioni su /etc/group dando solo l'elenco dei risultati senza specificarne la natura, utile per "passare" il risultato ad un altro comando all'interno di uno script.
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2004-03-06 02:01:55
Midnight Commander è un file manager definito anche una Visual Shell per sistemi Unix, utile sui server dove spesso X non viene utilizzato. Ha una logica e un aspetto molto simile al vecchio Norton Commander per DOS.
E' possibile lanciare Midnight Commander in una shell tramite il comando mc
. Questo software una volta avviato presenta un pannello di controllo diviso in quattro parti. Due pannelli più grandi in cui vengono visualizzati i file contenuti nella directory in cui ci si trova al momento dell'esecuzione, la linea di comando, e dei menu richiamabili tramite tasti funzione F1-F10.
Il programma può essere utilizzato anche mediante i menu a tendina, e con l'ausilio del mouse, quest'ultimo non solo in locale ma anche in remoto tramite connessioni via telnet o ssh.
Tra le caratteristiche di questo file manager, la possibilita' di montare directory FTP, visualizzare file tar, DEB ed RPM con possibilita' di estrarne singoli file, ed infine eseguire l'undeleting di file su partizioni di tipo EXT2.
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-24 23:04:40
I sistemi Unix fanno largo uso di link: dei file speciali che sono semplici collegamenti o alias di file esistenti.
Servono per identificare lo stesso file o directory con nomi diversi, avendo anche path diversi.
Su Unix esistono due tipi di link: Hard link e Symbolic link.
L'effetto che hanno è lo stesso, ma la loro natura è diversa e si adattano a diversi utilizzi.
L'utilità dei link è varia:
- Se si devono modificare diversi file uguali, in diverse directory, con l'uso di link la modifica fatta su un file diventa immediatamente effettiva anche sugli altri file (link) (Es: la struttura di /etc/rc.* ) .
- Se si devono poter gestire contemporaneamente diversi ambienti o programmi con diverse versioni, si può cambiare solo il puntamento del link usato per accedere a questi ambienti per poter switchare rapidamente da uno all'altro (es: /usr/src/linux )
- Se si devono gestire diverse alternative dello stesso comando, si può usare un link per referenziare il comando con un nome fisso e poi cambiare il puntamento per valutare in tempi brevi le diverse alternative (ex: Directory /etc/alternatives in RedHat Linux).
Hard Link
Sono di fatto una copia di una voce di directory, hanno nomi diversi ma puntano allo stesso inode e quindi condividono esattamente lo stesso dato (oltre agli stessi permessi, data di modifica, owner ecc.).
Dal momento che originale e link sono indistinguibili e condividono lo stesso inode, non si possono fare hard link fra file system diversi e, in genere su Unix, su directory (su Linux è possibile creare un hard link ad una directory tramite l'opzione speciale -d).
Pur essendo la gestione dei link comunque molto rapida da parte del kernel, gli hard link sono leggermente più "economici" in quanto risparmiano più spazio su disco (stesso i-node, stessi dati) e richiedono una lettura in meno sul file system (i symlink hanno i-node diverso e puntatore, che va letto, ad un altro file).
Symbolic Link o Symlink
Sono dei piccoli file che contengono un puntamento ad altri file o directory. Questi file hanno i-node autonomo e possono puntare a file di altri file system (sia locali, che di rete). Si possono facilmente visualizzare con un normale ls -l e se viene cancellato o spostato il file a cui puntano rimangono "stale": continuano ad esistere ma puntano a qualcosa che non esiste.
I symlink sono generalmente molto più utilizzati nell'amministrazione di sistemi Unix e corrispondono come concetto e come implementazione ai collegamenti (shortcut) del mondo Windows.
Un symlink appare come avente tutti i permessi aperti a tutti gli utenti, di fatto è trasparente rispetto a permessi e ownership e riflette quelli del file o directory a cui punta.
LINK: Interessante articolo: When Hard Links Won't Do the Job - http://www.itworld.com/nl/unix_sys_adm/06062001/pf_index.html
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-27 11:50:38
Visualizza ricorsivamente l'elenco dei file e delle sottodirectory rispetto alla directory indicata (quella corrente, se non viene specificata).
L'output è ad albero e indica chiaramente la gerarchia delle directory.
tree [opzioni] [directory]
-a
Visualizza tutti i file, anche quelli nascosti.
-d
Visualizza solo le directory
-s
Visualizza anche le dimensioni di ogni file
-p
Visualizza anche i permessi di ogni file
-D
Visualizza anche la data di modifica di ogni file
-u
Visualizza anche l'owner di ogni file
Esempi
tree
Visualizza l'albero delle directory a partire dalla directory corrente.
tree -ap /etc
Visualizza l'albero delle directory all'interno di /etc includendo tutti i file nascosti ed evidenziando i permessi di ogni file
tree -ud /
Visualizza l'elenco di tutte le directiry (escludendo quindii file) e il rispettivo owner all'interno di tutto il filesystem
SOURCE: Man Pages - http://man.openskills.info/tree
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-27 11:36:22
Crea una o più directory. E' necessario avere permessi di scrittura nella directory in cui si vogliono creare nuove sotto directory. Comune in tutti gli Unix.
mkdir [opzioni] directory
-m ###
(--mode ###) Specifica i permessi della directiry creata (di default sono 777).
-p
(--parent) Crea le directory padre intermedie, nel caso non esistano. (es: mkdir -p /usr/local/test/my/dire crea la directory dire e anche le directory my, test, local, usr nel caso non esistano)
Esempi
mkdir -p temp/test/prova/nuova
Crea tutte le directory e sottodirectory indicate (anche se non esistono) rispetto alla posizione corrente. Senza l'opzione -p la directory "nuova" si poteva creare se esistevano già tutte le precedenti.
mkdir /tmp/nuova
Crea la directory "nuova" all'interno di /tmp.
SOURCE: Man Pages - http://man.openskills.info/mkdir
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-27 11:46:08
Rimuove directory (ma non il loro contenuto).
Comando comune a tutti gli Unix.
Non cancella directory non vuote, per il quale è necessario un comando tipo rm -R
rmdir [opzioni] directory
-p
(--parents) Rimuove la directory specificata e ogni directory genitore che dovesse essere rimasta vuota.
--verbose
Modalità verbosa: per ogni directory rimossa stampa un messaggio
Esempi
rmdir /tmp/nuova
Rimuove la sottodirectory "nuova" all'interno di /tmp (ma solo se nuova non contiene file.
SOURCE: Man Pages - http://man.openskills.info/rmdir
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-27 11:28:06
Cambia il tempo di accesso e modifica di un file, di fatto fa quello che dice: "tocca un file senza modificarne i contenuti.
Se il file non esiste ne crea uno nuovo di dimensioni zero.
Comando comune a tutti gli Unix.
touch [opzioni] [data] files
data
La data è quella corrente se non specificata, altrimenti va inserita nel formato mmddhhmm[yy]
-a
Aggiorna solamente l'access time.
-m
Aggiorna solamente il modify time.
Esempi
touch /tmp/nuovo
Crea un file chiamato /tmp/nuovo di 0 byte e data di modifica e ultimo accesso attuale
touch /etc/group
Cambia la data di modifica e ultimo accesso a quella attuale.
SOURCE: Man Pages - http://man.openskills.info/touch
Leggere e visualizzare file |
Comandi per visualizzare e leggere file: cat, less, more, tail, info, strings. |
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-27 12:53:00
Legge uno o più file e li scrive sullo standard output.
E' il comando Unix più comune per visualizzare un file ASCII senza interruzioni o particolari filtri.
cat [opzioni] [file]
-v
(--show-nonprinting) Visualizza caratteri di controlli e non stampabili (ad eccezione dei LINEFEED e TAB).
-T
(--show-tabs) Visualizza i caratteri TAB come ^I
-E
(--show-ends) Visualizza $ alla fine di ogni riga (dove c'è un LINEFEED)
-A
(--show-all) Corrisponde a -vET
-n
(--number) Numera tutte le righe in output, iniziando da 1.
Esempi
cat -A file.dos
Visualizza il contenuto di file.dos evidenziando la presenza di eventuali caratteri non stampabili (se il file è stato copiato o salvato da Windows avrà dei caratteri di fine riga, non necessari su Linux/Unix che possono creare problemi. Per rimuoverli usare il comando dos2unix
)
SOURCE: Man Pages - http://man.openskills.info/cat
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-27 17:50:07
Visualizza i file specificati una pagina alla volta.
E' comune in tutti gli Unix, ma in molti OS basati su utility GNU viene spesso sostituito o affiancato dall'analogo e più flessibile "less".
Con "SPAZIO" si scrolla l'output di una pagina, con "q" si torna alla shell.
more [opzioni] [file]
-r
Visualizza caratteri speciali e di controllo
+ #numero
Inizia a visualizzare dalla riga numero specificato
-num #numero
Imposta le dimensioni dello schermo a #numero righe
-p
Ripulisce ogni volta le pagine e non le scrolla. E' utile, con terminali che presentano problemi di visualizzazione, per rendere più leggibile l'output.
Una volta eseguito more si entra in modalità visualizzazione, in cui è possibile dare diversi comandi:
SPAZIO
Visualizza la schermata di testo successiva
INVIO
Visualizza la riga di testo successiva
q
Esce da more e torna alla shell
/pattern
Cerca il pattern indicato all'interno del testo
n
Cerca l'occorrenza successiva dell'ultimo pattern cercato
!comando
invoca la shell ed esegue il comando scritto
:n
Salta al file successivo (quando si visualizzano più file
:p
Salta al file precedente
SOURCE: Man Pages - http://man.openskills.info/more
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 15:45:57
Visualizza il contenuto di un file pagina per pagina, permettendo di scrollare al suo interno.
E' una versione più evoluta e recente di "more".
E' comune in tutti gli Unix che utilizzano utility GPL, Linux fra questi.
less [opzioni] [file]
-j #numero
Inizia a visualizzare dalla riga numero specificato
- #numero
Imposta il valore di default di linee scrollate (se non specificato è lo schermo intero)
-C
Ripulisce ogni volta le pagine e non le scrolla. E' utile, con terminali che presentano problemi di visualizzazione, per rendere più leggibile l'output.
-o file
Copia l'output sul file specificato nel caso in cui l'input provenga da una pipe.
-p pattern
All'apertura del file visualizza la prima occorrenza del pattern specificato.
Una volta eseguito less si entra in modalità visualizzazione, in cui è possibile dare diversi comandi:
SPAZIO
Visualizza la schermata di testo successiva (o avanza del numero di righe specificate con l'opzione - )
INVIO
Visualizza la riga di testo successiva
FRECCIA SU-GIU
Scrolla verso l'alto o verso il basso l'output
q
Esce da less e torna alla shell
/pattern
Cerca il pattern indicato all'interno del testo
n
Cerca l'occorrenza successiva dell'ultimo pattern cercato
!comando
invoca la shell ed esegue il comando scritto
:n
Salta al file successivo (quando si visualizzano più file)
:p
Salta al file precedente
SOURCE: Man Pages - http://man.openskills.info/less
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-27 17:49:06
Su Unix sono disponibili svariati comandi che permettono la visualizzazione del contenuto di file di testo o binari.
Fare pratica con i principali è fondamentale per la normale attività sistemistica.
Tutti questi comandi hanno svariate opzioni e possibilità di eseguire operazioni anche complesse.
In genere si suggerisce di fare pratica con le funzionalità di base ed eventualmente usare le opzioni più evolute o rare in script shell o casi particolari.
cat
Visualizza il contenuto di un file di testo
tac
Fa esattamente la stessa cosa di cat, ma al contrario, visualizzando per prime le utile righe di un testo.
less
Visualizza il contenuto di un file testo, pagina per pagina
more
Come less, ma con meno funzioni
tail
Visualizza l'ultima parte di un file di testo
head
Visualizza la prima parte di un file di testo
file
Analizza e mostra il tipo di un file
strings
Visualizza stringhe di testo all'interno di un file binario
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-27 17:54:29
Visualizza le ultime righe (di default 10) di un file.
E' un comando Unix comune.
Con l'opzione -f visualizza il file continuamente, senza tornare alla shell: opzione molto utile per tenere sotto controllo dei log.
tail [opzioni] [file]
-f
Non esce alla fine del file ma continua a visualizzarlo mentre cresce. Premere CTRL+C per tornare alla shell
- #numero
Visualizza le ultime #numero righe del file specificato
Esempi
tail -f /var/log/maillog
Visualizza l'ultima parte del file /var/log/maillog, continuando a scorrere il testo mano a mano che nuove righe si aggiungono al log. Questa funzionalità è molto comoda per diagnosticare problemi vari visualizzando in tempo reale file di log o debug.
tail -10 codice.txt
Visualizza le ultime 10 righe del file codice.txt presente nella directory corrente.
SOURCE: Man Pages - http://man.openskills.info/tail
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 15:46:23
Visualizza le prime righe (di default 10) di un file.
E' un comando Unix comune.
head [opzioni] [file]
-#numero
Visualizza le prime #numero righe del file specificato
-c #numero
Stampa i primi #num byte
Esempi
head -5 /etc/group
Visualizza le prime cinque righe di /etc/group
head -c5 /etc/group
Visualizza i primi 5 caratteri di /etc/group
SOURCE: Man Pages - http://man.openskills.info/head
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-27 18:01:14
Comando utile per capire la natura di un file che non si conosce. Identifica il tipo di file specificato sulla base di pattern definiti nel file di definizioni /etc/magic
(o /usr/share/magic
)
file [opzioni] file
-s
Controlla anche i file speciali a blocchi o a caratteri (tipicamente quelli in /dev )
-z
Scomprime e prova a verificare il formato di file compressi
Esempi
file /bin/vi
Mostra che tipo di file è /bin/vi
file -s /dev/hda1
Fornisce informazioni utili sulla partizione /dev/hda1
SOURCE: Man Pages - http://man.openskills.info/file
Tipo Infobox: BOFH - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-06-18 10:00:42
Visualizza il contenuto di un file con i caratteri solitamente non visualizzati (ad esempio ^M che rappresenta un Carriage Return (CR) di troppo).
Utile per individuare caratteri estranei in file di testo (tipicamente importati da DOS) che ne compromettono la funzionalità.
Per convertire file ascii da DOS a Unix e viceversa esistono le utility dos2unix
e unix2dos
.
Su un testo DOS l'"a capo" viene fatto con due caratteri ASCII: CR (carriage return) e LF (line feed).
Su un testo Unix è sufficiente LF. Su un testo Mac, si usa CR.
(F)AQ: Come visualizzo i caratteri speciali (LF, CR...) in un file? -
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-27 18:05:36
Visualizza i caratteri stampabili all'interno di un file binario.
Comando comune in Unix, è comodo per verificare la presenza di stringhe di testo all'interno di un file binario compilato (il cui output tipicamente è un insieme di caratteri senza senso).
Precisamente visualizza, per il file specificato, qualunque stringa lunga almeno 4 caratteri stampabili e seguita da un carattere non stampabile.
E' utile per avere un'idea dei messaggi di testo utilizzati in un dato programma.
strings [opzioni] file
-a
Scandisce l'intero file e non solo alcune parti
-n #numero
Imposta a #numero la lunghezza minima della stringhe da visualizzare (di default è 4)
Esempi
strings /usr/bin/passwd
Visualizza tutte le stringe di caratteri stampabili (e quindi di testo) all'interno del file binario /usr/bin/passwd.
SOURCE: Man Pages - http://man.openskills.info/strings
Gestione dei file system |
I principi e i comandi per gestire un file system: mount, df, du, fsck, mkfs. |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-28 20:22:21
Per file system si intende l'astrazione (metodo e protocolli) con cui un sistema operativo organizza i file su un supporto fisico di memorizzazione ad accesso casuale (floppy, cdrom, memoria, hard disk...).
I sistemi operativi moderni tipicamente utilizzano un sistema gerarchico (diviso in directory e sottodirectory) e possono supportare nativamente uno o più diversi file system.
Linux grazie alla sua polivalenza permette di utilizzare quasi tutti i file system più diffusi, ma il suo file system "storico" è ext2.
Dal kernel 2.4.x è disponibile il supporto per un'evoluzione dell'ext2, l'ext3 che, oltre ad essere convertibile facilmente in ext2, ha il vantaggio di essere un journal file system (basato su un log di tutte le operazioni di scrittura su disco, che aumenta l'integrità e il controllo .
Prima di poter utilizzare un qualsiasi dispositivo con il proprio filesystem (es: CDROM, floppy, tape, condivisione di rete windows, directory nfs, partizione fat32 di un hard disk... ) questo deve essere formattato e montato in una subdirectory della root ( / ).
Una volta montato il filesystem risulta accessibile a programmi e utenti in modo trasparente e diventa parte integrante dell'albero delle directory sotto /.
Dopo l'uso il filesystem può essere smontato (operazione necessaria per espellere un CDROM o un floppy).
La directory su cui viene montato un filesystem può anche non essere vuota, ma nel momento in cui ci viene montato un file system, i dati ivi contenuti non sono più visibili fino a quando non si esegue l'umount.
La gestione di diversi file system all'interno dello stesso albero di directory (la root: /) permette l'astrazione dei device hardware da parte del sistema operativo: per i programmi e gli utenti che accedono a determinati file non è importante conoscere o sapere su che tipo di dispositivo risiedono e possono accedere e gestire tutti i file con gli stessi strumenti, a prescindere dall'hardware su cui sono registrati.
LINK: Introduction to Linux file system - http://www.linuxnewbie.org/nhf/intel/filesys/filesysintro.html
HOWTO: Filesystems HOWTO - http://ldp.openskills.info/HOWTO/Filesystems-HOWTO.html
Tipo Infobox: PATH - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-09-09 16:06:59
In questo file vengono configurate le informazioni sui vari file system (da montare al boot o no) preimpostati sul sistema, vengono definiti i mount point, il tipo di file system ed altre informazioni.
Il suo formato prevede per ogni riga le seguenti informazioni:
1- Dispositivo da montare (es: /dev/hda1 o anche host:dir )
2- Mount point sul file system principale
3- File System Type da utilizzare (es: ext2, ext3, iso9660, nfs...)
4- Opzioni specifiche per il mount
5- Indica se il file system deve essere backuppato con il comando dump. Uno 0 indica NO.
6- Indica de deve essere fatto un file system check al boot. Uno 0 indica NESSUN CHECK.
Qui viene analizzato un tipico /etc/fstab su Linux.
Su SUN Solaris il file equivalente si chiama /etc/vfstab.
cat /etc/fstab
/dev/hda2 / ext2 defaults 1 1
/dev/hda1 /boot ext2 defaults 1 2
/dev/hdc1 /home ext2 defaults 1 2
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
/dev/hda7 /usr ext2 defaults 1 2
/dev/hdc2 /var ext2 defaults 1 2
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/hda3 swap swap defaults 0 0
In questo esempio la root ( / ) è montata sulla seconda partizione dell'hard disk IDE primary master ( /deb/hda2 ) e al suo interno monta altre directory che sono fisicamente presneti in altre partizioni di hda o in un secondo hard disk, il secondary master ( /dev/hdc ).
In questo caso tutti i file system su tutte le partizioni sono ext2, ma ogni partizione potrebbe avere un proprio file system.
Notare inoltre la partizione di swap in /dev/hda3, il /proc file system virtuale (che non ha mount point) e il device pts, che è un'interfaccia virtuale per i pseudo terminali (pts).
Considerare l'entry per il floppy, identificato da /dev/fd0 e montato in /mnt/floppy. Tra le opzioni di mount c'è specificato un noauto che indica di non motnare automaticamente il floppy all'avvio. I due zero a fine riga, inoltre, segnalano al sistema di non controllarlo al boot e di non usarlo per backup con il comando dump.
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-28 21:41:14
Permette di inserire un file system presente in un dato device nella struttura di directory principale del sistema, a partire dalla directory indicata.
Questa operazione viene definita "montare" e di fatto rende visibile al sistema il contenuto di dispositivi quali CD-ROM, floppy ma anche hard disk o file system di rete.
Il comando mount senza opzioni visualizza l'elenco dei file system attualmente montati nel sistema.
Nel file di configurazione /etc/fstab sono elencati i parametri di mounting dei vari dispositivi del sistema predefiniti: per montare le voci presenti in questo file basta specificare come parametro di mount la directory o il device.
Nel file /etc/mtab vengono visualizzati i file system attualmente montati sul sistema.
mount [opzioni] [device] [directory]
-a
Esegue il mount di tutti i file system elencati in /etc/fstab
-o opzione
Specifica le opzioni con cui montare il file system. Sono varie, incidono su diversi aspetti e possono essere specifiche per determinati tipi di file system: async, auto, defaults, dev, exec, noauto, nodev, noexec, nosuid, nouser, remount, ro, rw, suid, sync, user, check, conv, debug, errors.
-r
Esegue il mount del file system in sola lettura
-w
Esegue il mount del file system in lettura/scrittura (opzione di default)
-t tipo_fs
Specifica il tipo di file system da montare. Valori possibili: minix, ext, ext2, ext3, xiafs, hpfs, msdos, umsdos, vfat, proc, nfs, iso9660, smbfs, ncpfs, affs, ufs, romfs, sysv, xenix, coherent, reiserfs, jfs...
Esempi
mount -t vfat /dev/fd0 /mnt/floppy
Monta un floppy formattato sotto Windows sulla directory /mnt/floppy
mount -t iso9660 /dev/hdc /mnt/cdrom
Mount un CD presente nel lettore IDE Secondary master sulla directory /mnt/cdrom
mount -t nfs 192.168.0.10:/home/rpm /mnt/remote
Monta sulla directory /mnt/remote la condivisione NFS /home/rpm del server 192.168.0.10 (il serviazio portmap deve essere attivo sul client)
SOURCE: Man Pages - http://man.openskills.info/mount
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-28 21:44:38
Smonta il file system specificato e lo rende inaccessibile al sistema.
E' il comando che esegue l'operazione opposta a mount.
Qualsiasi operazione in corso sul filesytem da smontare viene conclusa e la struttura del file system segnata come pulita (clean).
umount [opzioni] [device|directory]
-a
Smonta tutti i file system montati (visualizzati in /etc/mtab)
-n
Smonta tutti i file system montati SENZA memorizzare le modifche in /etc/mtab
-t tipo
Smonta tutti i file system del tipo specificato.
Esempi
umount /dev/fd0
Smonta il floppy (operazione necessaria prima di estrarre fisicamente il dischetto). Questo comando è analogo a umount /mnt/floppy
(se il floppy è montato sulla directory /mnt/floppy.
umount /mnt/cdrom
Smonta il CDROM (se è montato sulla directory /mnt/cdrom). Nello specifico per i CDROM può essere usato il comando eject
che smonta ed espelle il CD.
SOURCE: Man Pages - http://man.openskills.info/umount
Tipo Infobox: BOFH - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-08-21 16:42:38
Con questo semplice comando è possibile visualizzare il contenuto di un file .iso (l'immagine di un CDROM da masterizzare) montandolo come un loop device su una directory del proprio file system.
Il kernel deve avere il supporto per i loop device (CONFIG_BLK_DEV_LOOP=y
) e, ovviamente, per il filesystem iso9660 usato su CDROM di dati (CONFIG_ISO9660_FS=y
).
Anche se generalmente non necessario potrebbe servire specificare il filesytem type utilizzato (-t iso9960) e, volendo, abilitare il verbose mode (-vv). Nell'esempio che segue si è montato il file iso sulla directory /mnt/floppy, che ovviamente può essere diversa ed avere un nome più appropriato:
[root@giraffa al]# mount -t iso9660 -o loop -vv /home/al/DOWNLOADS/damnsmall-0.4.4.iso /mnt/floppy/
mount: going to use the loop device /dev/loop0
set_loop(/dev/loop0,/home/al/DOWNLOADS/damnsmall-0.4.4.iso,0): success
mount: setup loop device successfully
/home/al/DOWNLOADS/damnsmall-0.4.4.iso on /mnt/floppy type iso9660 (rw,loop=/dev/loop0)
[root@giraffa al]# mount
[...]
/home/al/DOWNLOADS/damnsmall-0.4.4.iso on /mnt/floppy type iso9660 (rw,loop=/dev/loop0)
Se si vuole creare un file .iso direttamente dal contenuto di un CDROM, oltre ad usare programmi vari per masterizzare, basta il semplice comando:
dd if=/dev/cdrom of=/path/to/file.iso bs=32k
(l'immagine iso sarà scritta nel path specificato dopo of=).
Alternativamente, in modo ancor più diretto e semplice:
cat /dev/cdrom > /path/to/file.iso
Se si vuole creare un file .iso contenente i file presenti in una data directory, si può usare il comando mkisofs:
mkisofs -RJ -o file.iso /directory/
(tutto il contenuto presente in /directory/ verrà inserito nel file.iso (con path relativo))
SOURCE: ISO, CDR, and CDRW in Linux - http://www.geocities.com/rlcomp_1999/cdrw.html
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-08-13 17:59:03
Crea un filesystem (formatta) sulla partizione specificata. Corrisponde al format di Windows.
mkfs [-V ] [ -t tipo-fs ] [ opzioni-fs ] filesys [blocchi]
filesys
Può essere il nome di una partizione (es: /dev/hda1 ) o un mount point (es: /home )
-t tipo-fs
Indica quale filesystem creare. mkfs è di fatto il frontend generico che invoca la versione appropriata di mkfs (mkfs.fstype) a seconda del tipo di filesystem specificato dall'opzione -t
-c
Verifica il dispositivo cercando eventuali blocchi difettosi prima di creare il filesystem.
SOURCE: Man Pages - http://man.openskills.info/mkfs
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-28 20:53:30
L'utilizzo di un floppy disk su Unix e Linux è uguale a quello di altri dispositivi di memorizzazione.
Per usare un floppy disk vergine, bisogna prima formattarlo, con un file system specifico.
Per farlo con ext2, il file system nativo di Linux basta digitare da shell:
mkfs.ext2 /dev/fd0
Una volta formattato il floppy è pronto per essere montato:
mount -t ext2 /dev/fd0 /mnt/floppy
A questo punto il suo contenuto è visibile nella directory /mnt/floppy.
I file al suo interno possono essere accessibili come tutti gli altri file del sistema.
Chiaramente se il floppy è protetto fisicamente in scrittura, non sarà possibile scriverci o fare modifiche.
PRIMA di rimuovere fisicamente il floppy disk bisogna smontarlo, per essere sicuri che il sistema finisca di scrivere eventuali dati rimasti in memoria (Il sistema operativo, per motivi di performance non sempre esegue le operazioni di scrittura sul floppy nel momento in cui vengono richieste, a volte i dati da scrivere rimangono in memoria fino a quando non si forza un "flush" del file system, operazione automaticamente eseguita al momento dell'umount):
umount /dev/fd0
(F)AQ: Come si usano i floppy disk su Linux? -
Tipo Infobox: TIPS - Skill Level: 3- INTERMEDIATE - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2004-01-06 11:35:01
Come convertire un filesystem ext2 in modo che supporti le caratteristiche di journaling del filesystem ext3.
Grazie all'utilty di sistema tune2fs è possibile settare diversi parametri di un filesystem Linux. Questo software permette anche di convertire il formato di un filesystem, passando da ext2 a ext3:
root@Joker:/# tune2fs -j /dev/hda1
L'opzione -j permette di creare il file di journal al filesystem presente in /dev/hda1
tune2fs 1.27 (8-Mar-2002)
Creating journal inode: done
This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
Una volta convertito sarà possibile notare il file .journal
nella directory in cui viene montato.
La conversione può essere eseguita anche con il filesystem da convertire in stato unmounted ma è fondamentale che il kernel utilizzato abbia abilitato il supporto per per ext3, altrimenti in seguito sarà impossibile accedervi.
Infine è possibile modificare la relativa entry in /etc/fstab
, cambiando il terzo campo da ext2 in ext3:
root@Joker:~# cat /etc/fstab
[...]
/dev/hda1 /scambio ext2 defaults 1 0
Prima della conversione il filesystem in /dev/hda1 veniva montanto come ext2 sulla directory /scambio
root@Joker:~# cat /etc/fstab
[...]
/dev/hda1 /scambio ext3 defaults 1 0
Dopo la conversione si fa in modo che venga montato in /scambio come ext3
SOURCE: Red Hat Linux 9 - Ed. Apogeo - ISBN 88-503-2113-9 -
Tipo Infobox: ETCETERA - Skill Level: 2- JUNIOR - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2004-05-01 12:05:07
Explore2fs è un tool per Windows in grado di leggere partizioni partizioni disco di tipo ext2 ed ext3.
Questo software, attualmente alla versione 1.00 pre 6, scritto in in linguaggio Delphi da John Newbigin, viene rilasciato sotto licenza GPL. Si dimostra utile qualora si utilizzi un sistema dual boot Windows/Linux e si necessiti di accedere a partizion di tipo etx2 o ext3 da ambiente Microsoft.
Explore2fs funziona sotto Windows 95, Windows 98, Windows NT, Windows 2000 e Windows XP. Sebbene sia possibile usare il programma anche in scrittura, l'autore consiglia di utilizzarlo solamente in lettura, in quanto potrebbero essere presenti dei bug che potrebbero rendere illeggibile la partizione.
Il programma è composto da un solo eseguibile, che una volta avviato presenta un'interfaccia Explorer like, in stile Windows NT. Sulla sinistra vengono visualizzate le partizioni riconosciute, mentre sulla destra si può accedere ai file contenuti nelle varie directory.
LINK: Home Page Explore2fs - http://uranus.it.swin.edu.au/~jn/linux/explore2fs.htm
Attributi e permessi |
La gestione di attributi e permessi sui file: chmod, chown, chgrp. |
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-28 22:22:34
Modifica gli attributo di accesso su uno o più file. Solo il proprietario del file, o l'utente root, può modificarne gli attributi. E' un comando comune in tutti gli Unix.
chmod [opzioni] modo file
-c
(--changes) Visualizza informazioni sui file che vengono modificati
-R
(--recursive) Applica le modifiche alla directory indicata e a tutte le sue sottodirectory
--reference=file_origine
Applica al file specificato nella riga di comando gli stessi permessi che ha file_origine
-f
(--silent) Non stampa messaggi di errore sui file che non possono essere modificati
Esistono due diversi modi per definire i permessi su un file:
SYMBOLIC MODE
I permessi vengono definiti nella forma: chi-opcode-permesso.
CHI può essere:
u USER - Utente proprietario del file
g GROUP - Gruppo proprietario del file
o OTHER - Altri utenti
a ALL - Tutti gli utenti del sistema (default)
OPCODE può essere:
+ Aggiunge un permesso
- Rimuove un permesso
= Assegna un permesso (e rimuove tutti quelli non specificati)
PERMESSO può essere:
r READ - Lettura sul file
w WRITE - Scrittura sul file
x EXECUTE - Esecuzione del file (o apertura della directory)
s SET USER ID - Il file (comando) viene eseguito con i permessi dell'owner sul file system, anche quando viene eseguito da altri utenti. Questo attributo è a volte necessario in alcuni comandi lanciati da utenti normali che hanno accesso sul sistema con i permessi di root (es: traceroute).
t STICKY BIT - Normalmente un utente può cancellare tutti i file contenuti in una directory su cui ha permesso di scrittua, anche se non ha permessi di scrittura sul file stesso. Con lo Sticky bit impostato, ciò non è possibile: l'utente può cancellare il relativo file solo se ha permessi di scrittura sul file stesso
u Lascia i permessi correnti dell'utente owner
g Lascia i permessi correnti del gruppo owner
o Lascia i permessi correnti per gli altri utenti
OCTAL MODE
E' un metodo alternativo che permette di definire i permessi con un numero ottale composta da tre cifre:
la prima indica i permessi per l'utente owner, la seconda per il gruppo, la terza per gli altri.
I permessi vengono calcolati sommando i seguenti valori ottali:
4 - Lettura
2 - Scrittura
1 - Esecuzione.
In questo modo il permesso di lettura+scrittura+esecuzione si indica con il numero 7 (4+2+1), il permesso di lettura, esecuzione con 5 (4+1) e così via.
E' inoltre possibile indicare una quarta cifra (da far precedere alle 3 usuali) per permettere l'assegnamento dei seguenti permessi spciali:
4 - Imposta lo UserId per l'esecuzione
2 - Imposta il GroupID
1 - Imposta lo sticky bit.
Esempi
Per impostare i permessi totali all'owner, e solo in lettura a tutti gli altri si hanno le seguenti possibilità:
chmod 744 /home/file
chmod u=rwx,go=r /home/file
Per impostare permessi di sola lettura per l'owner e il group e nessun permesso per gli altri:
chmod 440 /home/file
chmod ug=r,o-rwx /home/file
Per impostare totali permessi per tutti gli utenti su un file:
chmod 777 /home/file
chmod ugo=rwx /home/file
Per impostare lo sticky bit su un file e permessi totali solo per l'owner e di sola lettura per il group:
chmod 1740 /home/file
chmod u=srwx,g=r,o-rwx
LINK: Set-User-ID Permission for Executable Files - http://heather.cs.ucdavis.edu/~matloff/UnixAndC/CLanguage/SetUserID.html
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-28 22:25:38
Cambia l'owner group di un file o directory. Comando comune in tutti gli Unix.
chgrp [opzioni] nuovo_gruppo file
-c
(--changes) Visualizza informazioni sui file che vengono modificati
-R
(--recursive) Applica le modifiche alla directory indicata e a tutte le sue sottodirectory
--reference=file_origine
Applica al file specificato nella riga di comando lo stesso gruppo proprietario che ha file_origine
-f
(--silent) Non stampa messaggi di errore sui file che non possono essere modificati
-v
(--verbose) Visualizza dettagliate informazioni su ogni file che chown tenta di modificare.
Esempi
chgrp users /tmp/data
Imposta users come owner group del file /tmp/data
chgrp -R wheel /tmp/datadir
Imposta wheel come wonder group della directory /tmp/datadir e di tutti i file e le sottodirectory che contiene
LINK: Man Pages - http://man.openskills.info/chgrp
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 15:47:52
Modifica il proprietario di uno più file. Può essere fatto solo da root o dal proprietario corrente del file.
E' un comando comune in tutti gli Unix.
chown [opzioni] nuovo_proprietario file
chown [opzioni] nuovo_proprietario:nuovo_gruppo file
-c
(--changes) Visualizza informazioni sui file che vengono modificati
-R
(--recursive) Applica le modifiche alla directory indicata e a tutte le sue sottodirectory
--reference=file_origine
Applica al file specificato nella riga di comando lo stesso proprietario che ha file_origine
-f
(--silent) Non stampa messaggi di errore sui file che non possono essere modificati
-v
(--verbose) Visualizza dettagliate informazioni su ogni file che chown tenta di modificare.
Esempi
chown al /var/tmp/alien
Imposta al come propietario del file /var/tmp/alien
chown beppe:beppe /home/file
Imposta owner beppe e group owner beppe al file /home/file
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-08-21 22:09:07
Tutti i sistemi Unix hanno una gestione standard dei permessi sui file, che rispecchia la natura di sistema operativo multiutente.
I permessi possono essere di lettura, scrittura e esecuzione e vengono differenziati sulla base della natura dell'utente rispetto al file o directory:
- utente proprietario owner del file
- gruppo proprietario owner group del file
- gli altri utenti others, che sono l'owner e non appartegono all'owner group.
Il permesso di esecuzione è necessario per poter accedere a delle directory e, ovviamente, permette l'esecuzione di file (script shell, perl, php, cgi; programmi binari compilati).
Per visualizzare i permessi di un file basta usare il comando ls -l
che per ogni file da un output simile a:
-rwxr-xr-- 1 mark admins 77266 Dec 13 17:18 /bin/command.sh
La prima colonna, composta da 10 caratteri, descrive i permessi sul file /bin/command.sh.
Il primo carattere (nell'esempio: -) identifica il tipo di file (directory, pipe, block o char device, symlink...);
I successivi 3 caratteri identificano i permessi in lettura/scrittura/esecuzione dell'owner di /bin/command.sh (in questo caso l'owner mark ha tutti i permessi sul file: rwx );
I successivi 3 identificano i permessi del gruppo owner di /bin/command.sh (in questo caso il gruppo admins ha permesso di lettura ed esecuzione sul file: r-x );
I successivi 3 identificano i permessi di tutti gli altri utenti del sistema (in questo caso hanno solo il permesso di lettura: r-- ).
Le successive colonne nell'output di ls -l indicano l'owner, il gruppo, la dimensione in byte, la data di ultima modifica e il nome del file.
Per modificare i permessi dei file si usa il comando chmod che usa una duplice sintassi per indicare i permessi:
read - lettura: Flag r in symbolic mode; Valore 4 in octal mode
write - scrittuta: Flag w in symbolic mode; Valore 2 in octal mode
execute - esecuzione: Flag x in symbolic mode; Valore 1 in octal mode
LINK: About.com : Unix file security - http://unix.about.com/library/weekly/aa090400a.htm
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-28 22:17:34
Tutti i programmi su un sistema Unix hanno i permessi di lettura e scrittura sul file system corrispondenti a quelli dell'utente di sistema, così come indicato in /etc/passwd
, con cui vengono eseguiti.
Può capitare, provando a installare e lanciare programmi diversi, che questi non riescano ad essere eseguiti o non funzionino correttamente.
Come sempre, in caso di problemi, un controllo dei log è la prima operazione da compiere.
Relativamente spesso la causa è proprio la mancanza di permessi per poter leggere o scrivere file (configurazione, log, dati, librerie condivise ecc.).
A volte il programma cerca determinati file in posizioni dove non si trovano (in questi casi un link può rapidamente, e in modo un po' "sporco" risolvere il problema), a volte non ha i permessi di lettura su file di configurazione o di dati, o sulle directory che li contengono, in altri casi può cercare di scrivere (tipicamente log e dati) su directory o file dove l'utente che ha lanciato il programma (può essere anche un utente di sistema, che lo esegue automaticamente al boot) non ha permessi di scrittura.
Un esempio ricorrente è la configurazione di Apache per gestire siti web, aggiornati via ftp da diverse persone.
In questo caso l'utente con cui gira Apache (di solito nobody o apache) deve poter avere permessi di lettura sui file che compongono il sito web (e di esecuzione sulle relative directory).
Contemporaneamente gli utenti che si collegano via ftp, devono poter scrivere sulle loro home directory, che sono anche le home dei relativi server web.
Spesso, su Linus e su altri Unix, le home directory degli utenti sono in /home e sono leggibili solo dai rispettivi owner:
ls -l /home/ | grep bacco
drwx------ 2 bacco bacco 18384 Aug 24 04:02 bacco
Se Apache fosse configurato per avere il dominio www.bacco.it con le proprie pagine in /home/bacco, non riuscirebbe a visualizzare il sito Web per mancanza di permessi.
Questi andrebbero allargati all'utente con cui viene eseguito da Apache:
chmod -R 750 /home/bacco
chgrp -R apache /home/bacco
Ottenendo un funzionale:
drwxr-x--- 2 bacco apache 18384 Aug 24 04:02 bacco
A volte, in preda a pigrizia o vittime dell'inconsapevolezza, si può avere la tentazione di allargare al massimo i permessi sui file che servono al programma che vogliamo far funzionare a tutti i costi:
chmod -R 777 /home/bacco
Ottiene un funzionale ma poco sicuro:
drwxrwxrwx 2 bacco bacco 18384 Aug 24 04:02 bacco
In questo modo Apache potrebbe tranquillamente visualizzare il sito di bacco, ma avrebbe anche permessi di scrittura non necessari, condivisi anche con tutti gli altri utenti del sistema, che avrebbero l'indebita possibilità di modificare le pagine di sito in /home/bacco.
Tipo Infobox: COMMANDS - Skill Level: 3- INTERMEDIATE - Autore: ivan 'kaharoth' molella - Ultimo Aggiornamento: 2002-12-18 19:24:02
chattr imposta gli attributi di un file su un file system linux di tipo ext2/ext3.
Andando a lavorare su particolari attributi peculiari di questi file system chattr non è un comando unix standard.
chattr [-RV] [-v versione ] [+/-= attrib] file ...
-R
Ricorsivo
-V
Stampa gli attributi modificati
-v versione
Imposta la versione di un file.
Attributi
a
il file può essere aperto solo in append mode.
c
il file è compresso/decompresso dal kernel su disco
d
Non verrà eseguito il backup su di esso dall' utility dump.
i
Il file non può essere modificato in alcun modo.
s
Il file è cancellato e i suoi blocchi sono azzerati e scritti su disco.
S
I cambiamenti sono scritti in modo sincrono su disco
u
Il file è cancellato e il suo contenuto è salvato per un eventuale ripristino.
NB: gli attributi 'c' ed 'u' non sono attualmente implementati.
Ricerca, confronto e filtri |
Ricerca nel file system: find, locate. Confronto e verifica di file: diff, md5sum. Filtri di output: grep, wc, sed, awk. |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-24 11:33:10
Su Unix esistono molteplici comandi per la ricerca di file, all'interno dell'albero delle directory. Si basano su principi diversi e si adattano a diversi usi.
find - Ricerca file contenuti nella directory indicata in base a svariati criteri, come il nome, la data di modifica, la dimensione ecc. Utile per molti scopi.
locate - Ricerca file che matchano un pattern specificato tramite un database che permette ricerche veloci e viene aggiornato col comando updatedb.
whereis - Visualizza i path di binari, sorgenti e manuali per un comando
which - Mostra la posizione di comandi eseguibili all'interno del proprio ambiente PATH.
whatis - Cerca la parola completa specificata all'interno del database whatis, contenente brevi descrizioni dei comandi del sistema. Il database viene creato con il comando makewhatis
apropos - Come whatis, ma esegue ricerche anche di parole parziali.
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Massimo 'maxgrante' Caselli - Ultimo Aggiornamento: 2002-10-24 16:58:23
Il comando grep permette di ricercare una determinata parola o REGEXP pattern all'interno di un file e stampa a video tutte le righe che lo matchano. E' comune in tutti gli Unix.
grep [opzioni] pattern [file]
Il file su cui operare può essere passato direttamente allo standard input di grep. Per esempio cat /var/log/maillog | grep [email protected]
visualizza tutte le righe che contengono [email protected] all'interno del file maillog.
-i
Ignora la distinzione tra minuscolo e maiuscolo
-l
Stampa solamente i nomi dei file (una sola volta per file) che contengono righe soddisfatte dall'espressione
-n
Precede ogni riga soddisfatta dall'espressione con il suo numero di riga relativo all'interno del file
-v
Non vengono mostrate le righe che contengono le stringhe soddisfatte, ma le rimanenti.
-c
Stampa il numero di righe per le quali è stata rintracciata una corrispondenza.
-r
Legge ricorsivamente tutti i file sotto la directory indicata.
-A#
Stampa # righe di testo precedenti a quella per la quale è stata trovata la corrispondenza
-B#
Stampa # righe di testo successive a quella per la quale è stata trovata la corrispondenza
-C#
Stampa # righe di testo precedenti e successive a quella per la quale è stata trovata la corrispondenza
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-24 11:33:46
Su Unix esistono vari comandi per confrontare file fra loro e verificare se sono diversi:
diff - Permette di fare un confronto fra il contenuto di due file di testo. Visualizza con un formato proprio le differenze e viene ampiamente utilizzato per creare delle patch di sorgenti.
diff3 - Come diff ma eseguito su 3 file.
bdiff - Come diff, ma lavora su file che possono essere divisi in più parti e quindi avere dimensioni anche molto grandi.
cmp - Compara due file ed esce con exit status diversi a seconda del risultato.
comm - Visualizza le righe diverse e quelle uguali in due file specificati.
dircmp - Compara il contenuto di 2 directory
Come sempre è possibile utilizzare vari comandi Unix comuni in script per ottenere risultati simili di confronto di file, del loro contenuto e di directory
Tipo Infobox: COMMANDS - Skill Level: 3- INTERMEDIATE - Autore: fulvio 'fulvio' montalbano - Ultimo Aggiornamento: 2002-09-07 11:48:38
Confronta due file di testo. diff restituisce le righe differenti dei due file file1 e file2.
L'output consiste di righe di testo indicanti anche il contesto di ognuno dei due file, con il testo di file1 contrassegnato da un simbolo . Le righe di contesto sono precedute dal comando ed (a, c o d) che potrebbe essere utilizzato per convertire file1 in file2. Se uno dei due file viene indicato con -, viene letto lo standard input. Se uno dei due file è una directory, diff rintraccia il file della directory con lo stesso nome del file indicato dall'altro argomento (Es.: diff my_dir junk ha lo stesso significato di diff my_dir/junk junk). Se entrambi gli argomenti indicano directory, diff restituisce le righe che sono differenti di tutte le possibili coppie di file con lo stesso nome (Es.: oldir/program e newdir/program); inoltre diff indica tutti i nomi di file presenti solamente in una delle due directory, così come le sottodirectory comuni a entrambi. Vedere anche CMP.
diff [opzioni] [opzioni_directory] file1 file2
-a, --text
Tratta tutti i file cpme file di testo. Utile per verificare se file binari sono identici
-b, --ignore-space-change
Ignora le sequenze di caratteri blank ed end-of-line, trattando le prime come un unico carattere blank.
-B, --ignore-blank-lines
Ignora le righe vuote nei files
-d, --minimal
Per velocizzare i confronti ignora i segmenti contenenti numerosi differenze e invia in uotput solo i gruppi di differenze minime.
-H
Velocizza l'output per file di grosse dimensioni ricercando solo piccole differenze; lunghe porzioni contenenti molte differenze non vengono visualizzate
-i, -- ignore-case
Ignora la differenza tra caratteri minuscoli e maiuscoli durante il confronto. I caratteri minuscoli e maiuscoli sono considerati come identici
-N, --new-file
Tratta i file inesistenti come file vuoti.
-q, --brief
Indica solo se i file sono differenti senza mostrarne le differenze.
-r, --recursive
Confronta le sottodirectory ricorsivamente
-s, --report-identical-files
Indica se i file soono diversi
-S nomefile, --starting-file=nomefile
Per i confronti di directory, inizia con il file nomefile, saltando i file che lo precedono nell'ordine standard di elencazione
-T, --initial-tab
Inserisce caratteri tab iniziali alle righe di putput per allineare correttamente i tab
-X nomefile, --exclude-from=nomefile
Non confronta i file di una directory i cui nomi corrispondono ai pattern descritti nel file nomefile.
SOURCE: Man Pages - http://man.openskills.info/diff
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: fulvio 'fulvio' montalbano - Ultimo Aggiornamento: 2002-09-07 11:44:39
Confronta file1 e file2. Utilizza lo standard input se file1 vale - o è mancante. Vedere anche diff. I file possono essere di qualunque tipo. Skip1 e skip2 rappresentano degli offset opzionali nei file di corrispondenza dei quali deve partire il confronto.
cmp [opzioni] file1 file2 [skip1[skip2]]
-c, --print-chars
Stampa i byte differenti come caratteri
-i num, --ignore-initial=num
Ignora i primi num byte dell'input.
-l, --verbose
Stampa gli offset e i codici di tuttii byte differenti
-s, --quiet, --silent
Lavora in silenzio, senza stampare alcun messaggio, ma restituendo i seguenti codici:
0 I file sono identici
1 I file sono differenti
2 I file sono inaccessibili
Questa opzione è utile in script, per eseguire operazioni diverse se due file sono uguali o diversi.
SOURCE: Man Pages - http://man.openskills.info/cmp
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Max 'vm' Villa - Ultimo Aggiornamento: 2004-05-23 15:51:01
Mostra la breve descrizione di un comando cercando la parola chiave all'interno di un set di file di database whatis. Il database in questione viene rigenerato utilizzando il comando /usr/lib/makewhatis.
Simile al comando apropos, fatta eccezione che ricerca soltanto parole complete.
Equivalente a man -f.
Comando comune a tutti gli Unix.
Esempio:
[root@localhost root]# whatis ifconfig
ifconfig (8) - configure a network interface
SOURCE: Man Pages - http://man.openskills.info/whatis
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 15:48:37
Molti comandi Unix sono utilizzati come filtri per modificare il testo in input e presentarlo con l'output voluto. Vediamo alcuni dei filtri più comuni e, in genere, i comandi Unix utili per manipolare testi:
grep - Seleziona in file o nello standard input le righe di testo che contengono il pattern specificato. Es: Tutti le righe che contengono la scritta "bash".
sed - E' un flessibile e sofisticato strumento per modificare l'input secondo varie regole e match
sort - Ordina le righe del testo in input secondo criteri vari
tr - Converte o rimuove caratteri all'interno di un testo
cut - Ritaglia colonne o campi da un file, visualizzandone solo la parte selezionata
wc - Conta il numero di righe o di caratteri in un file
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Max 'vm' Villa - Ultimo Aggiornamento: 2002-09-07 10:38:51
Elenca il percorso completo del comando eseguibile all'interno del proprio ambiente PATH.
Comando comune a tutti gli Unix.
which [opzioni] [comando]
-a
(--all) Stampa tutte le corrispondenze.
--skip-dot
Salta le directory che iniziano con un punto.
-i
(--read-alias) Legge gli alias dell'input standard e scrive le corrispondenze sull'output standard. Utile per usare un alias per which.
--skip alias
Utile per trovare file binari normali mentre si usa --read-alias
in un alias per which.
SOURCE: Man Pages - http://man.openskills.info/which
Tipo Infobox: COMMANDS - Skill Level: 3- INTERMEDIATE - Autore: Massimo 'maxgrante' Caselli - Ultimo Aggiornamento: 2002-10-24 18:52:19
Il comando sort permette di ordinare le righe contenute in un file secondo criteri configurabili.
E' un comando comune in tutti gli Unix e viene tipicamente utilizzato come filtro.
sort [opzioni] [file]
-b
Ignora gli spazi e i caratteri di tabulazioni all'inizio e alla fine delle righe
-c
Verifica se i file sono già ordinati e, in tal caso non produce output
-f
Ignora la differenza fra caratteri minuscoli e maiuscoli
-i
Ignora i caratteri non stampabili
-n
Effettua un ordinamento numerico
-o file
Memorizza l'output nel file specificato
-r
Inverte l'ordinamento
-u
Le righe doppie vengono riportate in output una sola volta
-M
Tratta i primi tre caratteri come sigla di mese (Jan, Feb, etc...)
-t carattere
Utilizza il carattere indicato come delimitatore di campo (default è lo spazio)
+#
Esegue l'ordinamento sulla base del campo #+1
Tipo Infobox: BOFH - Skill Level: 3- INTERMEDIATE - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2003-12-26 00:11:03
Permette di individuare quali servizi sono attivi al runlevel 3, quello tipicamente utilizzato su una macchina server.
Filtrando opportunamente l'output del comando chkconfig --list
è possibile visualizzare informazioni formattate relative al runlevel di interesse:
[root@vagante root]# chkconfig --list | grep '3:on' | sort | awk '{ print $1 $5 }'
apmd3:on
autofs3:on
crond3:on
cups3:on
gpm3:on
iptables3:on
isdn3:on
keytable3:on
kudzu3:on
netfs3:on
network3:on
nfslock3:on
portmap3:on
random3:on
sendmail3:on
sshd3:on
syslog3:on
xinetd3:on
L'opzione --list visualizza l'elenco di tutti i servizi di sistema, tramite grep vengono filtrati sono quelli attivi (on), tramite sort vengono ordinati alfabeticamente e tramite awk vengono stampati il primo campo, contentene il nome del servizio ed il quinto, contentente il valore relativo al runlevel 3
Con poche modifiche, in particolare al parametro di grep ed al print di awk è possibile adattare questa command line a stampare i valori relativi ad altri runlevel (se avessivo voluto visualizzare i dati relativi al runlevel 5 avremmo impostato il relativo valore nel grep ed il campo $7 come secondo parametro del print di awk).
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: fulvio 'fulvio' montalbano - Ultimo Aggiornamento: 2004-05-23 15:51:48
Confronta le righe comuni ai file specificati e produce un output su tre colonne:
righe presenti solo nel primo file,
righe presenti solo nel secondo file,
righe comuni a entrambi i file.
comm è simile a diff nel fatto che entrambi i comandi confrontano due file. Però comm può essere utilizzato anche come uniq; infatti comm seleziona le righe duplicate o uniche tra i due file ordinati, mentre uniq seleziona le righe duplicate o uniche all'interno del medesimo file ordinato.
comm [opzioni] file1 file2
-
Legge lo standard input
-num
Sopprime la stampa della colonna num. E' possibile specificare più colonne, non separate da spazi
SOURCE: Man Pages - http://man.openskills.info/comm
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Max 'vm' Villa - Ultimo Aggiornamento: 2004-05-23 15:54:58
Mostra una breve spiegazione di una serie di comandi che riguardano una determinata parola chiave.
Si comporta come whatis, eccetto per il fatto che ricerca una o più stringhe all'interno del set di file del database whatis (il suo argomento quindi non è il nome di un comando ma una parola generica).
Il database in questione viene rigenerato con il comando /usr/lib/makewhatis. Equivale a man -k.
Comando comune a tutti gli Unix.
Esempio:
[root@localhost root]# apropos routing
ip (8) - TCP/IP interface configuration and routing utility
NETLINK_ROUTE [rtnetlink] (7) - Linux IPv4 routing socket
netstat (8) - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
route (8) - show / manipulate the IP routing table
rtnetlink (7) - Linux IPv4 routing socket
SOURCE: Man Pages - http://man.openskills.info/apropos
Tipo Infobox: DESCRIPTION - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 15:49:25
AWK è un linguaggio di programmazione che esegue azioni definibili sulla base del matching di pattern definibili.
Il suo input (un file o lo standard output di un comando) viene processato una riga alla volta e se la riga soddisfa il pattern specificato, AWK esegue l'azione specificato, scrivendo su standard output il risultato di questa azione.
E' comune in tutti gli Unix, su Linux si trova l'implementazione GNU, chiamata con la solita fantasia gawk e, come spesso accade, con una serie di funzionalità aggiunte.
In questo contesto ci limiteremo a fare alcuni esempi che possono dare un'idea delle potenzialità di awk, della logica del suo funzionamento e della sua estrema utilità in molte attività di system administration.
Le regole che awk deve seguire possono essere scritte in un file o direttamente inserite fra apici negli argomenti del comando:
awk -f file_delle_regole file_di_testo_da_processare
è analogo a:
awk 'regole' file_di_testo_da_processare
ed etrambi sono analoghi a:
cat file_di_testo_da_processare | awk -f file_delle_regole
Le regole hanno di base un formato tipo:
pattern { azione }
dove pattern indica il matchind secondo criteri vari e l'azione quello che awk genera sullo standard output per ogni riga di testo nello standard input che soddisfa il pattern stabilito.
Vediamo alcuni esempi pratici, che possono chiarire molto meglio ed iniziare ad aprirci gli occhi sul versatile mondo di awk.
Visualizzo l'output di un normale comando (ma si possono immagina le variazioni sul tema):
ls -l
total 304
-rw-r--r-- 1 root root 11142 Aug 23 18:36 config.ini
drwxr-xr-x 2 shiva shiva 4096 Sep 3 22:25 docs/
-rw-r--r-- 1 root root 2807 Aug 23 16:49 installer.ini
-rw-r--r-- 1 root root 23264 Aug 23 16:49 license.txt
-rwxr-xr-x 1 root root 1449 Aug 23 16:49 netscape-installer*
-rwxr-xr-x 1 root root 249564 Aug 23 16:49 netscape-installer-bin*
-rw-r--r-- 1 root root 7995 Aug 23 16:49 README
Redireziono l'output del comando allo stdin di awk:
ls -l | awk '{print $1}'
total
-rw-r--r--
drwxr-xr-x
-rw-r--r--
-rw-r--r--
-rwxr-xr-x
-rwxr-xr-x
-rw-r--r--
Qui non viene specificata nessuna regola di matching e per tutte le righe di input awk stampa il primo campo ($1) Di default awk considera lo spazio come carattere di separazione fra i campi di una riga e non fa distinzione (ovviamente) fra righe con sintassi, significato e formato diversi (la prima rispetto a tutte le altre).
Per stampare il nono campo di ogni riga basta sostituire $1 con $9:
ls -l | awk '{print $9}'
config.ini
docs/
installer.ini
license.txt
netscape-installer*
netscape-installer-bin*
README
Se il nono campo non esiste, non viene stampato (della prima riga dell'ls -l originario non c'è più traccia).
Per stampare l'intera riga e non solo alcuni campi uso $0.
E se voglio iniziare a introdurre qualche regola di matching uso una simile sintassi:
ls -l | awk '$3 == "root" {print $0}'
-rw-r--r-- 1 root root 11142 Aug 23 18:36 config.ini
-rw-r--r-- 1 root root 2807 Aug 23 16:49 installer.ini
-rw-r--r-- 1 root root 23264 Aug 23 16:49 license.txt
-rwxr-xr-x 1 root root 1449 Aug 23 16:49 netscape-installer*
-rwxr-xr-x 1 root root 249564 Aug 23 16:49 netscape-installer-bin*
-rw-r--r-- 1 root root 7995 Aug 23 16:49 README
In questo caso il pattern matching è piuttosto semplice: eseguo l'azione fra parentesi graffe solo per le righe in cui il terzo campo coincide con la stringa "root".
L'output di awk può essere opportunamente editato e, ovviamente, redirezionato all'input di altri comandi:
ls -l | awk '$3 == "shiva" {print "rm -Rf " $9}' | sh
Qui, su stdout non compare nulla, ma come ci si può immaginare la directory docs/, con owner shiva, è stata rimossa. Notare che awk permette di stampare stringhe arbitrarie nelle sue azioni. Notare che lo spazio, all'interno dei doppi apici, dopo rm -Rf è necessario.
Questo è solo l'inizio, AWK è un vero e proprio linguaggio di programmazione interpretato, che presenta direttive BEGIN-END (vengono eseguite solo prima e dopo il processing dell'input), cicli IF-ELSE, variabili speciali, numerose variazioni e metodi per il matching di pattern (amggiore, minore, diverso, ecc), funzioni varie ecc.
E' molto utile per ripetere automaticamente operazioni simili secondo criteri predefinibili: di fatto esattamente quello che un sysadmin ama fare: automatizzare compiti noiosi ed evitare di digitare le quasi stesse cose per più di 3 volte di seguito.
SOURCE: Introduction to Unix: AWK - http://physinfo.ulb.ac.be/cit_courseware/unix/awk000.htm
LINK: DMOZ: Awk - http://dmoz.org/Computers/Programming/Languages/Awk/
LINK: AWK questo sconosciuto - http://www.pluto.linux.it/journal/pj9809/awk.html
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Max 'vm' Villa - Ultimo Aggiornamento: 2002-09-07 10:36:15
Trova i file binari, i sorgenti e le pagine di manuale relative ad un determinato comando. I nomi forniti vengono prima ripuliti del percorso e di qualsiasi estensione (in formato .ext). whereis tenta poi di localizzare il programma desiderato nelle directory standard (p.es. /bin, /etc, /usr/bin, /usr/local/bin/, ecc.)
whereis [opzioni] [file]
-b
Ricerca solamente file binari.
-m
Ricerca solamente le sezioni del manuale.
-s
Ricerca solo i sorgenti.
-f
Evidenzia con un terminatore l'ultima directory dell'elenco e segnala l'inizio dei nomi di file; inoltre deve essere utilizzata con una delle opzioni -B, -M, -S.
-B
[directory] Modifica o limita il percorso nel quale whereis cerca i file binari.
-M
[directory] Modifica o limita il percorso nel quale whereis cerca le sezioni di manuale.
-S
[directory] Modifica o limita il percorso nel quale whereis cerca i file sorgente.
SOURCE: Man Pages - http://man.openskills.info/whereis
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Max 'vm' Villa - Ultimo Aggiornamento: 2004-05-23 15:56:18
Trova un file all'interno di uno o più database di nomi di file e stampa le corrispondenze trovate.
Locate effettua la ricerca all'interno di un database che si aggiorna tramite il comando updatedb, che, tipicamente, viene schedulato per essere eseguito almeno una volta al giorno.
Un programma appena installato non può quindi essere trovato con locate fino a quando non viene eseguito updatedb e ricreato il relativo database.
locate [opzioni] [pattern]
-d
[percorso] (--database=percorso) Ricerca i database nel percorso specificato.
SOURCE: Man Pages - http://man.openskills.info/locate
Tipo Infobox: COMMANDS - Skill Level: 3- INTERMEDIATE - Autore: Max 'vm' Villa - Ultimo Aggiornamento: 2002-10-06 17:59:13
Comando estremamente utile per cercare particolari gruppi di file; funziona percorrendo l'albero delle directory a partire da ogni percorso indicato dall'argomento percorsi_di_file e rintraccia i file che soddisfano determinate condizioni. Il percorso di default è la directory corrente.
Comando comune a tutti gli Unix.
find [percorsi_di_file] [condizioni]
-print
Stampa file e directory per i quali sono verificate le condizioni imposte, mostrandone il percorso completo.
-name
[pattern] Trova i file i cui nomi contengono una corrispondenza con i pattern.
-iname
[pattern] Versione insensibile alle maiuscole-minuscole di -name.
-type
[x] Cerca file di vario tipo: b (file speciale di blocco), c (file speciale di caratteri), d (directory), p (fifo o pipe), l (link simbolico), s (socket), oppure f (file normale).
-follow
Segue i link simbolici e tiene traccia delle directory visitate (non usare con -type l)
-exec
[comando { } \;] Esegue il comando Unix, a partire dalla directory di partenza su ogni file per il quale find ha tracciato una corrispondenza. All'esecuzione del comando, l'argomento { } sostituisce il file corrente.
-size
[n(c)] Cerca i file contenenti n blocchi, o se c è specificato, lunghi n caratteri.
-mtime
[+n | -n | n] Trova tutti file che sono stati modificati più di n (+n), meno n (-n), o n giorni prima della data corrente. La modifica riguarda il cambiamento della data del file.
-atime
[+n | -n | n] Trova tutti i file per i quali l'ultimo accesso risale a più di n (+n), meno di n (-n), o esattamente n giorni prima della data corrente. E' importante notare che find modifica la data/ora.
-ctime
[+n | -n | n] Trova tutti i file modificati più di n (+n), meno di n (-n), o esattamente n giorni prima della data corrente.
-user
[utente] Cerca i file il cui proprietario è l'utente.
-ok
[comando { } \;] Come -exec, con la differenza che chiede all'utente la conferma (y) per eseguire il comando.
-path
[pattern] Cerca i file i cui nomi contengono una corrispondenza con il pattern.
-ipath
[pattern] Versione insensibile alle maiuscole-minuscole di -path.
-depth
Processa i file contenuti in ciascuna directory prima della directory stessa. Utile se i file risiedono in directory non scrivibili.
-xdev
Dice a find di non cambiare filesystem. Utile quando occore cercare qualcosa nel file system di root.
-cnewer
[file] Cerca i file cambiati dopo la loro ultima modifica.
-nouser
Cerca file per i quale lo userID non corrisponde ad alcun utente.
-noleaf
Toglie l'ottimazione che dice "una directory contine due sotto directory in meno, da indicare del conteggio dei link". Questa azione è necessaria quando si effetuano ricerche all'interno di filesystem che non seguono le convenzioni Unix.
-newer
[file] Cerca i file modificati più di recente; simile a -mtime.
-anewer
[file] Cerca file per i quali si è verificato un accesso dopo l'ultima modifica.
-cnewer
[file] Cerca file cambiati dopo l'ultima modifica.
-cmin
[+n | -n | n] Cerca file modificati più di n (+n), meno di n (-n), o esattamente n minuti prima dell'ora corrente.
-daystart
Calcola i tempi a partire dall'inizio del giorno corrente, non da 24 ore prima.
SOURCE: Man Pages - http://man.openskills.info/find
Tipo Infobox: COMMANDS - Skill Level: 3- INTERMEDIATE - Autore: Massimo 'maxgrante' Caselli - Ultimo Aggiornamento: 2002-10-24 18:23:58
Il comando cut è un filtro che di uno o più file in input visualizza solo le colonne, i caratteri o i campi selezionati.
E' possibile definire quale carattere viene considerato per separare campi diversi
Nell'elenco che segue considerare che list è una sequenza di interi in cui la virgola viene utilizzata per valori distinti e il trattino per intervalli di valori (es: 1,3 indica 1 e 3; 1-3 indica da 1 a 3)
cut [option] [file]
-c list
Stampa solo i caratteri nella posizione definita in list
-d carattere
Definisce quale carattere considerare per separare i campi in ogni riga. Va utilizzato insieme a -f
-f list
Visualizza i campi identificati da list
-s
Utilizzato con -f per sopprimere le righe che non contengono delimitatori
Alcuni esempi possono essere illuminanti. Prendiamo /etc/passwd.
Per visualizzare solo i nomi degli utenti e la shell impostata (campi 1 e 7, usando i : come delimitatore di campo):
[al@95 al]$ cat /etc/passwd | cut -d: -f 1,7
root:/bin/bash
bin:/sbin/nologin
[...]
mysql:/bin/bash
Per visualizzare solo i primi 5 caratteri di ogni riga:
[al@95 al]$ cat /etc/passwd | cut -c1-5
root:
bin:x
[...]
mysql
SOURCE: Guida Unix università di trieste - http://www.univ.trieste.it/~nircdc/doc/oldunix/DUsfs.10.7.4.html
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Massimo 'maxgrante' Caselli - Ultimo Aggiornamento: 2004-05-23 15:57:00
Questo comando stampa informazioni sul numero di caratteri, di parole e di righe dei file. Se l'argomento file non viene valorizzato, legge i dati dallo standard input. E' comune in tutti gli Unix.
wc [opzioni] [file]
-c, -bytes
Stampa solamente il conteggio dei caratteri
-l, --lines
Stampa solamente il conteggio delle righe
-w, --words
Stampa solamente il conteggio delle parole
Tipo Infobox: COMMANDS - Skill Level: 3- INTERMEDIATE - Autore: Marco 'nxm' Naimoli - Ultimo Aggiornamento: 2003-12-08 22:59:14
Applica un comando ad una lista di file ricevuta da standard input.
xargs [opzioni] [comando] [argomenti]
[comando]
un comando qualsiasi del sistema, script o binario eseguibile (default /bin/echo)
[argomenti]
argomenti del [comando]
-0
Interpreta lo standard input come una serie di filename separati dal "null character" (deve normalmente essere associata all'opzione "-print0" di find). Il suo utilizzo è richiesto quando i filename contengono spazi
-l num
vengono passati al [comando] blocchi di "num" linee alla volta al posto del massimo consentito dalla shell
-i[stringa]
ogniqualvolta appaia [stringa] in [argomenti] essa viene sostituita da una entry della lista in standard input (default "{}")
Tipo Infobox: BOFH - Skill Level: 3- INTERMEDIATE - Autore: Marco 'nxm' Naimoli - Ultimo Aggiornamento: 2003-12-08 23:00:41
Cerca la [stringa] (in modo case insensitive) all'interno di tutti i files presenti nella directory /var/log e in tutte le sue sottodirectory
find /var/log -type f -print | xargs grep -i [stringa]
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-08-27 05:00:03
Esistono diversi algoritmi che dato un input qualsiasi danno come output una stringa univoca di caratteri, di lunghezza fissa, a prescindere dalle dimensioni dell'input.
Questi algoritmi di "digesting", dal momento che anche minime differenze nell'input generano output totalmente diversi, possono essere utilizzati per verificare l'integrità di file (o messaggi di posta elettronica, o qualsiasi elemento binario o ascii).
Uno degli algoritmi più utilizzati è MD5, che crea un outout fisso (Hash) da un qualsiasi input.
Dall'output non è più possibile risalire all'input, e se lo stesso file da output diversi è stato sicuramente modificato.
IL comando per ottenere un hash MD5 da un file è md5sum e viene correntemente utilizzato per "firmare" programmi scaricabili da Internet e dare la certezza che sono versioni uguali a quelli ufficialmente rilasciate dal produttore.
SOURCE: md5, md5sum and related topics - http://hills.ccsf.org/%7Ejharri01/project.html
Tipo Infobox: BOFH - Skill Level: 4- ADVANCED - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 16:00:53
Cerca in tutto il file system file o directory che terminano con .log
L'opzione -name accetta REGEXP comuni e permette ricerche molto efficaci basate sui nomi dei file.
find / -name "*.log" -type f -print
/home/al/.rhopenoffice1.1/setup.log
/etc/logrotate.d/vsftpd.log
/usr/lib/rpm/rpm.log [...]
La shell è l'interfaccia testuale Unix per definizione: l'interprete dei comandi, il compagno di tastiera, da decenni, di innumerevoli sistemisti Unix.
La shell non viene usata solo per ricevere comandi in modalità interattiva dall'utente ma anche per gestire script di varia complessità, di fatto è parte integrante del sistema operativo: tutto quello che succede dopo che viene caricato il kernel è un districato insieme di script shell, che richiamano programmi, impostano parametri, lanciano applicazioni e servizi e "costruiscono" durate il boot il sistema operativo come si presenta all'utente.
E' fondamentale comprendere:
- i principi di redirezionamento e pipe
- come fare uno script shell
- come usare variabili e cicli in uno script shell
- la logica degli script di inizializzazione della shell
- cosa è l'ambiente (environment) e le sue variabili
Per approfondimenti: Ambiente Shell e scripting
Sapere cosa è in esecuzione sul proprio sistema è un ottimo inizio per conoscerlo.
Un sistemista Linux bene o male riconosce ogni singolo processo in esecuzione sul suo sistema e di questo sa come gestirlo, quando viene eseguito e può sapere cosa sta facendo.
Conoscere la natura degli output di comandi come ps, top e vmstat equivale a capire esattamente cosa succede sul sistema, quali sono i colli di bottiglia quando è rallentato e diagnosticare eventuali problemi.
Analogamente è utile saper usare kill per gestire un processo.
Riferimenti su come visualizzare e gestire processi sono in I Processi
Informazioni sui metodi e gli strumenti per diagnosticare il funzionamento di un processo sono in Debugging dei processi
Ambiente shell e scripting |
L'ambiente shell e lo scripting: variabili d'ambiente, cicli, strutture base. |
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-28 00:04:51
Unix è un sistema operativo nato nei primi anni 70, grazie all'opera di monumenti dell'informatica quali Ken Thompson, Dennis Ritchie (l'inventore del C, per intenderci) e vari altri.
Uno dei motivi che rende Unix un sistema operativo attuale e perfettamente adattabile a sistemi che ai tempi non si concepivano neppure è la sua filosofia di base: KISS (Keep It Simple, Stupid).
E' il principio dei tanti piccoli mattoni, ognuno necessario per fare bene un compito specifico, messi insieme per fare compiti più complessi. Questo approccio facilita il troubleshooting, riduce i tempi di sviluppo, non dovendo "reinventare la ruota" ogni volta, , aumenta la possibilità di sviluppare un sistema in modo collaborativo distribuito e, evidentemente, permette una scalabilità e una adattabilità ineguagliate.
La shell è un interprete di comandi che funge sia da layer fra il kernel del sistema operativo e l'utente sia come linguaggio di programmazzione avanzato.
Un programma in shell è chiamato script e presenta un metodo facile e veloce per automatizzare operazioni ripetitive.
Conoscere lo shell scripting language e saperlo applicare per risolvere problemi di ordinaria e straordinaria amministrazione è una delle funzioni basilari del system administrator.
Saper scrivere uno script shell non è complicato, poichè la sintassi è semplice e la filosofia su cui bisogna basarsi nella realizzazione è la stessa dalla quale nasce unix: spezzare un progetto laborioso in tanti e semplici task.
Un bravo e produttivo sistemista Unix, quindi, è colui in grado di mettere insieme i mattoni che gli servono, creando script di "collante" che inglobano altri script con funzioni specifiche, magari pure scritti in linguaggi diversi.
E' colui che è pienamente consapevole che la macchina è al suo servizio e non viceversa, che ne può vedere e cambiare gli elementi con un semplice vi, che riesce a non ripetere due volte la stessa operazione, perchè la prima volta che l'ha fatto ha già creato uno script che lo fa per lui.
L'arte dell'automazione dei processi è strettamente legata alla conoscenza dalla bash (o della shell che si utilizza) e delle sue capacità di scripting.
I principi di massima per impratichirsi sono semplici:
- Avere obiettivi chiari, facendosi un percorso logico dei processi da effettuare;
- Guardare gli script esistenti scritti da altri, notare come vengono affrontati i problemi, come si usano le variabili e i cicli logici;
- Impratichirsi costantemente;
- Approfondire lo studio delle opzioni dei programmi che servono. Spesso risolvono molti problemi e aprono nuove prospettive sui risultati che si possono raggiungere.
Una distribuzione Linux o un sistema Unix è di fatto un insieme di script e comandi che vengono eseguiti al boot dopo il caricamento del kernel, ed è un'ottima fonte di apprendimento di tecniche di scripting e automazione.
HOWTO: BASH Programming - Introduction HOW-TO - http://ldp.openskills.info/HOWTO/Bash-Prog-Intro-HOWTO.html
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'ask' Nasuti - Ultimo Aggiornamento: 2003-11-27 23:54:29
La Shell è il programma di interfacciamento tra l'utente e il sistema operativo in grado di interpretare ed eseguire le richieste dell'utente.
La shell dispone di frasi proprie, di controllo di flusso, variabili, metacaratteri che combinati a comandi del sistema fa della shell un vero e proprio linguaggio di programmazione a comandi.
Quando ci si trova ad eseguire in modo ripetitivo comandi o sequenze di comandi abbastanza complesse è consigliabile scrivere tali comandi in un file ed esegulirlo ogni volta che occorre.
I file contenenti comandi shell si chiamano SCRIPT (procedure), per poter esser eseguiti questi file devono avere l'attributo di esecuzione (chmod +x
file).
La selezione di quale shell (bash, csh, ksh) eseguirà lo script è indicata nella prima riga del file:
- nel caso la prima riga contiene solo il carattere #
sarà eseguita la shell da cui è stato lanciato lo script;
- se contiene #!pathname viene utilizzata la shell indicata (es: #!/bin/ksh
)
- se non viene indicato nulla verrà interpretato da una Bourne Shell.
Per creare uno script shell quindi basta:
- Creare un nuovo file di testo con un editor come vi: vi prova
;
- Iniziare il file con una riga che identifica l'interpreta da usare: #!/bin/bash
- Scrivere nelle righe successive i comandi e le istruzioni che si intendono eseguire nello script
- Salvare il file e renderlo eseguibile: chmod 755 prova
- Eseguire il file: ./prova
.
NOTA: Se si edita un file su Windows o DOS fare attenzione ai caratteri speciali di fine riga che Windows introduce e che rendono impossibile l'esecuzione di uno script shell su Linux. Usare il comando dos2unix prova
per converire i caratteri ESC di fine riga Windows (LF,CR) nell'analogo Unix (CR).
HOWTO: Advanced Bash-Scripting Guide - http://ldp.openskills.info/LDP/abs/html/
HOWTO: Bash Prompt HOWTO - http://ldp.openskills.info/HOWTO/Bash-Prompt-HOWTO/index.html
Tipo Infobox: ETCETERA - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-09-12 13:21:41
I file di inizializzazione possono variare su Shell e sistemi operativi diversi.
Qui si analizzano quelli di tutte le shell disponibili su Solaris. In genere sono validi per tutti i dialetti Unix.
BOURNE SHELL
File di inizializzazione globali:/etc/profile
File eseguiti al login dell'utente: $HOME/.profile
File eseguiti all'apertura della shell dopo il login: --
PATH della shell: /bin/sh
KORN SHELL
File di inizializzazione globali:/etc/profile
File eseguiti al login dell'utente: $HOME/.profile
- $HOME/.kshrc
File eseguiti all'apertura della shell dopo il login: $HOME/.kshrc
PATH della shell: /bin/ksh
C SHELL
File di inizializzazione globali:/etc/.login
File eseguiti al login dell'utente: $HOME/.cshrc
File eseguiti all'apertura della shell dopo il login: --
PATH della shell: /bin/csh
Z SHELL
File di inizializzazione globali:/etc/zshenv
- /etc/zprofile
- /etc/zshrc
- /etc/zlogin
File eseguiti al login dell'utente: $HOME/.zshenv
- $HOME/.zprofile
- $HOME/.zlogin
File eseguiti all'apertura della shell dopo il login: $HOME/.zshrc
PATH della shell: /bin/zsh
BASH
File di inizializzazione globali:/etc/profile
File eseguiti al login dell'utente: $HOME/.bash_profile
- $HOME/.bash_login
- $HOME/.profile
File eseguiti all'apertura della shell dopo il login: $HOME/.bashrc
PATH della shell: /bin/bash
TC
File di inizializzazione globali:/etc/csh.cshrc
- /etc/csh.login
File eseguiti al login dell'utente: $HOME/.tcshrc
o $HOME/.cshrc
File eseguiti all'apertura della shell dopo il login: --
PATH della shell: /bin/tcsh
Tipo Infobox: TIPS - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-27 23:44:20
Tramite gli script di inizializzazione è possibile customizzare l'ambiente shell in cui si lavora, modificando e impostando i valori di variabili d'ambiente (valide per ogni processo gestito dall'utente) o di variabili locali (valide solo la shell corrente).
Le variabili d'ambiente più comuni sono:
LOGNAME
La login dell'utente. Viene impostata al login.
USER
L'utente corrente. Può essere diverso da LOGNAME se l'utente ha fatto un 'su'.
HOME
Il path dell'home directory dell'utente. Viene impostata al login.
SHELL
Il path della shell di default. Viene impostata al login.
PATH
I path di default in cui la shell cerca comandi da eseguire. Viene impostata al login.
MAIL
Il path della casella postale dell'utente. Viene impostata al login.
TERM
Il tipo di terminale corrente.
PWD
La directory di lavoro corrente.
PS1
Il prompt della shell (per Bourne e Korn shell)
prompt
Il prompt della shell (per la C shell)
EDITOR
Il text editor di default (usato nella shell e in comandi quali crontab -e)
DISPLAY
Dove viene visualizzato il Display di un X server
Per impostare o modificare una variabile d'ambiente ci sono diversi metodi a seconda della shell utilizzata:
Bourne, Bash e Korn Shell: VARIABILE=valore ; export VARIABILE
. Per esempio: PS1='$LOGNAME@$HOSTNAME ! $' ; export PS1
. Oppure, in forma ridotta: export VARIABILE=valore
C Shell: setenv variabile valore
. Per esempio: setenv prompt "\! 'uname -n' % "
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 16:01:22
Fin dalle prime (ma non le primissime) versioni di Unix è stata introdotta nella shell la possibilità di redirezionare l'output di programmi (i dati che generano) ad altri programmi e di compiere analoghe operazioni con l'input e i messaggi di errore.
Questa possibilità, essendo valida per tutti i programmi e applicabile a tutti i file e oggetti del file system, permette una flessibilità enorme ed è particolarmente utile in script shell.
La shell gestisce la comunicazione con ogni programma lanciato tramite 3 file descrittori:
- standard input (stdin - file descriptor 0)
E' il canale attraverso il quale il programma riceve i dati di ingresso, generalmente la tastiera.
- standard output (stdout - file descriptor 1)
E' il canale di uscita del risultato dell'elaborazione del programma, di solito il video.
- standard error (stderr - file descriptor 2)
E' dove il programma stampa eventuali errori durante l'esecuzione, di solito il video.
Molti comandi UNIX assumono che l'ingresso dei dati avvenga (o possa avvenire) da standard input e l'uscita avvenga su standard output. E' possibile concatenare più programmi fra loro e fare in modo che lo standard output di uno diventi lo standard input di un altro. Per farlo si utilizza il carattere | chiamato pipe.
E' inoltre possibile redirezionare stdin, stdout e stderr su un file tramite gli operatori di redirezionamento:
> redirige lo standard output di un comando su un file o dispositivo
>> redirige l'output di un comando su un file o dispositivo ma se il file esiste già i dati vengono aggiunti alla fine del file. Se il file non esiste viene creato
< redirige lo standard input da un file o dispositivo
2> redirige lo standard error di un comando su un file o dispositivo
| operatore pipe, concatena standard output e standard input di due programmi
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-27 23:53:41
La shell permette di definire mediante l'uso di variabili alcuni parametri che influenzano il comportamento dei programmi che vengono eseguiti.
Si usa distinguere fra Variabili d'ambiente, generalmente indicate in MAIUSCOLO, che vengono passate ad ogni programma eseguito dalla shell e quindi costituiscono di fatto la definizione di un una serie di parametri globali, e variabili locali, che vengono create ed utilizzate solo all'interno di un programma (che può essere anche uno script shell) e che generalmente si indicano in minuscolo.
Di solito basta esportare una variabile locale per farla diventare d'ambiente.
Si identifica una variabile con il simbolo $.
Le variabili d'ambiente più importanti sono:
HOME il valore di questa variabile è quella della home-directory dell'utente
PATH l'elenco delle directory dove la shell, dopo l'inserimento di un comando, cerca il programma da eseguire
DISPLAY definisce lo schermo sul quale un programma X-Window aprirà le proprie finestre
TERM definisce le sequenze di comandi che saranno usate per comandare il terminale che si sta usando.
Con il comando printenv
o env
vengono visualizzate le variabili d'ambiente della propria shell.
Tipo Infobox: DESCRIPTION - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'ask' Nasuti - Ultimo Aggiornamento: 2003-11-28 00:00:09
Come ogni linguaggio di programmazione anche la shell ha delle strutture di controllo, la cui logica e sintassi è simile a quelle comuni in altri linguaggi come il C.
IF THEN ELIF ELSE
if
cmd1 - Se l'ultimo comando in cmd1 è terminato con successo
then
cmd2 - I comandi cmd2 vengono eseguiti
elif
cmd3 - Altrimenti se l'ultimo comando in cmd3 è terminato con successo
then
cmd4 - Vengono eseguiti i cmd4
else
cmd5 - Altrimenti, se ne cmd1 ne cmd3 sono soddisfatti, vengono eseguiti i cmd5
fi
FOR IN DO DONE
for
cmds - Cmds viene eseguito tante volte quanti sono
[in
a b c...] - i valori in a b c. Ad ogni ciclo il valore di vars cambia
do
- a seconda del corrispettivo valore a b c....
cmds
done
WHILE DO DONE
while
cmds1 - Esegue cmd1 e se i comandi terminano con valore logico vero
do
cmds2 - Esegue cmd2 fino a quando cmd1 termina con valore logico falso
done
UNTIL DO DONE
until
cmd1 - Esegue cmd1 e se i comandi terminano con valore logico falso
do
cmd2 - Esegue cmd2 fino a quando cmd1 termina con valore logico vero
done
CASE IN ESAC
case
vars in
- Viene effettuato un confronto tra vars
match1) list1 ;; - e le match1.. finchè non trova il
match2) list2 ;; - corrispettivo valore
match3) list3 ;;
...
esac
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Davide 'Jediblack' - Ultimo Aggiornamento: 2004-05-23 15:37:21
Bash mette a disposizione due comandi interni molto interessanti: alias
e unalias
. Il primo dà la possibilità all'utente di rinominare un comando od uno script, mentre il secondo cancella un alias creato in questo modo.
Proviamo a digitare il comando alias
. Ciò che appare a schermo potrebbe assomigliare a quanto segue:
alias d='dir'
alias dir='/usr/bin/ls $LS_OPTIONS --format=vertical'
alias emacs='emacs-21.3-no-x11'
alias halt='su -c halt'
alias la='ls -la'
alias lh='ls -lh'
alias ll='ls -l'
alias ls='/usr/bin/ls $LS_OPTIONS'
alias mc='. /usr/share/mc/bin/mc-wrapper.sh'
alias reboot='su -c reboot'
alias v='vdir'
alias vdir='/usr/bin/ls $LS_OPTIONS --format=long'
Quello che viene mostrato è la lista degli alias attivi. Attenzione che questa lista potrebbe cambiare da utente ad utente e da distribuzione a distribuzione.
Vediamo come definire nostri alias. La sintassi del comando è particolarmente semplice ed assomiglia in tutto e per tutto alla definizione di variabili d'ambiente.
alias nomeAlias='comando + opzioni'
Tuttavia bisogna porre attenzione a due dettagli. Quando si digita un comando al prompt della Bash, quest'ultima come prima cosa scandisce la lista degli alias e, se trova una corrispondenza, la esegue. Significa che se ho intrapreso una decisione del tipo alias ls='clear'
, ogni volta che chiedo la lista delle directory mi ritrovo lo schermo pulito.
Un secondo dettaglio è che gli alias creati in questo modo vengono persi nel momento in cui eseguiamo il logout. Risulta quindi utile salvare gli alias che vengono usati più frequentemente nel file .profile nella propria home directory. In questo modo vengono ridefiniti tutte le volte che eseguiamo il login.
SOURCE: man page di Bash -
Tipo Infobox: DESCRIPTION - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-27 23:50:56
Una delle caratteristiche della filosofia di Unix è che l'impostazione del sistema non vuole prevedere tutte le necessità dell'utente, ma tenta di rendere semplice per ciascuno modificarsi l'ambiente a seconda delle proprie necessità.
Ogni shell prevede uno o più "file di configurazione" che viene processato ogni volta che viene invocata. Di fatto, gli script di inizializzazione di una shell, sono normali script che si eseguono all'avvio delle shell stessa.
Questi file di configurazione sono noti anche come "file init", "file rc"" (per "run control", controllo dell'esecuzione) o anche "file punto", perché il loro nome di solito inizia con ".".
La shell di default di Linux è la bash.
I file di configurazione della bash di default sono:
/etc/bashrc
: Contiene gli alias e le funzioni valide per l'intero sistema;
/etc/profile
: Contiene le variabili d'ambiente per l'intero sistema e i programmi di avvio;
$HOME/.bashrc
: Contiene gli alias e le funzioni dell'utente;
$HOME/.bash_profile
: Contiene le variabili d'ambiente e i programmi di avvio dell'utente;
$HOME/.inputrc
: Contiene definizioni di tasti e altre funzioni.
Per personalizzare il proprio ambiente bash è necessario modificare il file $HOME/.bashrc
.
E' possibile creare alias per comandi che vengono usati spesso (alias "alias"= "comando") o modificare il prompt utilizzando il linguaggio bash o eseguire determinati programmi all'avvio della shell ecc.
Oltre agli script eseguiti al login, la shell può eseguire uno script al momento del logout da parte dell'utente.
Per la bash, questo script, se esiste, è : $HOME/.bash_logout
LINK: HOW TO: Bash Prompt - http://www.linux.org/docs/ldp/howto/Bash-Prompt-HOWTO/index.html
Tipo Infobox: DESCRIPTION - Skill Level: 4- ADVANCED - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2003-11-28 00:07:50
Il comando EXIT può essere utilizzato per terminare uno script Bash, ed in modo simile ad un linguaggio di programmazione può restituire un valore chiamato Exit Status.
EXIT
, permette di terminare arbitrariamente uno script. In particolare, ogni comando ritorna un Exit Status con valore 0 quando termina con successo e un valore diverso da 0 quando si verifica un errore.
Anche le funzioni all'interno di uno script o lo script stesso possono ritornare un Exit Status il quale è determinato dall'ultimo comando eseguito dalla funzione o dallo script.
E' possibile controllare lo stato di uscita dell'ultimo comando eseguito tramite la variabile $?
. Terminato uno script è possibile verificarne lo stato di uscita con echo $?
.
Per far ritornare un valore personalizzato da restituire alla Shell è possibile utilizzare EXIT nnn
, dove nnn è un numero compreso tra 0 e 255. Alcuni Exit Status hanno un valore riservato ed è quindi consigliato non utilizzarli per non confondersi in fase di troubleshooting:
- 1: Errore Generico
- 2: Errato utilizzo delle shell builtins
- 126: quando il comando non può essere eseguito
- 127: quando il comando non viene trovato
- 128: quando viene fornito un argomento errato a EXIT
- 128+n: quando il comando viene terminato da un segnale di interruzione. 128 +n sta a significare il valore 128 + il valore del segnale che lo ha interrotto.
- 130: quando lo script è terminato da Control-C
- 255: quando l'exit status è fuori dai limiti consentiti (0-255)
Se EXIT è chiamato senza parametri il suo valore è quello dell'ultimo comando eseguito.
SOURCE: Advanced Bash−Scripting Guide - Mendel Cooper -
I processi |
Definizione e gestione dei processi. Segnali e job. |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Massimiliano 'Max_Rispetto' Grassi - Ultimo Aggiornamento: 2002-10-31 08:59:17
Uno dei principali motivi del successo di Unix è senza dubbio dovuto alla sua capacità di multitasking. Per multitasking si intende la possibilità da parte del sistema operativo di far girare contemporaneamente più di una applicazione.
Ogni programma, ogni comando che si lancia, ogni servizio attivo sul sistema da origine a uno o più processi.
Ad ogni processo viene assegnato un numero che lo identifica univocamente, chiamato PID (Process IDentificator). Ogni processo, tranne init (a cui corrisponde il PID 1), è generato da un'altro processo di cui si definisce il PPID (Parent PID). Si parla quindi di processo padre (parent) e processo figlio (child).
Un processo consta di: codice eseguibile, posizione di esecuzione, dati che gestisce, file aperti, ambiente di esecuzione, credenziali.
Quando lo stesso programma è eseguito più volte nel sistema, anche da parte di utenti diversi, alcune parti dello stesso possono essere condivise (shared) in memoria: il codice in esecuzione e le eventuali librerie di sistema caricate, altre parti come i dati, i file aperti, il PID.
Un processo può generare una copia di se stesso (fork), cha ha PID diverso e PPID uguale al proprio PID.
La Schedulazione da parte del kernel
Nel kernel di un sistema operativo lo schedulatore (dispatcher) è responsabile della coordinazione dei processi in esecuzione per gestire i loro accessi alle risorse e assicurare che abbiano accesso alla CPU per un tempo relativo alla loro priorità assegnata, senza rischiare che alcuni processi intasino completamente il CPU time ed altri non riescano ad utilizzarla minimamente.
La schedulazione è un'operazione del kernel che definisce i seguenti stati di processo:
R - running, il processo è in esecuzione;
S - sleeping, il processo è in attesa (input dell'utente, conclusione di altri processi ecc..);
Z - zombie, il processo è morto ed aspetta che il parent chieda un codice d'uscita.
Ad ogni processo è associata una priorità, un valore che varia fra -20 e 19, che determina quanta CPU time rispetto agli altri il sistema gli deve dedicare.
La priorità pre-impostata di un task è 0 (-20 è considerata la priorità più alta). Solo l'amministratore puo resettare la priorità di un processo per portarla al di sotto di 0, ma i normali utenti possono variare la priorità per i valori positivi (usando il comando 'renice').
I nuovi processi ereditano la priorità dei loro padri.
JOB
La shell Unix è il tipico mezzo con cui vengono lanciati processi sul sistema (oltre ad essere essa stessa un normale processo), la shell assegna ad ogni processo lanciato da un utente un numero di job, e permette di mandare in foreground o background al sua esecuzione.
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Massimiliano 'Max_Rispetto' Grassi - Ultimo Aggiornamento: 2002-10-13 20:01:34
Ogni programma eseguito su un sistema è un processo, identificato con un suo PID. Quando un programma viene eseguito da una shell, assume anche un numero di job e può essere gestito all'interno della shell.
Le modalità fondamentali con cui si possono lanciare i job sono due: in foreground e in background.
Nella prima l'utente attende che l'esecuzione del suo processo termini prima di riottenere il prompt della shell.
Nella seconda invece il prompt viene restituito subito e il processo continua l'esecuzione. In questo modo l'utente può continuare a lavorare e quindi, volendo, potrebbe lanciare altri programmi in background.
Il segno & scritto alla fine del comando dice alla shell di eseguirlo in background e ridare subito il prompt.
Con CTRL-C si interrompe un processo.
Con CRTL-Z si mette in “pausa” un processo e si ritorna al prompt della shell.
La shell prevede una serie di comandi interni per gestire i job:
jobs: mostra i processi attivi in background lanciati da un certo utente. Il numero tra parentesi che viene restituito a video è il numero di, il “+” significa che è l’ultimo processo ad essere stato sospeso (fg senza parametri fa ripartire l’ultimo processo sospeso), l’altro numero è il PID.
bg: Esegue in background un processo precedentemente interrotto.
fg: Esegue un processo in primo piano.
Esistono inoltre vari comandi (file autonomi, non incorportati nella shell) utili per gestire i processi:
kill: Invia un segnale ad un processo attivo (normalmente utilizzato per fermare un processo).
nice [priority] [command]: E' un prefisso utilizzato per assegnare un certo livello di priorità al comando che si sta per eseguire. -20 vuol dire massima priorità, 19 è minima priorità.
nohup
ps: Visualizza un elenco dei processi in fase di esecuzione
pstree: Simile a ps ma mostra chiaramente le relazioni tra processi padre e processi figli.
top: Visualizza un elenco dei processi che sfruttano intensamente il processore e consumano molta memoria.
SOURCE: Clikkami.com - http://www.clikkami.com/ex-linux.html
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Massimiliano 'Max_Rispetto' Grassi - Ultimo Aggiornamento: 2004-05-23 16:02:11
Comando che mostra un'istantanea dei processi correnti. Le opzioni sulla riga di comando possono opzionalmente essere precedute da un '-', ma non è necessario.
ps [- ] [lujsvmaxScewhrnu ] [txx ] [O [+ |- ]k1 [[+ |- ]k2 ...]] [pids ]
m
mostra informazioni sulla memoria (assieme con il flag p da il numero di pagine)
u
formato utente: da il nome dell'utente e l'ora d'inizio
f
le righe di comando sono mostrate in un albero
a
mostra anche i processi degli altri utenti
x
mostra i processi che non controllano un terminale
S
aggiunge il tempo di cpu dei figli e i page fault
r
solo processi running
pid
Elenca solo i processi specificati; sono separati da virgole. La lista deve essere data immediatamente dopo l'ultima opzione di una riga di comando con un unico argomento, senza introdurre spazi, p.es. ps -j1,4,5
--help
restituisce un messaggio d'aiuto che riassume l'uso e da un lista delle sort key supportate.
--version
mostra la versione
Tipo Infobox: TIPS - Skill Level: 3- INTERMEDIATE - Autore: Alfonso 'Alian' Iannotta - Ultimo Aggiornamento: 2005-06-21 15:56:18
E' possibile fermare programmi in background che tentano di scrivere l'output su terminale.
Se eseguiamo un processo in background senza ridirezionare l'output, avremo che il testo scritto da tale processo verrà visualizzato sullo schermo senza controllo. Questo fastidioso effetto può essere eliminato tramite il seguente comando: stty tostop
.
Dopo aver dato questo comando tutti i processi in background che tentano di scrivere sul terminale saranno fermati ed eseguendo il comando jobs sulla shell apparirà il seguente messaggio:
[1] + Stopped (tty output) nomeJob
Volendo far ripartire il processo in background e vedere l'output dello stesso, è necessario portarlo in foreground tramite il comando fg
. E' possibile disabilitare questa funzione tramite il con: stty -tostop
.
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Massimiliano 'Max_Rispetto' Grassi - Ultimo Aggiornamento: 2002-09-21 10:54:43
Comando che riporta informazioni sui processi, sulla memoria, sulla paginazione, sui block IO, i trap e l'attività della CPU.
La prima volta mostra le medie dall'ultimo reboot. Le volte successive mostra informazioni su un periodo di campionamento di lunghezza "delay". I report sui processi e la memoria sono istantanei in entrambi i casi.
Questi report sono pensati per identificare i "colli di bottiglia" del sistema. Il vmstat di Linux non si conta come processo in esecuzione.
Tutti i blocchi di Linux attualmente sono da 1k, ad eccezione per i blocchi del CD-ROM che sono da 2k.
vmstat [-n] [delay [num]]
vmstat[-V]
-n
mostra l'header solo una volta invece che periodicamente.
delay
è il ritardo in secondi tra gli aggiornamenti. Se non è specificato alcun ritardo, è mostrato solo un report con i valori medi dal reboot.
num
è il numero degli aggiornamenti. Se non è specificato ed è definito il ritardo, allora num di default è infinito.
-V
mostra informazioni sulla versione
Esempio di output
procs | memory | swap | io | system | cpu | ||||||||||
r | b | w | swpd | free | buff | cache | si | so | bi | bo | in | cs | us | sy | id |
0 | 0 | 0 | 0 | 307240 | 69292 | 66456 | 0 | 0 | 0 | 1 | 101 | 5 | 0 | 0 | 100 |
Procs
Memory
Swap
IO
System
CPU
SOURCE: ILDP (Italian Linux Documentation Project) - http://ildp.pluto.linux.it/man/man8/vmstat.8.html
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Massimiliano 'Max_Rispetto' Grassi - Ultimo Aggiornamento: 2002-10-06 18:04:14
Comando per mandare un segnale ad un processo (non necessariamente di chiusura).
kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]
pid ...
Specifica la lista di processi ai quali kill deve inviare il signal. Si può scegliere fra cinque opzioni:
n il processo con pid n viene killato (n maggiore di 0)
0 tutti i processi nel gruppo processi corrente vengono killati
-1 tutti i processi con pid maggiore di 1 vengono killati
-n tutti i processi nel gruppo processi n vengono killati (n maggiore di 0)
name tutti i processi che hanno nome name vengono killati
-s
Specifica il signal da inviare. Il signal può essere dato come il nome o il numero del signal
-l
Mostra una lista dei nomi dei signal
-p
Specifica che kill deve solo mostrare il pid dei processi nominati, e non deve mandare loro un signal
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Massimiliano 'Max_Rispetto' Grassi - Ultimo Aggiornamento: 2002-09-28 00:41:40
Comando che visualizza la struttura ad albero dei processi sul sistema, e mostra anche quelli che hanno generato altri (ossia i processi "padre" e i processi "figli").
pstree [-a] [-c] [-h] [-l] [-n] [-p] [-u] [-G|-U] [pid|utente]
pstree [-V]
- a
Mostra gli argomenti della riga di comando
- h
Evidenzia il processo corrente e i suoi antenati
- n
Ordina i processi con lo stesso antenato in base al PID
- p
Mostra i PID. I PID sono mostrati in numeri decimali tra parentesi dopo ogni nome di processo. -p disabilita implicitamente la compattazione
- V
Mostra la versione
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Massimiliano 'Max_Rispetto' Grassi - Ultimo Aggiornamento: 2002-09-28 00:45:59
Comando che fornisce in tempo reale istantanee dell'attività del processore. Mostra una lista dei task del sistema che fanno un uso più intenso della CPU, e può mettere a disposizione un'interfaccia interattiva per manipolare i processi. Può ordinare i task in base all'uso della CPU, all'uso della memoria e al tempo d'esecuzione.
top [-] [d delay] [q] [c] [S] [s] [i]
d
Specifica l'intervallo tra gli aggiornamenti della schermata. Lo si può cambiare con il comando interattivo s.
q
Fa si che top si aggiorni senza nessun ritardo. Se il chiamante ha i privilegi del superuser, top gira alla più alta priorità possibile.
S
Specifica il cumulative mode, nel quale ogni processo è mostrato con il tempo di CPU che conprende anche quello speso dai figli che sono già terminati. È come il flag -S di ps
.
s
Dice a top di girare in secure mode. Disabilita i pericoli potenziali dei comandi interattivi (vedere sotto).
i
Avvia top ignorando qualsiasi processo idle o zombie. Si veda sotto il comando interattivo i.
c
Mostra la riga di comando invece del solo nome del comando.
Descrizione dei campi
top mostra una varietà di informazioni sullo stato del processore. Di default la schermata si aggiorna ogni 5 secondi, ma questo può essere cambiato con l'opzione d in riga di comando o con il comando interattivo s.
uptime
mostra da quanto tempo il sistema è "su", e i tre carichi medi del sistema. I carichi medi sono il numero medio di processi pronti per essere eseguiti durante gli ultimi 1, 5 e 15 minuti. Questa riga è come l'output di uptime
. La visualizzazione dell'uptime può essere disattivata (e riattivata) con il comando interattivo l.
processes
mostra il numero totale di processi in esecuzione quando è stato fatto l'ultimo aggiornamento. Questo è poi suddiviso nel numero di task che sono running, sleeping, stopped, o undead. La visulizzazione di processes e states può essere disattivata (e riattivata) con il comando interattivo t.
CPU states
mostra la percentuale del tempo di CPU speso in user mode, system mode, niced task, e idle. (I niced task sono solo quelli il cui valore nice è negativo). Il tempo speso in niced task sarà contato anche in system e user time, così il totale sarà più del 100%. La visualizzazione di processes e states può essere disattivata (e riattivata) con il comando interattivo t.
Mem
. Statistiche sull'uso della memoria, incluse la memoria complessiva disponibile, la memoria libera (free), la memoria condivisa (shrd), e la memoria usata per i buffer. La visualizzazione della memoria può essere disattivata (e riattivata) con il comando interattivo m.
Swap
. Statistiche sulla swap, incluse lo spazio di swap totale, lo spazio di swap disponibile, e lo spazio di swap usato. Questo e Mem sono in pratica l'output di free
.
PID
. Il process ID di ognuno dei task.
PPID
. Il parent process ID di ognuno dei task.
UID
. Lo user ID del proprietario del task.
USER
. Il nome utente del proprietario del task.
PRI
. La priorità del task.
NI
. Il valore nice del task. Valori negativi corrispondono a priorità più basse.
SIZE
. Sono qui mostrati la dimensione, in Kbyte, del codice del task più i dati più lo stack.
TSIZE
. La dimensione del codice del task. Da strani valori per i processi del kernel e non funziona per i processi ELF.
DSIZE
. Dimensione di Data + Stack. Non funziona per i processi ELF.
TRS
. Dimensione del text residente.
SWAP
. Dimensione della porzione del task swappata.
D
. Dimensione della pagine marcate dirty.
LIB
. Dimensione delle library page usate. Non funziona per i processi ELF.
RSS
. È qui mostrato l'ammontare, in Kbyte, delle memoria fisica usata del task.
SHARE
. L'ammontare della memoria condivisa usata del task.
STAT
. È qui mostrato lo stato del processo. Lo stato è S per sleeping, D per uninterruptible sleep, R per running, Z per zombie, oppure T per stopped o traced. Questi stati sono seguiti da < per un processo con un valore di nice negativo, da N per un processo con un valore di nice positivo, da W per un processo swappato (questo non funziona correttamente per i processi kernel).
WCHAN
. A seconda dalla disponibilità di /boot/psdatabase o della kernel link map /boot/System.map mostra l'indirizzo o il nome della funzione kernel sulla quale il task è in sleep.
TIME
. Il tempo di CPU totale usato dal task da quando è partito. Se è abilitato il cumulative mode, include anche il tempo di CPU usato dai suoi processi figlio che sono terminati. Il cumulative mode lo si può abilitare con l'opzione S in riga di comando oppure con il comando interattivo S. L'etichetta sulla riga di header sarà cambiata in CTIME.
%CPU
. La porzione del task del tempo di CPU dall'ultimo aggiornamento della schermata, espressa come percentuale del tempo di CPU totale.
%MEM
. La porzione del task della memoria fisica.
COMMAND
. La riga di comando del task; sarà troncata se è troppo lunga per essere mostrata in una riga. Sarà mostrata la riga di comando completa per i task in memoria, mentre sarà mostrata solo il nome del programma fra parentesi per i task swappati (per esempio, "(getty)").
Comandi interattivi
Mentre top è in esecuzione sono riconosciuti diversi comandi "single-key". Alcuni sono disabilitati se è stata data l'opzione s in riga di comando.
^L
- Cancella e riscrive la schermata.
h
o ?
- Mostra un schermata d'aiuto che da una breve sommario dei comandi, e lo stato dei secure e cumulative mode.
k
- Killa un processo. Sarà chiesto il PID del task, e il signal da inviare. Per un kill normale, inviare il signal 15. Per un kill sicuro, ma piuttosto brutale, inviare il signal 9. Il signal di default, come per kill
, è il 15, SIGTERM. Questo comando non è disponibile in secure mode.
i
- Ignora i processi idle e zombie.
n
o #
- Cambia il numero di processi da mostrare. Sarà chiesto di inserire un numero. Ciò ignora la determinazione automatica del numero di processi da mostrare, basata sulla misura delle dimensioni della finestra. Se è specificato 0 (impostato di default), allora top mostrerà tanti processi quanti ce ne stanno sullo schermata.
q
- Esce.
r
- Re-nice un processo. Sarà chiesto il PID del task, e il nuovo valore del nice. L'inserimento di un valore positivo fa si che il processo sia "niced" ad un valore negativo, e perda di priorità. Se top è eseguito da root, può essere immesso un valore negativo che assegna ad un processo una priorità più alta di quella normale. Questo comando non è disponibile in secure mode.
S
- Abilita il cumulative mode, l'equivalente di ps -S, cioè, i tempi di CPU comprenderanno anche i processi figlio defunct. Per alcuni programmi, come i compilatori, che lavorano con fork in molti task separati, il modo normale li fa apparire meno esigenti di quello che in realtà sono. Per gli altri, come le shell e init, questo comportamento è corretto. In ogni caso, si provi il cumulative mode per una visione alternativa dell'uso della CPU.
s
- Cambia l'intervallo tra gli aggiornamenti. Sarà chiesto di inserire l'intervallo temporale, in secondi, tra gli aggiornamenti. Valori frazionari sono riconosciuti fino ai microsecondi. L'inserimento di 0 causa un aggiornamento continuo. Si noti che valori bassi causano delle schermate praticamente illeggibili, e un grosso incremento del carico. Questo comando non è disponibile in secure mode.
f
o F
- Aggiunge o rimuove campi da mostrare nella schermata. Si veda sotto per ulteriori informazioni.
o
o O
- Cambia l'ordine dei campi visualizzati. Si veda sotto per ulteriori informazioni.
l
- Disabilita (riabilita) la visualizzazione delle informazioni sul carico medio e l'uptime.
m
- Disabilita (riabilita) la visualizzazione delle informazioni sulla memoria.
t
- Disabilita (riabilita) la visualizzazione delle informazioni sui processi e sullo stato della CPU.
c
- Disabilita (riabilita) la visualizzazione del nome del comando o dell'intera riga di comando.
M
- Ordina i task in base all'uso di memoria residente.
P
- Ordina i task in base all'uso della CPU (default).
T
- Ordina i task in base al tempo (o al tempo comulativo).
W
- Scrive la configurazione corrente sul file ~/.toprc. Questo è il modo raccomandato per scrivere il file di configurazione di top.
SOURCE: ILDP (Italian Linux Documentation Project) - http://ildp.pluto.linux.it/man/man1/top.1.html
Tipo Infobox: BOFH - Skill Level: 2- JUNIOR - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2005-06-21 16:01:59
Visualizzare la stringa completa di startup di un processo non è sempre possibile.
Qualora la stringa che identifica come è stato lanciato sia troppo lunga per poterla vedere completamente con un normale comando ps
, è possibile utilizzare il file system virtuale /proc
, che mostra la command line che ha dato il via al processo nella variabile cmdline
.
[azitti@pegasus azitti]$ ps -adef | grep mysql
root 6912 1 0 Jan28 ? 00:00:00 /bin/sh ./bin/mysqld_safe --data
mysql 6936 6912 0 Jan28 ? 00:00:00 /usr/local/mysql/bin/mysqld --de
Essendo molto lunga la stringa di startup dei processi 6912 e 6936 non sono visualizzabili completamente
[azitti@pegasus azitti]$ cat /proc/6912/cmdline
/bin/sh./bin/mysqld_safe--datadir=/usr/local/mysql/data--pid-file=/usr/local/mysql/data/pegasus.pid
[azitti@pegasus azitti]$ cat /proc/6936/cmdline
/usr/local/mysql/bin/mysqld--defaults-extra-file=/usr/local/mysql/data/my.cnf
--basedir=/usr/local/mysql--datadir=/usr/local/mysql/data--user=mysql
--pid-file=/usr/local/mysql/data/pegasus.pid--skip-locking
Nel file sytem /proc è possibile trovare le directory relative ai processi attivi nel sistema
All'interno della directory /proc/$PID
(dove $PID è il PID di qualsiasi processo in esecuzione sul sistema) sono inoltre disponibili moltre altre informazioni di basso livello sul processo stesso come variabili d'ambiente, risorse occupate, link al file binario.
Debugging dei processi |
Strumenti e indicazioni su come eseguire il debugging delle applicazioni: strace, lsof, ldd. |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-07 16:37:07
L'opera di debugging di un processo non è generalmente argomento proponibile ad un sistemista non esperto, anche perchè spesso riguardano problemi sul lato applicativo che vanno affrontati direttamente dallo sviluppatore.
In ogni caso, nella vita di ogni sysadm capita sistematicamente che dei servizi non partano o dei programmi non facciano quello che dovrebbero fare (non inchiodarsi, innanzitutto), oppure, più subdolamente, abbiano comportamenti erratici o problemi di prestazioni o di sopportazione di alti carichi.
Senza volersi addentrare in problematiche di debugging avanzato, si possono elencare alcuni strumenti a disposizione del sistemista per diagnosticare simili problemi:
Log
I log sono sempre la prima cosa da guardare perchè di solito contengono abbastanza informazioni da farci capire dove intervenire. Eventualmente analizzare syslog.conf
o le istruzioni e le configurazioni del singolo programma per capire dove vengono loggati i suoi messaggi e poi leggere i messaggi di errore sui log che ci interessano.
Debug
Quasi sempre è possibile lanciare un programma con diversi livelli di debug: aumentando la verbosità del debug (di solito registrato sul file di log) si aumenta la possibilità di capire cosa non funziona. Tipicamente il livello di debug può essere impostato come opzione da command line o nel file di configurazione.
Comandi di diagnostica
Unix mette a disposizione vari comandi utili per capire cosa fa un processo e come si comporta il sistema. SU Linux si possono comunemente trovare i seguenti tool:
strace
Traccia le chiamate di sistema e i segnali del programma specificato mentre lo esegue. Ovviamente va utilizzato solo per fini diagnostici, rallentando particolarmente la velocità di esecuzione. Spesso non è nemmeno necessario capire l'output di strace (invero piuttosto verboso e per molti incomprensibile), basta cercare righe dove si parla di errori e vengono indicati path o funzioni specifiche. Spesso un programma non funziona perchè non trova certi file (librerie ecc) o non ha i permessi adeguati sugli stessi, un grep ENOENT
sullo stdout di strace può evidenziare tutte le volte in cui si è cercato un file senza trovarlo (spesso questo non è un problema, in quanto un processo può trovare un file dopo averlo cercato senza successo in varie directory (con relativo messaggio di errore "ENOENT (No such file or directory)".
ldd
Stampa l'elenco delle librerie condivise utilizzate dal comando specificato
lsof
Elenca gli open file del sistema. Un open file può essere: un normale file, una directory, un file speciale a blocchi o caratteri, una librerira, una socket Internet, una socket Unix domain... E' utile per vedere le risorse utilizzate da un programma (e, per esempio, capire dove sta loggando).
LINK: Strace HomePage - http://www.liacs.nl/%7Ewichert/strace/
LINK: Introduction to Reverse Engineering Software
Next
Introduction to Reverse Engineering Software - http://www.acm.uiuc.edu/sigmil/RevEng/
Tipo Infobox: COMMANDS - Skill Level: 3- INTERMEDIATE - Autore: Massimiliano 'Max_Rispetto' Grassi - Ultimo Aggiornamento: 2004-05-23 16:02:54
ldd (List Dynamic Dependencies) permette di determinare quali librerie condivise vengono utilizzate da un file eseguibile. All'output viene stampato l'elenco delle librerie necessarie al file e il loro percorso.
ldd [opzione] nome_file
-v
"verbose", opzione che stampa tutte le informazioni riguardanti le librerie utilizzate dal file.
Vediamo un esempio. Eseguendo il comando ldd /bin/ls
, verrà visualizzato l'elenco delle librerie che vengono utilizzate dal comando ls
.
libtermcap.so.2 => /lib/libtermcap.so.2 (0x4001e000)
libc.so.6 => /lib/libc.so.6 (0x40022000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Questo vuol dire che il comando ls dipende dalla presenza di libtermcap.so.2 (libreria che descrive le capacità di un terminale) e da libc.so.6 (la libreria C).
Se un programma non dipende da alcuna libreria, ldd stamperà la stringa statically linked (ELF) oppure statically linked.
Tipo Infobox: COMMANDS - Skill Level: 3- INTERMEDIATE - Autore: Massimiliano 'Max_Rispetto' Grassi - Ultimo Aggiornamento: 2002-10-15 18:20:53
lsof (List Open Files) elenca gli "open file" del sistema, cioè normali file, file speciali a blocchi o caratteri, directory, librerie condivise, processi, socket, etc.
lsof [opzioni]
Eseguendo lsof
senza opzioni si genera l'elenco completo dei file aperti sul sistema, che generalmente è piuttosto lungo.
Le opzioni più interessanti sono:
-p [numero]
stampa gli open file in base al pid specificato
-i
stampa solo i processi Internet. Molto utile per esaminare le porte aperte che aspettano tentativi di connessione (e quindi anche potenziali intrusi).
lsof è un tool molto utile utilizzato in combinazione col comando grep
.
Ad esempio, eseguendo lsof | grep sshd
si visualizzano sia file aperti da sshd che la porta su cui sta "ascoltando" (LISTEN) o eventuali connessioni aperte.
Tipo Infobox: COMMANDS - Skill Level: 3- INTERMEDIATE - Autore: Massimiliano 'Max_Rispetto' Grassi - Ultimo Aggiornamento: 2002-10-16 17:52:52
strace è un tool molto utile per il debugging, eseguendo un "Signal Trace" ("Tracciamento dei Segnali", ndt). Il suo utilizzo permette di eseguire un programma tenendo sotto controllo tutti i segnali e le chiamate di sistema. In questo modo si possono ricercare eventuali errori e capire dove il programma non funziona. Strace è anche in grado di "attaccarsi" a un processo già in esecuzione e tracciarne i segnali.
strace [opzioni]
-o [file_output] [nome_comando]
esegue uno strace di un programma registrando l'output in un file, permettendo cosi una comoda analisi a posteriori
-p PID
collega strace ad un processo già in corso inserendo il PID
Vediamo un esempio. strace -o debug.txt netstat scrive su debug.txt l'output del tracing di netstat. Attenzione! Strace produce una grande quantità di output e rallenta notevolmente la macchina: la chiamata appena effettuata produce 235 righe di output in meno di 2 secondi, ma si può arrivare tranquillamente anche oltre 5000. Per questo è sempre utile stampare l'output in un file.
Spesso un programma non funziona perchè non trova certi file o librerie o non ha i permessi adeguati sugli stessi. Per rimediare basta fare | grep ENOENT: indica che non è riuscito a trovare un file o una directory.
LINK: Strace Homepage - http://www.liacs.nl/%7Ewichert/strace/
Il processo di boot di un sistema Linux ha 4 fasi fondamentali:
- Il BIOS (a livello hardware)
- Il Linux Loader (Lilo e Grub sono i più diffusi)
- Il caricamento del kernel
- L'avvio di Init, il padre di tutti i processi, da cui vegnono lanciati tutti i programmi secondo la logica degli script rc.
Questo è un altro tassello fondamentale per la conoscenza del sistema e la capacità di diagnosticare eventuali problemi.
Il quadro generale è esplicitato in Il processo di boot.
Informazione sui Linux loaders, i loro file di configurazione e come si usano sono in Linux loades: Lilo e grub.
I dettagli su Init e gli script che vengono eseguiti durante il boot del sistema sono in Init e runlevels
Il processo di boot |
Descrizione del processo di boot su sistemi Intel: ROM BIOS - LINUX LOADER - KERNEL LOADING - INIT |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 16:03:44
Il processo di boot di una macchina Linux su sistemi x86 Intel compatibili comporta diverse fasi.
Conoscerle e saperle interpretare è fondamentale per il troubleshooting di problemi di avvio.
Il boot di un sistema Linux su un sistema x386 (su altri si possono essere differenze nelle prime fasi) prevede i seguenti stadi:
1- All'accensione il BIOS su ROM non volatile definisce l'ordine dei device da utilizzare per effettuare il boot.
2- Il BOOT SECTOR del primo device di boot contiene il codice (o i riferimenti su dove trovarlo) del loader che esegue il bootstrap del sistema operativo. Nel caso di Linux il più diffuso loader è LILO, una recente alternativa evoluta è GRUB.
3- Il loader lancia il caricamento del kernel di Linux, che si copia in memoria ed esegue i controlli e il riconoscimento dell'hardware presente.
4- A fine caricamento il kernel esegue il processo init, padre di tutti i processi, che gestisce il caricamento di tutti gli altri programmi da eseguire per completare il boot.
IL BIOS SU ROM
Ogni sistema Intel ha sulla motherboard un BIOS su ROM con cui gestire l'hardware del sistema.
All'avvio di un computer non c'è nulla in RAM e nessun programma predefinito da caricare.
Le istruzioni su come procedere sono nella memoria non volatile del BIOS, in cui, fra le impostazioni definibili dall'utente, c'e' la sequenza dei dispositivi da usare per il boot.
Nei BIOS più recenti è possibile bootare da floppy, cdrom, hard disk (potendo scegliere se dare precedenza a HD IDE o SCSI) e altri dispositivi quali Zip o scheda di rete.
Il BIOS cerca, nell'ordine configurato, il boot sector sui diversi dispositivi di boot previsti.
Gli hard disk hanno un boot sector per ogni partizione e un unico Master Boot Record (MBR) che è il primo boot sector dell'intero hard disk. Se si esegue il boot da un hard disk, è il codice contenuto nel MBR che viene eseguito.
IL LINUX LOADER
Esistono diversi loader che eseguono il bootstrap del sistema operativo per Linux:
Su sistemi Intel Based: LILO, GRUB, LOADLIN, SYSLINUX, BOOTLIN;
su sistemi Alpha: MILO;
su sistemi Sparc: SILO.
Tutti di fatto eseguono la stessa funzione, alcuni (loadlin e syslinux) sono programmi DOS che eseguono il kernel caricandolo da una partizione DOS, altri sono adattamenti di LILO che riguardano sistemi non basati su processori Intel.
Nella pagina LILO, GRUB e Master Boot Record vengono analizzati nel dettaglio:
LILO - Il più conosciuto e diffuso
GRUB - Un loader più recente e versatile di LILO in rapida diffusione.
IL KERNEL
Il kernel, invocato dal loader, viene caricato in memoria ed inizializza i vari device driver, visualizzando vari messaggi utili per capire e conoscere il proprio sistema.
I dettagli sull'avvio del kernel, il riconoscimento e l'inizializzazione dell'hardware sono riportati nel TOPIC dedicato.
INIT E I SUOI FIGLI
L'ultima operazione eseguita dal kernel alla fine del suo caricamento è il lancio del processo init, il padre di tutti i processi.
Da questo momento tutto il codice eseguito lavora in user space (in kernel space lavorano solo il kernel e i suoi moduli).
L'init, tramite il suo file di configurazione /etc/inittab, provvede a lanciare tutti i programmi che completano il processo di caricamento.
LINK: A Guided Tour of a Linux Boot - http://ourworld.compuserve.com/homepages/KanjiFlash/BPTour.htm
HOWTO: The Linux Bootdisk HOWTO - http://ldp.openskills.info/HOWTO/Bootdisk-HOWTO/index.html
Tipo Infobox: DESCRIPTION - Skill Level: 4- ADVANCED - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-12-06 21:02:25
Quando il kernel entra in azione e inizia a caricarsi procede con il riconoscimento e l'inizializzazione dell'hardware presente.
Durante il caricamento presenta a video una serie di informazioni, a volte fin troppo dettagliate, sull'hardware trovato.
Per vedere i messaggi del kernel basta digitare il comando dmesg
, che mostra esattamente quanto viene visualizzato dal kernel durante il boot (in tempi troppo rapidi per essere leggibili).
Segue l'esempio di un dmesg. Alcune parti variano a seconda dell'hardware presente sul sistema, altre sono sostanzialmente uguali su tutti i Linux. Quello che segue è il dmesg di un sistema piuttosto semplice, i kernel modulari di una distribuzione standard solitamente presentano ulteriori informazioni relative a driver per hardware o funzionalità qui non presenti.
Linux version 2.4.13 (root@llocalhost) (gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-81)) #5 Fri Nov 9 16:36:50 CET 2001
Questa prima riga mostra la versione del kernel (2.4.13) del compilatore interno (gcc), della versione del sistema operativo
Detected 200.457 MHz processor.
Ha rilevato la frequenza del processore a 200 MHz
Console: colour VGA+ 80x25
Inizializza la console e ne indica le proprietà (a colori, con 80 colonne per 25 righe)
Calibrating delay loop... 666.82 BogoMIPS
Test per verificare la velocità del processore. Più sono alti i BogusMIPS più è veloce la CPU:
Memory: 62272k/65536k available (1091k kernel code, 2880k reserved, 315k data, 212k init, 0k highmem)
Rilevazione della memoria fisica disponibile. Se il kernel non riesce ad individuare correttamente la memoria presente sul sistema, provare ad usare l'argomento mem al boot con LILO (es: mem=256M per dire al kernel che il sistema ha 256 Mb di memoria)
CPU: Intel Pentium II (Deschutes) stepping 01
Identificazione del processore
POSIX conformance testing by UNIFIX
PCI: PCI BIOS revision 2.10 entry at 0xfb5c0, last bus=0
Inizializzazione delle periferiche PCI
Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
Inizializzazione delle porte seriali
hda: IBM-DTTA-351010, ATA DISK drive
Identificazione dell'hard-disk
Partition check:
hda: hda1 hda2
Verifica dell'integrità delle partizioni da montare.
3c59x: Donald Becker and others. www.scyld.com/network/vortex.html
00:11.0: 3Com PCI 3c900 Cyclone 10Mbps Combo at 0x6400. Vers LK1.1.16
Inizializzazione del driver della scheda di rete e rilevazione del chip
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
Inizializzazione del TCP/IP ed elenco dei protocolli supportati dal kernel.
A fine caricamento il kernel lancia init, il padre di tutti i processi, che provvede al lancio dei servizi e dei programmi che devono girare sul sistema.
LINK: Linux Gazette: Dmesg Explained - http://www.linuxgazette.com/issue59/nazario.html
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2003-08-13 12:41:26
Visualizza da quanto tempo il sistema è attivo.
Uptime visualizza una riga contenente l'ora corrente, da quanto tempo il sistema è up, quanti utenti sono loggati attualmente sul sistema, il carico medio di utilizzo del sistema nell' ultimo minuto, negli ultimi 5 e negli ultimi 15 minuti. Le informazioni visualizzate vengono ricavate da /var/run/utmp
, /proc
e /proc/loadavg
.
homer@Joker:~$ uptime
10:13:24 up 1:44, 3 users, load average: 0.06, 0.02, 0.00
Sono le ore 10.13, il sistema è up da 1 ora e 44 minuti, al momento ci sono 3 utenti loggati e il carico medio della cpu negli ultimi 1,5, e 15 minuti è stato rispettivamente 0.06, 0.02, 0.00
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-08 15:14:53
Visualizza i messaggi di avvio del kernel. Disponibile su Linux.
dmesg [opzioni]
Viene solitamente usato da solo, senza opzioni (che sono disponibili per operazioni poco usate).
SOURCE: Man Pages - http://man.openskills.info/dmesg
SOURCE: Man Pages - http://man.openskills.info/dmesg
Linux loaders: LILO, Grub |
Installazione e configurazione di LILO, GRUB e altri Linux loader |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-31 09:00:37
LILO è il Linux loader più diffuso, permette il boot sia di Linux che di altri sistemi operativi.
Generalmente l'installazione di Linux provvede a creare ed installare LILO sulla macchina (se si è scelto di installare il loader direttamente sull'hard disk e non su floppy) ma in caso di kernel upgrade o aggiunta di un nuovo sistema operativo sulla macchina è necessario modificare le sue impostazioni.
Tutte queste impostazioni sono definite nel file /etc/lilo.conf
che contiene una parte globale e una o più parti relative alle diverse immagini del kernel o sistemi operativi che si vogliono poter caricare.
Il comando /sbin/lilo
installa sul MBR o sul settore di boot di una partizione il LILO secondo le indicazioni date in /etc/lilo.conf.
Ogni volta che viene modificato /etc/lilo.conf è necessario eseguire il comando lilo per installare il nuovo LILO sul settore di boot (notare la differenza, comunemente adottata, fra il comando lilo, tutto in minuscolo, e il Linux Loader vero e proprio LILO, in maiuscolo).
Al momento del boot LILO inoltre presenta la possibilità di dare comandi vari e di scegliere quale sistema operativo o quale versione del kernel caricare, a seconda delle confgiurazioni impostate in /etc/lilo.conf.
ATTENZIONE: Operare maldestramente con LILO e il MBR può impedire il boot del sistema operativo, si suggerisce sempre di avere un dischetto di ripristino disponibile da utilizzare in caso di danni o problemi con l'MBR.
LINK: The LILO Mini HOWTO - http://www.linuxdoc.org/HOWTO/mini/LILO.html
HOWTO: LILO mini-HOWTO - http://ldp.openskills.info/HOWTO/LILO.html
HOWTO: Win95 + WinNT + Linux multiboot using LILO mini-HOWTO - http://ldp.openskills.info/HOWTO/Multiboot-with-LILO.html
Tipo Infobox: PATH - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2005-01-21 10:25:18
Il file /boot/grub/grub.conf
(spesso referenziato con il symlink /etc/grub.conf
) è il file di configurazione del boot loader GRUB.
La sua logica è simile a quella del classico lilo.conf, ma la sintassi è leggermente diversa e le opzioni più numerose.
Di fatto permette di predefinire gli stessi comandi che possono essere inseriti a mano quando Grub viene avviato, rendendo ovviamente più rapida ed automatica la fase di boot.
Il file presenta una struttura di questo tipo (esempio da un RedHat standard dual boot Win-Linux):
boot=/dev/hda
Device dal quale bootare
default=0
Label (sezione) selezionata di default (0 è la prima visualizzata, in questo caso Red Hat Linux)
timeout=10
Tempo, in secondi, dopo il quale se non si effettua alcuna azione grub boota la label di default
splashimage=(hd0,2)/boot/grub/splash.xpm.gz
Path della immagine di sfondo mostrata da grub al boot
password --md5 $1$6ðòüZßXÈ$bXTLL8IbDhnwmjyaNNcPG.
Password (criptata) per poter modificare i parametri di avvio al boot
title Red Hat Linux (2.4.9-31)
Titolo della prima label, può essere un testo arbrario
root (hd0,2)
Disco (0, 1, 2...) (e partizione, dove 0 è la prima partizione e le altre a seguire) dove si trova la root directory ( / ). Notare che Grub ha una propria naming conventon sugli hard disk diversa da quella tipica di Linux: hd0 può corrispondere sia a /dev/hda che a /dev/sda.
kernel /boot/vmlinuz-2.4.9-31 ro root=/dev/hda3
Path dell'immagine del kernel. Qui possono essere definite eventuali opzioni da passare al kernel (es: vga=ext)
initrd /boot/initrd-2.4.9-31.img
Path dell'immagine da mettere in un RamDisk nelle prime fase del boot (necessario se il supporto di driver fondamentali per il caricamento del kernel (device SCSI, filesystem di / e /boot) è gestito tramite moduli).
title Win2K
Titolo della seconda label
rootnoverify (hd0,0)
Disco (e partizione) su cui procedere per il boot di un sistema operativo non supportato (lascia al settore di boot della partizione indicata l'onere del bootstrap dell'OS)
chainloader +1
Passa il compito di bootare ad un altro boot loader (in questo caso quello di Windows)
A differenza di Lilo, con Grub quanto scritto in questo file di configurazione è immediatamente attivo e non va eseguito alcun comando per rendere definitive le modifiche (con Lilo va eseguito il comando lilo
ogni volta che si modifica lilo.conf
(riscrive il MBR)).
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2002-10-25 18:42:50
Grub ha una nomenclatura tutta sua per indicare i diversi devices e partizioni, e questo puo creare problemi, soprattutto se si edita per la prima volta il suo file di configurazione.
Differenze tra la nomenclatura standard di Unix e quella di Grub:
Primary Master IDE: hdaN (Unix) hd0,N (Grub)
Primary Slave IDE: hdbN (Unix) hd2,N (Grub)
Secondary Master IDE: hdcN (Unix) hd1,N (Grub)
Secondary Slave IDE: hddN (Unix) hd3,N (Grub)
dove N sta per il numero della partizione interessata.
Per quanto riguarda i dischi SCSI vale la stessa logica (sdaN di Unix equivale a sd0,N di Grub e cosi via).
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-09-02 22:48:03
LILO dispone di un command prompt che permette di eseguire operazioni più evolute della scelta del sistema operativo da caricare.
La possibilità di digitare i seguenti comandi può essere, per sicurezza, soggetta all'introduzione di una password.
TAB
Visualizza l'elenco delle label disponibili, cioè dei sistemi operativi e delle versioni del kernel selezionabili al boot.
linux rescue
Carica l'immagine con label linux in modalità single user mode (init 1) per interventi di amministrazione straordinaria sul sistema.
linux single
Come rescue, con la differenza che viene tentato il boot da disco.
root=/dev/...
Come nel file lilo.conf, definisce il dispositivo di boot permettendo di bootare, per esempio dal CDROM senza modificare il BIOS.
vga=80x25
Definisce la modalità video della console: colonne x righe.
Tipo Infobox: ETCETERA - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-31 09:01:39
Non è raro sentire di utenti che hanno provato, animati da ottime intenzioni e buona volontà, ad installare Linux sul proprio PC, con Windows già installato, e per qualche errore o svista o inesperienza in fase di installazione non riescono più a "vedere" e caricare il proprio Windows.
In questi casi, arrabbiature, delusione, disillusione e sconforto fanno diventare un potenziale nuovo utente di Linux in un suo acceso detrattore.
Le distribuzioni recenti ormai sono piuttosto efficaci nel riconoscere e preservare l'installazione Windows esistente e far pacificamente convivere i due sistemi operativi, al punto che è sempre consigliabile, se si vuole un sistema Dual Boot, installare prima Windows e poi Linux (i SO di Microsoft sono generalmente più invadenti, sotto questo aspetto, e non tollerano/prevedono facilmente coesistenze).
Di fatto, comunque, è possibile fare 2 tipi di danni sul Windows pre esistente quando si prova ad installare il pinguino:
- Cancellare completamente il vecchio Windows, distruggendone o sovrascrivendo la partizione in cui è installato (era il caso di prestare più attenzione i WARNING segnalati durante l'installazione di Linux)
- Sovrascrivere il Master Boot Record del proprio hard disk con LILO o GRUB o altri Linux Loader senza aver l'opzione di caricare Windows: in questo caso non viene propriamente cancellato Windows dal proprio hard disk, ma soltanto la possibilità di caricarlo al boot.
In questo caso il ripristino dello status quo è relativamente semplice:
Procurarsi un floppy di boot o di ripristino o un CDROM di Windows.
Se è un Windows 95, 98, Me, digitare dal DOS: fdisk /mbr
Se si è sulla console di ripristino di Windows 2000, scrivere: fixmbr
In entrambi i casi si sovrascrive e si azzera il MBR dove verosimilmente è stato installato un Linux Loader come LILO e si potrà ritrovare il proprio Windows.
L'effetto collaterale di questa operazione è che a questo punto non sarà più accessible il Linux appena installato: se si sono creati dei floppy di ripristino durante l'installazione di Linux potrà essere possibile caricare Linux con quelli ed eventualmente configurare /etc/lilo.conf (o analoghi file di configurazione del Linux Loader) in modo corretto. Altrimenti è generalmente possibile operare il ripristino bootando dal CDROM usato per l'installazione.
LINK: Creazione di Recovery Disk su Windows NT/2000/XP - http://www.xxcopy.com/xxcopy33.htm
LINK: Creazione di Recovery Disk su Windows 9x/Me - http://www.xxcopy.com/xxcopy32.htm
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 16:04:40
GRUB è un boot loader multipiattaforma estremamente flessibile e potente.
Ha una propria CLI in cui inserire a mano i parametri di boot o può presentare un'interfaccia a menu configurabile tramite il file /etc/grub.conf
.
Per installare grub sul settore di avvio basta dare il comando:
grub-install /dev/hda
(o altro nome di device di boot valido).
A differenza di LILO non c'è bisogno di ridare il comando ogni volta che si cambia la configurazione.
Per la sintassi di /etc/grub.conf
si rimanda alla relativa sezione: si consideri che avendo le stesse funzioni di Lilo, la sua logica è affine a /etc/lilo.conf
.
Solitamente all'avvio Grub si presenta con un menu da cui è possibile scegliere quale sistema operativo caricare, ma è possibile entrare in modalità comandi, simile ad una shell, in si possono eseguire svariate operazioni: dalla scelta del path del kernel, al boot via rete.
SOURCE: Grub Manual - http://www.gnu.org/manual/grub/
HOWTO: Multiboot with GRUB Mini-HOWTO - http://ldp.openskills.info/HOWTO/Multiboot-with-GRUB.html
HOWTO: Linux+Win9x+Grub HOWTO - http://ldp.openskills.info/HOWTO/Linux+Win9x+Grub-HOWTO/index.html
Init e runlevels |
Init, i runlevel e la gestione dei servizi da avviare al boot. |
Tipo Infobox: PATH - Skill Level: 3- INTERMEDIATE - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2004-05-23 16:06:35
/etc/inittab e' il file di configurazione di init, il primo processo che viene lanciato al boot, dopo il caricamento del kernel.
Esso contiene gli script che vengono lanciati per l'inizializzazione del sistema, configurazioni come il runlevel di default e alcune impostazioni come i comandi abbinati ad una sequenza di tasti oppure ai messaggi inviati dall'UPS.
Analizzare e comprendere la logica di questo file è molto utile per conoscere un sistema Unix con cui si ha poca familiarità: di fatto, analizzando i comandi e gli script che vengono eseguiti è possibile ricostruire tutto il processo di start-up del sistema.
Ogni entry del file segue la seguente sintassi:
id:runlevels:action:process
ID - Sequenza di 4 caratteri o meno che identifica in modo univoco la entry. Per quanto riguarda le entry relative alle getty, l'id deve corrispondere al suffisso della getty stessa. 1:2345:respawn:/sbin/mingetty tty1
RUNLEVELS - La lista dei run level per cui questa entry e' valida.
ACTIONS - La modalita' con cui viene eseguito il comando vero e proprio. Le action principali:
respawn: Ri-esegue il comando se termina. Tipicamente usato per i getty sulla console.
wait: Esegue lo script o il comando ed aspetta la sua conclusione prima di procedere.
once: Esegue il comando una sola volta quando il sistema entra nel runlevel configurato
boot: Esegue il process durante il boot ed ignora la entry relativa al runlevel
PROCESS - Il comando o script che effettivamente viene lanciato.
Vediamo un esempio tipico di una distribuzione RedHat Linux. Su altri sistemi Unix questo file può cambiare nella forma (ma non nella sintassi).
[neo@dido neo]$ cat /etc/inittab
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#[...]
# 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)
Run level di default. Se è 5 il sistema parte in modalità grafica. Se è 3 in modalità testuale. Non usare 6 o 0 per evitare che il sistema non parte del tutto!
id:5:initdefault:
Lancio dello script /etc/rc.d/rc.sysinit, che imposta vari settaggi d'ambiente
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
Qui si gestisce effettivamente quali servizi e programmi lanciare ai diversi runlevel. La chiave è il programma rc che viene invocato con il numero di runlevel desiderato
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
Ad ogni boot viene eseguito il comando update
ud::once:/sbin/update
Comando abbinato alla sequenza di tasti CTRL-ALT-DELETE per riavviare il sistema con i 3 tasti magici. Da disattivare su macchine con la tastiera fisicamente accessibile in luoghi non controllati
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Comandi abbinati ai messaggi mandati dall'UPS
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
Inizializzazione dei terminali. Basta aggiungere qui nuove righe (mingetty tty7, tty8 ...) per aumentare il numero di console usabili da tastiera
# Run gettys in standard runlevels
1:2345: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
Al runlevel 5 esegue il comando prefdm
x:5:respawn:/etc/X11/prefdm -nodaemon
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 16:05:49
Init è il padre di tutti i processi, il suo ruolo principale consiste nel gestire il lancio di tutti i programmi necessari per rendere il sistema attivo creare i processi a partire dal suo file di configurazione: /etc/inittab.
Nell'inittab vengono definite le directory con gli script di avvio per i diversi runlevel (stati del sistema, in cui possono girare determinati programmi), il runlevel di default, altri script e comandi che vengono eseguiti al boot o in condizioni particolari.
Il primo script lanciato da inittab è (su RedHat Linux) /etc/rc.d/rc.sysinit: che esegue varie operazioni tra cui:
Impostazioni di alcuni path generali nella variabile $PATH; Configurazione dell'ambiente di rete;
Avvio swap per la memoria virtuale;
Impostazione del nome dell'host;
Check del filesystem root;
Check delle quote di spazio assegnate agli utenti, se previste;
Mount del filesystem root in modalità scrittura/lettura;
Preparazione del sistema per caricamento dei moduli;
Check delle dipendenze dei moduli;
Check di tutti i filesystem ed eventuali riparazioni;
Mount di tutti i filesystem;
Pulizia di file di supporto al boot e di processi non più attivi;
Umount dell'initrd;
Impostazione dell'orologio;
Attivazione dello swapping;
Inizializzazione delle porte seriali;
Caricamento Moduli;
Attivazione dei servizi del runlevel.
Durante la fase di file system check, se si trovano errori che non possono essere riparati automaticamente è possibile che il processo di boot si blocchi. In questo caso viene richiesta la password di root e si può da shell fare un file system check manuale. Verificare su quale partizione il kernel si è fermato e scrivere (si considera che la partizione sia /dev/hda5 e abbia ext2 come file system): fsck.ext2 /dev/hda5.
Rispondere SI a tutte le lugubri domande sulla correzione di file danneggiati.
Ogni sistema Unix gestisce con file e procedure diverse il processo di boot, ma tutti si basano su Init e il suo file di configurazione inittab
. Per cui basta analizzare questo file e capirne la logica per poter capire come viene caricato il sistema ed intervenire dove necessario in caso di problemi.
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-05 12:15:20
Nel mondo Unix ci sono 2 principali approcci al processo di startup del sistema: quello usato da Unix System V e quello, meno complesso ma meno flessibile, usato dai BSD Unix.
Linux utilizza il primo metodo, che si basa su differenti runlevel, astrazioni software per indicare diversi stati della macchina in cui possono girare diversi programmi.
In genere su Linux sono utilizzati i seguenti livelli:
Runlevel 0 : /etc/rc.d/rc0.d
Questo runlevel avvia la sequenza di arresto del sistema (shutdown)
Runlevel 1: /etc/rc.d/rc1.d
Questo runlevel rappresenta la modalità singolo utente, nessun altro utente può collegarsi, il servizio di rete è disabilitato.
Runlevel 2: /etc/rc.d/rc2.d
Rappresenta lo stato multiutente, il servizio rete è attivo ma è disabilitato il file sharing.
Runlevel 3: /etc/rc.d/rc3.d
In genere è quello predefinito quando si opera in modalità testuale, tutti i servizi sono attivi.
Runlevel 4: /etc/rc.d/rc4.d
Inutilizzato. Può essere dedicato ad usi personali
Runlevel 5: /etc/rc.d/rc5.d
E' il runlevel predefinito quando si vuole avviare Linux in modalità grafica
Runlevel 6: /etc/rc.d/rc6.d
Il runlevel 6 è quello di reboot.
Lo script /etc/rc.d/rc
gestisce quali processi far partire a seconda del runlevel, andando ad analizzare le singole directory /etc/rc.d/rc#.d. In queste directory esistono una serie di symlink con nomi del tipo S12syslog o K65identd che puntano a degli script con nomi tipo /etc/rc.d/init.d/syslog o /etc/rc.d/init.d/identd.
/etc/rc.d/rc a seconda della directory corrispondente al runlevel da caricare fa partire tutti gli script che iniziano con S e fa chiudere tutti quelli che iniziano con K, eseguendoli nell'ordine indicato dal numero presente nei nomi dei file.
Gli script che di fatto permettono di gestire l'avvio o lo stop di un servizio sono quindi nella directory /etc/rc.d/init.d/
e possono essere utilizzati direttamente dall'utente per gestire i singoli processi.
Per esempio: /etc/rc.d/init.d/httpd start fa partire il server Web e /etc/rc.d/init.d/stop lo fa stoppare.
Se abbiamo il file (link a ../init/httpd ) /etc/rc.d/rc3.d/S85httpd, quindi, avremo un server web avviato quando la macchina è al run-level3 (runlevel di default per un server, che non ha bisogno di Xwindows).
Se vogliamo evitare che venga avviato un server web, bastera rinominare il file, sostituendo la K alla S:
mv /etc/rc.d/rc3.d/S85httpd /etc/rc.d/rc3.d/K85httpd
Nel fare queste operazioni va sempre considerato il numero dopo la prima lettera, che determina l'ordine di esecuzione degli script.
Questa è una logica comune a tutti gli Unix derivati da System V, possono cambiare i nomi dei runlevel, e in certi casi la funzione, ma non la logica di questra struttura di boot.
Tipo Infobox: TIPS - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-08 16:19:01
Durante l'installazione di Linux o altri Unix viene solitamente chiesto all'utente se si desidera, dopo il boot, avere un'interfaccia testuale (la shell) o visualizzare il login grafico su una finestra Xwindows.
In genere su un server ha sempre senso avere un'interfaccia solo testuale (init 3) e su una workstation di solito si lavora in modalità grafica (init5).
Per cambiare questa impostazione basta agire su /etc/inittab
La parola chiave initdefault
indica il runlevel di default:
Per avviare il sistema in modalità testuale: id:3:initdefault
Per avviare il sistema in modalità grafica: id:5:initdefault
NON inserire valori come 0 o 6 (halt, reboot)! Il sistema non riuscirebbe mai a partire correttamente.
(F)AQ: Come si fa a scegliere se far partire il proprio Linux in modalità testo o in modalità grafica? -
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2003-12-08 23:03:25
Il comando service permette di gestire l'avvio, il riavvio o lo stop di un servizio senza dover digitare il percorso completo dello script relativo.
Nelle distribuzioni Linux Red Hat e derivate, è possibile utilizzare il comando service
per gestire manualmente i servizi di sistema. Per esempio, volendo controllare lo stato del servizio dhcp server è sufficiente utilizzare il comando service dhcpd start
anzichè /etc/r.cd/init.d/dhcpd start
.
Service non è altro che uno script shell che permette di gestire le classiche operazioni che si compiono in merito ad un servizio, tipicamente: avviarlo, fermarlo, riavviarlo e verificarne lo stato.
Alcuni esempi di utilizzo:
[root@Enigma root]# service mysqld start
Starting MySQL:8 [ OK ]
Start di MySql server
[root@Enigma root]# service mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
MySql viene riavviato
[root@Enigma root]# service mysqld status
mysqld (pid 3580) is running...
In questo caso viene visualizzato lo stato del server con relativo Process Identifier
[root@Enigma root]# service mysqld stop
Stopping MySQL: [ OK ]
Il server viene fermato
Tramite le opzioni di service vi è la possibilità visualizzare lo stato, oppure eseguire il restart, anche di tutti i servizi contemporaneamente.
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2005-06-21 16:15:11
Visualizza il runlevel attuale in cui gira il sistema e quello precedente.
La sintassi:
runlevel [utmp]
Il comando runlevel
, ricava i dati dal file /var/run/utmp
e visualizza sullo standard output il runlevel corrente e quello precedente. Qualora non esista il file utmp, o non venga trovato il record relativo, viene visualizzato il messaggio unknown. Esempio:
root@Joker:~# runlevel
N 3
In questo caso, il runlevel corrente è il 3, mentre N sta a significare che non vi erano precedenti runlevel, ovvero che la macchina è stata avviata direttamente al terzo.
Tipo Infobox: TIPS - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-08 15:53:31
Perchè Unix, nato agli arbori degli anni settanta del secolo scorso è ancora un sistema operativo diffuso, utilizzato e vitale nelle sue varianti, Linux incluso?
Perchè Unix è in grado di radunare una folta schiera di utenti e amministratori fieri e fanatici della propria unixità?
Le spiegazioni sono tante, quasi tutte legate alla natura stessa del sistema operativo e a come è stato inizialmente sviluppato.
Uno dei motivi da non sottovalutare è che di fatto TUTTO su Unix è in ultima analisi riconducibile ad un file di testo ASCII che si può editare con un comune editor di testi.
Basta essere root ed avere un vi e il proprio Unix diventa un libro aperto che si può riscrivere:
- I sorgenti del kernel e del software sono liberamente accessibili e modificabili (questo vale per Unix opensource, come Linux, *BSD, Hurd ecc.)
- Il padre di tutti i processi si configura con inittab, un normale testo con una logica ben precisa.
- Gli script di startup sono generalmente comuni script shell, che richiamano altri script e costruiscono il boot del sistema.
Di fatto si può decidere di far fare al proprio sistema esattamente quello che si vuole.
Certo, per essere in grado di modificare il proprio Unix come si vuole lo si deve conoscere bene, ma una volta capita la logica molte operazioni sono quantomeno "controllabili" e diagnosticabili con relativa semplicità.
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-05-08 14:22:08
La struttura di gestione dei processi e degli script da avviare al boot sulla base delle directory /etc/rc.* permette di stabilire cosa eseguire e cosa no con una logica ben precisa anche se non particolarmente semplice.
Su tutti gli Unix esistono tool, testuali o grafici, che permettono di gestire più facilmente quali servizi avviare al boot.
Per esempio, su distribuzioni RedHat, utilizzando il comando ntsysv è possibile accedere ad un tool grafico (su interfaccia testuale) dedicato.
I processi identificati da un asterisco (*) e dal nome del servizio indicano che il processo verrà attivato al boot, altrimenti i processi identificati solo dal nome del servizio e da una casella vuota indicano i processi che non verranno fatti partire.
Alternativamente si può usare il comando serviceconf su interfaccia grafica o il comando shell chkconfig.
In genere tutti gli strumenti "all purpose" di amministrazione della macchina prevedono una parte di gestione del boot. Su AIX si può usare smitty, su Suse Linux Yast, su Mandrake Linux Drake ecc.
Anche sotto XWindow sono disponibili svariati programmi per eseguire questa funzione.
A prescindere dallo strumento usato, è molto importante disattivare, nella fase di boot, l'avvio di tutti i processi e servizi non utilizzati, sia per evitare sprechi delle risorse del sistema che per ragioni di sicurezza.
GESTIONE DEGLI UTENTI
La logica di gestione degli utenti su Linux, ancora una volta, è simile a quella di tutti gli Unix.
Sono sistemi operativi multi utente, dove per poter fare qualcosa (accedere al sistema) è necessario eseguire un login e fornire la relativa password.
Abbiamo già visto l'importanza dell'utente root, il dio assoluto di un sistema Unix, l'Administrator della situazione, colui che tutto può dalla / (root, intesa come directory madre) in poi.
Vediamo ora come gestire gli utenti del sistema, una attività sistemistica comune e necessaria.
Come sempre, diverse distribuzioni possono presentare diverse interfacce grafiche che permettono una configurazione degli utenti comoda e semplice.
Tutte si appoggiano a principi di fondo, comandi e file comuni, che è la parte che ci interessa evidenziare.
Approfondimenti: Gestione degli utenti
GESTIONE DEL SOFTWARE
Software diversi vengono gestiti (installati, interrogati, rimossi, aggiornati) su Linux basandosi su una logica a pacchetti, che possono contenere un programma, delle librerie, i sorgenti o, a volte, la documentazione completa di un applicativo.
Su Linux esistono diversi formati per la gestione dei pacchetti, i principali sono RPM (usati su redHat, Suse, Mandriva e derivate), DEB (usati su Debian e derivate come Knoppix, Mepis, Ubuntu) e TGZ (usati su Slackware e derivate).
Un file .rpm (o .deb o .tgz) è come se fosse il setup.exe di un programma Windows: contiene tutti i file, i dati e i programmi che vanno installati sul sistema.
Per gestire file .rpm si utilizza il comando rpm (da interfaccia testuale) o vari strumenti in ambiente grafico (tra cui il gestore dei pacchetti disponibile sotto Gnome e che viene usato anche in fase di installazione), che di fatto sono un semplice front-end del comando rpm.
Per gestire file .deb si utilizza dpkg.
Maggiori informazioni in - Installare programmi su Linux e Unix
Tutte le distribuzioni recenti utilizzano sistemi di aggiornamento online che possono essere usati anche per l'installazione di nuovi pacchetti.
Spesso forniscono un front-end grafico per rendere queste attività semplici e gestire automaticamente le dipendenze, quasi sempre il front-end grafico lavora su un sistema di gestione degli aggiornamenti e dell'integrità del database dei pacchetti disponibili.
Su Fedora su usa "yum", su Debian "apt", su Mandriva "urpmi", su RedHat si usa il comando up2date per collegarsi al servizio online RedHat Network.
Ulteriori informazioni in: Aggiornamento di un sistema Linux
BACKUP
Altra attività sistemistica tipica è il backup.
Non ci occuperemo estesamente di procedure di backup ma dobbiamo accennare ai comandi puù comuni in ambiente Unix per gestire e compattare file:
tar, gzip e anche bzip2 e zip.
Info: Backup e compressione di file
CRON E OPERAZIONI PIANIFICATE
Su ogni sistema Unix esiste la possibilità di eseguire automaticamente comandi ad intervalli di tempo specificati (è l'equivalente delle Operazioni Pianificate di Windows).
Questo meccanismo si chiama crontab.
Su molti Linux, destinati ad essere usati come desktop, al crontab viene affiancato anacrontab, che permette la schedulazione di processi previsti da crontab in un ora in cui il computer è spento.
Su un server, sempre acceso, anacrontab non è necessario.
Info su: Schedulazione dei processi
LOG DI SISTEMA
In ogni sistema Unix i log di molti programmi vengono gestiti da un processo specifico: syslog.
Ogni programma in esecuzione sul sistema può utilizzare syslog per tutte le attività di logging (alcuni programmi, come Apache o Samba, possono loggare con sistemi autonomi).
Per sapere dove vengono salvati i log, basta guardare e capire il file /etc/syslog.conf, presente praticamente in ogni sistema Unix.
Informazioni in Gestione e analisi dei log
Gestione degli utenti |
I file che gestiscono gli utenti: /etc/passwd, /etc/group, /etc/shadow. I comandi per gestire gli utenti: adduser, passwd, userdel. |
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2004-05-23 16:07:36
Comando che permette di settare, modificare la password di un utente.
Root può modificare le password di ogni utente, mentri gli utenti normali possono modificare solo la propria.
passwd [-d] [-S] [username]
-d
Disabilita la password per l'utente
-S
Verifica lo status della password dell'utente.
Esempi
passwd
Cambia la password dell'utente corrente. La password va digitata due volte e, in certi sistemi, deve avere un numero minimo di caratteri.
passwd al
Cambia la password dell'utente al. Solo root può cambiare le password degli altri utenti.
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-09-20 10:27:33
Unix è un sistema operativo multiuser che, oltre all'utente root, con privilegi di amministrazione, prevede utenti di sistema (usati per eseguire processi e demoni) e utenti umani che utilizzano e accedono in vario modo alla macchina.
La gestione (aggiunta, modifica, cambio password, cancellazione) degli utenti del sistema è tipicamente compito di root, che ha a disposizione su diversi sistemi Unix variegati programmi grafici o comandi testuali per queste operazioni.
I comandi più comuni e standard per gestire gli utenti sono:
useradd [opzioni] nomeutente
Aggiunge un utente al sistema. Prevede varie opzioni per definire impostazioni specifiche.
userdel [opzioni] nomeutente
Elimina un'utente. Su molti Unix questo comando non cancella la home directory dell'utente.
groupadd [opzioni] nomegruppo
Aggiunge un gruppo.
passwd [nomeutente]
Modifica la password. Tutti gli utenti, tranne root, possono cambiare solo la propria password.
Il file con l'elenco di tutti gli utenti è, su tutti i sistemi Linux, /etc/passwd
, qui ci sono informazioni sulla login dell'utente, la shell utilizzata, la posizione della sua home directory, dove l'utente può liberamente scrivere dati e documenti.
In tutti i Linux moderni, la password, criptata viene scritta nel file /etc/shadow
dove vengono mantenute altre informazioni relative alla gestione della stessa.
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2003-11-28 22:47:29
Crea un utente o modifica le proprietà di default per la creazione degli utenti.
Creazione di un nuovo Utente
adduser [opzioni] login-name
Modifica delle impostazioni d di un nuovo Utente
adduser -D [opzioni]
Opzioni per la creazione di un nuovo utente
-c [comment]
Commento all'interno di /etc/passwd
-d [home_dir]
Specifica la home dir del nuovo utente
-e expire-date
Indica la data di scadenza dell'account, formato della data YYYY-MM-DD
-f inactive_days
Indica il numero di giorni, che intercorrano fra la data di expire della password e la disabilitazione dell'account
-g group
Indica il primo gruppo di appartenenza. Per poter utilizzare questa opzione il gruppo deve gia' esistere
-G group
Indica gli altri gruppi di cui il nuovo utente fara' parte
-m
La home dir dell'utente verra' creata se non esiste
-p
Identifica la password cryptata
-s
Specifica la shell dell'utente
-u
Specifica l'UID dell'utente
Opzioni per la modifica delle opzioni di default
-b default_home
Setta il prefix per la creazione delle home di default
-e default_expire_date
Setta la data di expire dell' account
-f default_inactive
Indica il numero di giorni, che intercorrono fra la data di expire della password e la disabilitazione dell'account.
-g default_group
Identifica il gruppo iniziale di default
-s default_shell
Identifica la shell di default
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2003-11-28 22:48:18
Cancella un account e i relativi file
userdel [-r] login-name
-r
Oltre a cancellare l'account vengono cancellate anche la home directory (di default viene lasciata inalterata) e la posta.
Tipo Infobox: PATH - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2003-11-28 23:04:51
Il file /etc/passwd
è il database degli utenti su ogni sistema Unix. Ad ogni user è dedicata una riga che definisce quali sono i suoi principali attributi. Sui sistemi Unix meno recenti in questo file viene scritta anche la password (criptata), su quelli più recenti viene scritta, generalmente, in /etc/shadow
, che ha maggiori restrizioni in termini di sicurezza.
Le righe di /etc/passwd si presentano nella seguente forma:
Username:Password:UserID:GroupID:Info:HomeDirectory:Shell
Username:
Nome dell'user, la login con cui può accedere al sistema;
Password:
Campo riservato alla password dell'utente. Può essere scritta direttamente in forma criptata o esserci semplicemente una x
(la password c'è ma è scritta altrove, di solito in /etc/shadow
). Se c'è un *
(asterisco) significa che l'utente o non ha una password o la password non è valida (in questo caso non gli è permesso di login);
UserID:
ID dell'user;
GroupID:
ID del gruppo di appartenenza;
Info:
Contiene informazioni sull'utente non necessarie al sistema (nome esteso, numero di telefono, mail ecc...);
HomeDirectory:
Indica la directory della home dell'utente;
Shell:
Indica la shell di default per quell'utente.
Un esempio:
[diego@vagante diego]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[...]
diego:x:501:503::/home/diego:/bin/bash
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2003-11-28 22:50:31
Crea un nuovo gruppo
groupadd [-g gid [-o]] [-r] [-f] group
-g
Valore numerico del group ID
-r
Identifica la creazione di un gruppo di sistema ovvero con GID inferiore a 499
Tipo Infobox: PATH - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2003-11-28 23:07:52
Il file /etc/shadow
è il database delle password sui Unix più evoluti. In esso sono elencate per ogni utente la password (criptata) e vari parametri ad essa connessi (ultima modifica, durata massima e minima, ecc...). Ad esso fanno riferimento diversi files, fra cui /etc/passwd e tutti i comandi per la gestione degli utenti (useradd, userdel, usermod).
Le righe in /etc/shadow si presentano nella seguente forma:
Username:password:lastchange:min:max:warn:inactive:expire:
Username:
Il nome dell'utente a cui fa riferimento la password;
Password:
Password criptata (13 caratteri). Puo assumere anche altri valori quali *
(asterisco) che sta ad indicare che l'utente è disabilitato e !!
(o nessun carattere) che significa che l'utente non ha password (cosa molto pericolosa in termini di sicurezza);
lastchange:
Numero di giorni compresi fra il 1 gennaio 1970 e l'ultima modifica della password;
min:
Minimo numero di giorni dall'ultima data di modifica prima di poter nuovamente cambiare la password;
max:
Durata massima della password (sempre in giorni);
warn:
Numero di giorni di preavviso all'utente prima di invalidare la password;
inactive:
Numero di giorni di inattività possibili per quell'utente.
expire:
Data dopo la quale quel login non può più essere usato.
Un esempio da un RedHat Linux standard evidenzia che di default non sono previste scadenze per la password e vari altri parametri:
[diego@vagante diego]$ cat /etc/passwd
:root:$1$ÐQEXe5ÀJ$Jffvxi5UaGHpaMckCsKH0:11628:0:99999:7:::
:daemon:*:11628:0:99999:7:::
[...]
:xfs:!!:11628:0:99999:7:::
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2003-11-28 22:54:53
Comando che permette di cambiare le impostazioni di un account creato precedentemente.
usermod [opzioni] login-name
-c comment
Modifica, aggiunge il commento
-d home_dir
Modifica la home_dir dell'utente
-e expire_date
Modifica l'expire_date, ovvero quando l'account verrà disabilitato
-f inactive_days
Modifica il numero di giorni che intercorrono fra la scadenza della password e la disabilitazione dell'account
-g initial_group
Modifica il gruppo primario
-G groups
Modifica i Gruppi secondari
-l login
Cambia il nome di login dell'utente
-p password
Modifica la password (criptata)
-s shells
Modifica la shell di default dell'utente
-u UID
Modifica l'UID
-L
Esegue il lock dell'account
-U
Operazione inversa del lock, ovvero riabilita l'account
Tipo Infobox: PATH - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2003-11-28 23:09:49
Il file /etc/group
contiene l'elenco dei gruppi di utenti presenti nel sistema. Ad ogni gruppo è associata una riga nella quale si trova l'IDgroup e l'elenco degli utenti che ne fanno parte.
Alcuni Unix creano un nuovo gruppo per ogni nuovo utente, altri hanno il gruppo "users" in cui vengono automaticamente inseriti tutti gli utenti aggiunti al sistema.
Di fatto i gruppi servono per gestire con maggiore flessibilità l'accesso ai file e di conseguenza l'uso delle risorse.
Le righe di /etc/group si presentano nella seguente forma:
GroupName:Password:GroupID:User1,User2,...,UserN
GroupName:
Indica il nome del gruppo;
Password:
Indica la password del gruppo. Solitamente non viene data una password al gruppo ma solo ai singoli utenti;
GroupID:
Indica l'ID associato a quel gruppo;
User1,User2,...,UserN:
E' l'elenco degli users appartenenti a quel gruppo. I nomi dei singoli users devono essere sparati da una virgola.
Un esempio:
[diego@vagante diego]$ cat /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
[...]
wheel:x:10:root,macno
Tipo Infobox: DESCRIPTION - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-28 22:35:24
Su Unix sono comuni diversi comandi e programmi per gestire gli utenti del sistema (es: useradd, usermod userdel).
Quelle che questi strumenti fanno automaticamente sono operazioni sul sistema che si possono fare manualmente.
Ovviamente si consiglia di usare tool dedicati come useradd
e groupadd
per queste attività.
Per aggiungere un utente al sistema si deve:
- Essere utente root, o avere analoghi privilegi.
- Editare /etc/passwd
aggiungendo una riga per il nuovo utente, facendo estrema cura al formato del file;
- [Non indispensabile] Editare /etc/group
aggiungendo un nuovo gruppo per il nuovo utente e/o aggiungendo il nuovo utente ad un gruppo di usenti generici;
- Se esiste il file /etc/shadow
editarlo aggiungendo una nuova riga per l'utente;
- Creare la home directory del nuovo utente: mkdir /home/nomeutente
;
- Ricreare l'ambiente base (script di inizializzazione shell o altri programmi) nella nuova home: cp /etc/skel/* /home/nomeutente/
;
- Modificare il proprietario della home: chown -R nomeutente:nomegruppo /home/nomeutente
;
- Modificare i permessi della home: chmod -700 /home/nomeutente
;
- Modificare la password dell'utente: passwd nomeutente
Questa è una procedura generalmente valida su ogni Linux e Unix, è utile conoscerla, ma resta più comodo e raccomandabile usare i comandi di gestione utente (testuali o grafici) del proprio Unix.
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-11-28 22:43:34
Storicamente su Unix il file /etc/passwd
contiene l'elenco di tutti gli utenti e la loro password in forma criptata.
Per la stessa natura di Unix tutti gli utenti devono poter aver accesso in lettura a questo file, per cui l'esporre le password di tutti, seppur criptate, risultava rischioso per la sicurezza del sistema.
Su tutti i Linux e gli Unix non troppo vecchi, la gestione della password è stata migliorata sia in termini di sicurezza che di versatilità affiancando al normale /etc/passwd
la gestione del file /etc/shadow
che introduce nuove funzionalità:
- Questo file è leggibile solo da root mentre viene lasciato l'accesso il lettura a /etc/passwd per tutti gli utenti;
- Le password in /etc/shadow sono criptate con algoritmi più complessi e robusti;
- E' possibile gestire il tempo di scadenza, la durata minima e massima e i tempi di notifica della password.
Notare che:
- se la password è scritta in /etc/shadow, in /etc/passwd c'è solo una x al posto della password criptata.
- se in /etc/passwd il campo password è un * , la password è nulla e l'utente non può accedere al sistema.
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2002-10-17 14:46:54
Comando che ti permette di modificare le caratteristiche di un gruppo, creato precedentemente.
groupmod [-g gid [-o]] [-n group_name ] group
-g
Identifica l'UID del gruppo
-o
Flag che assicura l'uso di un UID non univoco
-n group_name
Indica il nuovo nome del gruppo
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2003-11-28 23:01:32
Utility che permette di amministrare la scadenza delle password dei vari utenti del sistema
Modalità di editing
chage [-m mindays] [-M maxdays] [-d lastday] [-I inactive] [-E expiredate] [-W warndays] user
Modalità di visualizzazione delle informazioni
chage -l [user]
-m
Indica i giorni minimi per poter cambiare password
-M
Indica il numero massimo di giorni di validità della password.
-d
Indica il numero del giorno in cui è stata cambiata la password
-I
Indica il numero di giorni di intermezzo fra la scadenza della password e la disabilitazione dell'account
-E
Indica la data di scadenza della password
-W
Indica il numero di giorni per i quali il sistema avvisa che la password sta scadendo
Tipo Infobox: PATH - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2003-11-28 23:10:44
Directory contenente i file predefiniti che vengono copiati nella home di ogni nuovo utente quando viene creato con le impostazioni di default.
Ecco l'elenco dei file contenuti in /etc/skel di una redhat 7.2 con impostazioni di default.
Per la maggior parte si trattano di file riguardanti le impostazioni delle shells o configurazioni per-user di programmi installati.
neo@dido neo]$ ls -latr /etc/skel/
total 28
File contenenti le impostazioni della bash
-rw-r--r-- 1 root root 124 Jul 9 2001 .bashrc
-rw-r--r-- 1 root root 191 Jul 9 2001 .bash_profile
-rw-r--r-- 1 root root 24 Jul 9 2001 .bash_logout
File contenenti le impostazioni di emcas
-rw-r--r-- 1 root root 820 Jul 30 2001 .emacs
File contenenti le impostazioni dell'utility screen
-rw-r--r-- 1 root root 3511 Aug 3 2001 .screenrc
drwxr-xr-x 2 root root 4096 Jul 16 10:30 .
drwxr-xr-x 52 root root 4096 Oct 17 12:36 ..
Tipo Infobox: PATH - Skill Level: 3- INTERMEDIATE - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2003-11-28 23:16:22
File di configurazione, sui Linux basati sulla distribuzione RedHat che contiene tutte le opzioni di default sugli utenti del sistema.
[neo@dido skel]$ cat /etc/login.defs
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500
UID_MAX 60000
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500
GID_MAX 60000
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is ORed with the -m flag on
# useradd command line.
#
CREATE_HOME yes
Tipo Infobox: BOFH - Skill Level: 3- INTERMEDIATE - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2004-06-13 12:53:47
Prima creazione di un utente con cambio password forzato.
Tra i compiti dell'amministratore di sistema vi è quello di gestire gli account utente. Solitamente, per ogni nuovo user, si crea un nuovo account con nome e password uguali, ricordando poi all'utente di modificare la propria password per non creare punti deboli nella sicurezza del sistema.
[root@Apollo13 root]# useradd morpheus ; echo "morpheus" | passwd --stdin morpheus; chage -d0 morpheus;
Changing password for user morpheus.
passwd: all authentication tokens updated successfully.
Questa command line permette di creare l'utente useradd [user]
, quindi ne setta la password uguale al nome echo "[user]" | passwd --stdin [user]
e successivamente forza il cambiamento della password al primo accesso con chage -d0 [user]
.
homer@Joker:/opt# ssh [email protected]
[email protected]'s password: *******
You are required to change your password immediately (root enforced)
Changing password for morpheus
(current) UNIX password: ********
New password: ********
Retype new password: *********
[morpheus@Apollo13 homer]$
Il sistema richiede il cambio password forzato al primo login
L'utilizzo di questo command line, è consigliato solo nel caso in cui l'accesso del nuovo utente al sistema avvenga immediatamente, pena un'alta vulenerabilita' delllo stesso data dall'uguaglianza di nome e password.
Installare programmi su Unix e Linux |
Utilizzo di RPM per installare, aggiornare, rimuovere pacchetti .rpm. Utilizzo di tar.gz |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-09-27 22:16:46
Per installare dei programmi su Linux esistono vari modi:
- compilare il sorgente, pratica che può essere complessa ma è utile in casi particolari;
- utilizzare pacchetti (packages) che contengono i programmi già compilati e pronti per l'uso, facilitando e standardizzando la gestione del software sul sistema.
I sistemi di package più comuni su Linux sono RPM e DEB.
I pacchetti .deb vengono usati nelle distribuzioni derivate da Debian, gli .rpm sono stati definiti da RedHat e risultano essere i più diffusi.
Slackware pacchettizza il suoi programmi con normali tar gzippati: .tgz.
Affrontiamo qui l'uso di RPM, Red Hat Package Manager, sottolineando che file .deb e, in parte, .tgz vengono gestiti con comandi diversi ma hanno una logica simile.
Un package costruito con RPM è un archivio di file e informazioni che può essere installato, rimosso, interrogato sul sistema.
RPM permette di installare programmi, già compilati, con una facilità e rapidità estrema sul proprio Linux (è paragonabile ad un unico setup.exe su Windows).
Si sottolinea che ogni distribuzione e anche ogni versione della stessa distribuzione richiede pacchetti dedicati, adatti per il proprio sistema: un RPM realizzato per RedHat 6.2, per esempio, difficilmente funzionerà su RedHat 7.2.
RPM gestisce automaticamente le "dependencies": se si prova ad installare un RPM che richiede librerie o programmi non presenti o non abbastanza aggiornati sul sistema, l'installazione fallisce e viene indicato quali file mancano.
Analogamente, se si prova a rimuovere un package che contiene file utilizzati da altri programmi, viene dato un messaggio di errore.
Gli RPM automaticamente distribuiscono i file di un pacchetto nelle directory giuste (logs in /var/log, file di configurazione in /etc/, binari in /usr/bin o /usr/sbin, script di startup in /etc/rc.d/init.d/ ecc.) e verificano la presenza di conflitti o installazioni più recenti.
La rimozione di un RPM non cancella mai nulla che non abbia installato. Se deve sostituire o cancellare un file di configurazione, per esempio, viene mantenuto il file esistente con il suffisso .rpmsave
.
Le opzioni più comuni per usare il comando rpm
per gestire file .rpm sono:
rpm -i [opzioni] pacchetto
Installa il pacchetto .rpm specificato.
rpm -U [opzioni] pacchetto
Aggiorna il pacchetto con una versione più recente.
rpm -e [opzioni] pacchetto
Disinstalla il pacchetto, rimuovendone i file dal sistema.
rpm -q [opzioni] [pacchetto]
Visualizza informazioni varie sul pacchetto (descrizione, file contenuti ecc.)
Le comuni distribuzioni Linux offrono svariati tool grafici per una semplice gestione dei pacchetti installati sul sistema. Di fatto questi programmi eseguono le stesse operazioni del comando rpm, ma sono più semplici ed immediate da usare.
La tendenza, sempre più diffusa, è quella di prevedere meccanismi di update automatizzato, per gestire il sempre alto numero di aggiornamenti (per sicurezza e bug fix) di programmi.
E' un principio analogo al Windows Update su sistemi Microsoft, ma si applica a tutti i programmi installati, e non solo al sistema operativo.
LINK: RPM Updaters - SIstemi di aggiornamento automatico - http://www.rpm.org/software/updaters/
LINK: RPM GUI. Programmi e strumenti grafici - http://www.rpm.org/software/gui/
LINK: RPMFIND - Database in cui cercare RPM per varie distribuzioni - http://rpmfind.net/
LINK: Freshrpm - Utile repository di RPM aggiornati - http://freshrpms.net/
LINK: Repository di interessanti pacchetti RPM per RedHat-Fedora - http://dag.wieers.com/packages/
Tipo Infobox: DISTRO - Skill Level: 3- INTERMEDIATE - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2003-04-08 15:51:16
Anche la distribuzione Linux Slackware utilizza software di Package Management, che sebbene più spartano rispetto a RPM di Red Hat o a Deb di Debian, permette di mantenere in ordine i pacchetti installati nel sistema
I packages di Slackware sono dei semplici tar compressi con gzip. Questa distribuzione mette a disposizione alcune utility per gestirne l'installazione, la rimozione, l'aggiornamento e di mantenere traccia delle operazioni tramite un database.
I principali tools forniti da Slackware per il management delle applicazioni sono quattro: pkgtool, installpkg, removepkg upgradepkg.
pkgtool
Pkgtool è un'utility di tipo menu-driven che permette di visualizzare, installare e rimuovere i packages. Attraverso questo tool è possibile visualizzare il contenuto di ogni package, disinstallarlo o scegliere da dove installarne uno nuovo. Tramite pkgtool non è però possibile effettuare l'aggiornamento, prerogativa disponibile solo per le utility di tipo command line che dispongono anche di un maggior numero di opzioni.
Passiamo agli strumenti a linea di comando.
installpkg
Installpkg gestisce l'installazione di nuovi packages nel sistema.
Sintassi:
root@Joker:/# [ROOT=<path>] installpkg [options] <nome package>...
Opzioni:
-m
: Esegue un makepkg
(Utility per creare i packages) nella directory corrente;
-warn
: Visualizza i cambiamenti nel sistema in caso di installazione del package. Usato sulle macchine di produzione per sapere cosa accadrà installando un software;
-r
: Installa ricorsivamente i packages contenuti nella directory corrente e nelle subdirectory. E' possibile utilizzare delle wildcards.
Settando la variabile ROOT è possibile utilizzare una directory a propria scelta, diversa da /
, per memorizzare i dati relativi all'installazione.
Al termine dell'installazione, se presente, nella subdirectory install/
del package verrà eseguito uno script di nome doinst.sh
che permette di rifinire l'installazione creando per esempio link simbolici.
Le informazioni del database dei packages installati, ovvero un file in plain text per ogni programma, si trovano in /var/log/packages
mentre gli eventuali script di post installazione si trovano in /var/log/scripts/<nomepackage>
.
removepkg
Removepkg si occupa di disinstallare i packages dal sistema.
Sintassi:
root@Joker:/# [ROOT=<path>] removepkg [options] <nome package>...
Opzioni:
-copy
: Il package non viene rimosso ma viene copiato in in una directory in /var/log/setup/tmp/preserved_packages
uguale all'originale;
-keep
: Tiene traccia dei file temporanei creati durante la disinstallazione. E' comodo per scopi di debugging;
-preserve
: Il package viene rimosso, ma copiato per sicurezza in un'altra directory, ovvero /var/log/setup/tmp/preserved_packages
;
-warn
: Visualizza quali problemi potrebbero esserci rimuovendo il package;
Settando la variabile ROOT è possibile utilizzare una directory a propria discrezione, diversa da /
, per memorizzare le informazioni relative alla disinstallazione.
Se presente, removepkg esegue lo script di postinstallazioine in modo da rimuovere, oltre ai file del package, anche eventuali link simbolici presenti.
Durante il processo di disinstallazione, vengono visualizzate le informazioni sullo stato dell'operazione. Una volta terminato li processo, le informazioni del packages e lo script di post installazione sono rispettivamente spostati in /var/log/removed_packages
e /var/log/removed_scripts
.
upgradepkg
Upgradepkg gestisce l'aggiornamento di un package Slackware già installato.
root@Joker:/# [ROOT=<path>] upgradepkg <package name>...
oppure:
root@Joker:/# [ROOT=<path>] upgradepkg [options] <vecchio nome package> <nuovo nome package>
Upgradepkg esegue nell'ordine, l'installazione del nuovo package e la disinstallazione del vecchio. Se il nome del package è cambiato da una versione all'altra è possibile usare la seconda versione del comando.
Al fine di evitare i problemi dovuti a qualche bug di upgradepkg come per esempio la sovrascrittura accidentale dei file di configurazione, è sempre consigliato fare un backup dei propri file di configurazione.
In tutte e tre le utility è possibile specificare più di un package utilizzando nel nome le wildcards.
SOURCE: Slackware Linux Essentials - The Official Guide To Slackware Linux - http://www.slackware.com/book/
Tipo Infobox: DISTRO - Skill Level: 3- INTERMEDIATE - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2004-01-21 14:01:46
Tramite l'utility rpm2tgz è possibile trasformare un pacchetto RPM nel formato gestito dal Package Management di Slackware
Uno dei formati più popolari tra i sistemi di packaging è RPM di Red Hat, ed è quindi probabile trovare spesso software in questo formato. A volte è possibile che il pacchetto ricercato sia disponibile solamente in questo formato. In questo caso è possibile trovare una soluzione (anche se non in tutti i casi), per l'installazione in una distribuzione Slackware, grazie all'utility rpm2tgz.
Il programma rpm2tgz crea un pacchetto con estensione .tgz partendo da un pacchetto RPM, la sua sintassi è: rpm2tgz <file.rpm>
Un esempio di utilizzo:
root@Joker:/test# ls
nmap-3.00-1.i386.rpm
Il file di partenza è un pacchetto di tipo RPM
root@Joker:/test# rpm2tgz nmap-3.00-1.i386.rpm
root@Joker:/test# ls
nmap-3.00-1.i386.rpm nmap-3.00-1.i386.tgz
Una volta lanciata l'esecuzione del programma si ottiene un pacchetto di tipo tgz gestibile dalle utility di Slackware come pkgtool, installpkg, removepkg o upgpackage
SOURCE: Slackware Linux Essentials - The Official Guide To Slackware Linux - http://www.slackware.com/book/
Tipo Infobox: DESCRIPTION - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2009-02-05 13:30:12
Distribuzioni basate su RPM (RedHat, Mandriva, Suse...) e su DEB (Debian, Ubuntu...) utilizzano comandi diversi per fare gestire i pacchetti.
Vediamo in breve come si fanno le stesse operazioni nei due mondi.
- Software e comandi
dpkg e rpm sono i comandi base per gestire (installare, rimuovere, interrogare) pacchetti di tipo .deb e .rpm (rispettivamente).
apt-get, yum (ma anche urpmi su Mandrake, o up2date su RedHat o Yast2 su Suse ecc.) sono sistemi per gestire automaticamente lo scaricamento di pacchetti da Internet, il loro aggiornamento, la gestione delle dipendenze.
Quindi:
dpkg sta a pacchetti .deb come rpm sta a pacchetti .rpm
apt-get sta a dpkg come yum sta a rpm:
- Elenco completo dei programmi installati sul sistema
rpm -qa (su sistema basati su RPM)
dpkg -l (su sistemi basati su DEB)
- Installare un pacchetto
yum install tcpdump ( o rpm -i tcpdump-ver.dist,arch.rpm )
apt-get install tcpdump ( o anche dpkg -i tcpdump-ver.arch.deb )
- Rimuovere un pacchetto
rpm -e tcpdump ( o anche yum remove tcpdump )
dpkg -r tcpdump ( o anche apt-get remove tcpdump )
- Visualizzare l'elenco dei file forniti da un pacchetto
rpm -ql tcpdump (o, se non ancora installato: rpm -qlp tcpdump.arch.rpm)
dpkg -L tcpdump (o, se non ancora installato: dpkg --contents tcpdump-version.arch.deb)
- Visualizzare informazioni su un pacchetto
dpkg -s tcpdump
rpm -qi tcpdump
- Trovare da quale pacchetto è stato installato un dato file
rpm -qf /path/nomefile (es: rpm -qf /etc/issue)
dpkg -S /path/nomefile (es: dpkg -S /etc/issue)
- Aggiornamento del sistema
yum update su sistemi Fedora/RedHat
apt-get upgrade su sistemi Debian e derivati
- Ricerca all'interno del database dei pacchetti
yum search squirrelmail
apt-cache search squirrelmail
Tipo Infobox: BOFH - Skill Level: 2- JUNIOR - Autore: Marco 'w00binda' Patti - Ultimo Aggiornamento: 2003-01-30 16:55:45
Visualizza l'elenco completo degli rpm installati.
Utile sopratutto se usato assieme al grep.
Nel caso volessi sapere se il pacchetto abiword è installato sul mio sistema, dovrei digitare al prompt:
[root@hell] rpm -qa | grep abiw
Tipo Infobox: BOFH - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'ma01417' Brezzi - Ultimo Aggiornamento: 2004-05-23 16:08:23
Utilizzo della "command substitution" per conoscere di un eseguibile il pachetto che lo conteneva e la relativa versione.
rpm -qf `which tr`
voglio sapere il comando tr a quale pacchetto appartiene
coreutils-4.5.3-19.0.2
la risposta è coreutil alla versione 4.5.3
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-30 15:33:39
Trovare l'rpm giusto per la propria distribuzione Linux può non essere semplice, come non lo è sempre capire quale rpm contiene il programma o il file che ci servono.
Esiste una convenzione standard per dare un nome ad un package RPM:
efax-0.8a-11.i386.rpm
corrisponde a nome-versione-release.arch.rpm
- nome è generalmente il nome del programma fornito col pacchetto,
- versione indica la versione del programma, secondo la convenzione usata da chi lo ha realizzato,
- release è la release del pacchetto, può anche indicare la distribuzione (es: mdk indica un RPM per Mandrake),
- arch è l'architettura hardware per la quale il pacchetto è stato previsto (i386: sistemi Intel 386 o superiori; i686: ottimizzato per sistemi Pentium 2 o superiori; sparc: Sun Sparc; src: sorgenti da compilare; ),
- rpm è l'estensione predefinita.
Se il nome di un pacchetto contiene il suffisso -devel, nel rpm ci sono librerie utilizzate dal programma indicato o da altri pacchetti che dipendono da questo.
A volte per installare un programma compiutamente sono necessari più pacchetti .rpm, spesso se un programma ha natura modulare, c'è un pacchetto diverso per ogni modulo.
LINK: Maximum RPM - Online book - http://www.rpm.org/max-rpm/
Tipo Infobox: PATH - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-02-07 12:45:29
Con questa semplice riga è possibile visualizzare l'elenco dei pacchetti RPM installati sul sistema ordinandoli secondo le dimensioni.
Molto comodo per vedere quali pacchetti occupano più spazio.
Fonte: FedoraNews. Autore: Leonid Mamtchenkov
SOURCE: Fedora Tips da Fedoranews.org - http://fedoranews.org/krishnan/tips/tip002.shtml
Backup e compressione di file |
Tecniche di backup. L'uso di tar, gunzip, e altri comandi di compressione. |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2002-10-28 11:19:08
Per backup si intende un procedimento di salvataggio di files o directory (o addirittura interi filesystem) attraverso il quale e' possibile in caso di danni o altre svariate necessita' ripristinare le condizioni di funzionamento del sistema, da qui si capisce la sua fondamentale importanza.
In caso di mancato backup, la perdita di dati importanti puo essere una vera tragedia e un buon backup può fare la differenza fra un disastro e una scocciatura.
Ci sono svariate procedure e filosofie sul backup ma uno degli aspetti importanti e' che i dati salvatirisiedano in un luogo fisico differente rispetto a quello dei file originali (anche in un diverso supporto nella stessa macchina).
Per il backup di dati si possono utilizzare da floppy-disks (ne bastano 3 per backuppare /etc), fino ad interi raid di harddisks (arrivando cosi a dimensioni di svariati Terabyte). I supporti piu' comuni utilizzati sono floppydisks, Zipdisks, CDR, DVD, tapes e harddisks. La scelta del supporto dipende sia dalla quantita' di dati da backuppare
(a volte si preferisce salvare solo dati essenziali, a volte si opta per il backup di interi filesystem) sia dalla frequenza del backup (che comunque dipende dalla quantita', in quanto e' difficile che giornalmente si effettuino backup di 500Gb).
Generalmente le procedure di backup avvengono quando non ci sono users operanti sul sistema e quando il carico della rete e' basso, cosa che avviene spesso e volentieri la notte.
Fra le svariate utility per il backup nel mondo Unix troviamo Dump e Restore (con nomi diversi fra i vari
OS Unix-based, anche se di poco), comandi molto sofisticati con una semplice interfaccia ed opzioni essenziali che permettono di backuppare e restorare semplicemente (con la possibilita' di scieglierne il livello) interi devices e filesystems, anche da remoto.
Altro comando di rilievo e' cpio, non potente come dump ma con piu' features.
Tools importanti per il backup di filesystems sono AMANDA (performato dall'universita' del Maryland permette di settare un singolo master backup server in grado di backuppare piu hosts), BURT (altra utility, ottimizzata per il backup e restore da nastri) e CD backup Linux (performato per backup e restore automatici creando un CD-Rs bootabile mentre si lavora sul sistema).
Per il backup e' inoltre possibile utilizzare anche comandi di archiviazione (o compressione) come tar, gzip ecc...
Oltre alle opzioni elencate qui sopra vi sono anche un'infinita' di utility commerciali per backup e restore dei dati. Le case produttrici piu' importanti a livello commerciale di software per il backup sono VERITAS Software, FalconStor Software, BakBone Software, Arkeia.
HOWTO: Linux Complete Backup and Recovery HOWTO - http://ldp.openskills.info/HOWTO/Linux-Complete-Backup-and-Recovery-HOWTO/index.html
Tipo Infobox: TIPS - Skill Level: 3- INTERMEDIATE - Autore: Andrea 'franz' Francesconi - Ultimo Aggiornamento: 2004-04-30 11:10:00
Rsync è un ottimo tool per la replica dei dati, con ssh (ovvero con supporto cifrato) lo è ancora di più =)
rsync -avzlrt --exclude 'nothisdir' -e "ssh -p 4321" [email protected]:/'`find /my/secret -name '*$VAR*'`' /localbackup
Opzioni utilizzate:
a: archive mode;
v: abilito la modalità verbose per l'operazione in corso;
z: abilito la compressione;
l: mantiene i link;
r: modalità ricorsiva;
t: preserva data e ora dei file;
e: rsync si appoggia su un ssh server in ascolto sulla porta (-p) 4321
Nel pc remoto eseguo un find nel percorso /my/secret per tutti i file contenenti nel nome la variabile $VAR, dopodichè copio localmente su /localbackup.
L'operazione può essere schedulata per comodi (e sicuri) backup notturi con l'integrazione di chiavi dsa con passphrase blank, definendo un livello di security a mio parere accettabile per la maggior parte delle realtà di impiego.
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2002-10-28 11:22:01
Rsync e' un comando (ed un protocollo) che permette la copia di file via rete, ottimizzando i tempi di backup e ripristino dei dati.
L'host da backuppare (su cui si devono leggere o scrivere file) deve avere in esecuzione rsync in modalita' server (rsync --daemon
), e deve essere presente il file /etc/rsyncd.conf
dove sono contenute le informazioni relative alla condivisione necessaria per il backup.
Sull'host remoto che deve leggere o scrivere file sulla macchina dove rsync gira come daemon, viene eseguito il comando rsync con una logica simile a quella di cp.
I parametri da settare in /etc/rsyncd.conf
sono:
- [nomecondivisione] e' il nome della condivisione rsync;
- path e' il path locale a cui fa riferimento la condivisione;
- read only e' un opzione che protegge i file dalla scrittura (se settata = yes);
- uid e gid sono l'utente ed il gruppo con cui rsync accede al filesystem;
- host allow rappresenta gli IP da cui e' possibile collegarsi via rsync;
- list e' un opzione che prevede di poter impedire di elencare le condivisioni disponibili sul server rsync (se settata = false);
La prima volta che si esegue un backup da un certo host vengono copiati tutti i files specificati nella condivisione, le altre volte solo quelli modificati dall'ultimo backup.
Per un utilizzo sicuro di rsync (le password non vengono richieste!), e' consigliabile:
- Selezionare accuratamente gli IP degli host che possono accedere al server rsync;
- Consentire esclusivamente ingressi in sola lettura;
- Non utilizzare root come uid e gid ( a meno che non sia necessario per esigenze di backup).
La sintassi del client rsync è:
rsync [opzioni] [host da backuppare]::nomecondivisione/files /[directory host locale]
opzione spesso utile e' -av
, che specifica di copiare i file mantenendo ownership, permessi e in modalita' "directory recursive".
LINK: Sito ufficiale di rsync - http://samba.anu.edu.au/rsync/
Tipo Infobox: PATH - Skill Level: 3- INTERMEDIATE - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2004-05-15 13:48:43
Il file di configurazione di rsync è simile ad un file .ini di un sistema Windows.
Le direttive di configurazione globali sono definite nella prima parte del file, mentre la seconda parte riguarda sezioni o moduli identificati da un nome racchiuso tra parentesi quadre. Il file può contentere linee vuote e commenti i quali devono iniziare con il carattere ; o con #.
Un esempio di rsyncd.conf
utilizzato per il backup, dove vengono configurati due moduli:
log file =
/var/log/rsyncd.log
definisce un file di log
motd file =
/etc/rsyncmotd
definisce un file per il MOTD (Message Of The Day)
[Apollo13]
tra parentesi quadre viene indicato il nome del modulo
path = /disco2/backup/Apollo13
percorso attraverso il quale vengono localizzati i file
comment = Backup Area Apollo13
commento visibile interrogando il server rsync
list = yes
permette di visualizzare il modulo tra la lista di quelli disponibili
read only = no
rende il modulo disponibile in scrittura, di default questo non è possibile
[Enigma]
path = /disco2/backup/Enigma
comment = Backup Area Enigma
list = yes
read only = no
Tipo Infobox: TIPS - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2008-08-25 09:48:13
Alcuni esempi di configurazione ed utilizzo di rsync, con uso di password su file esterni e pattern sui file da copiare
Configurazione server: /etc/rscynd.conf
log file = /var/log/rsyncd.log
# motd file = /etc/rsyncmotd
timeout = 300
max connections = 4
log format = "%o %h [%a] %m (%u) %f %l %b"
transfer logging = yes
secrets file = /etc/rsyncd.secrets
[bacco]
path = /
comment = Backup
list = no
read only = no
uid = root
auth users = ced
hosts allow = 172.16.1.9
Esempio di secret file: /etc/rsyncd.secrets (il path e' configurabile in modo arbitrario)
ced:password
Utilizzo lato client
rsync -avz --password-file=/etc/rsyncd.secrets.ced --delete --exclude-from=/etc/rsyncd.patterns [email protected]::bacco/var
/backup/
Copia in /backup la directory var remota, cancellando i file locali che non esistono piu' sul server, usando i pattern definiti nel file /etc/rsyncd.patterns e la password specificata (per l'utente ced) su /etc/rsyncd.secrests.ced
rsync -avz --password-file=/etc/rsyncd.secrets.ced [email protected]::bacco/var/tmp/bacco
Come sopra, senza esclusione di file e senza cancellazione dei file
locali non piu' presenti sul server.
Esempio di /etc/rsyncd.patterns (come invocato da comando rsync lato client)
(copia di file che finiscono con .log, .gif .jpg )
+ */
+ *.log
+ *.gif
+ *.jpg
- *
Esempio di /etc/rsyncd.secrets.ced (come invocato da comando rsync lato client)
password
LINK: Rsync Official Documentation - http://samba.anu.edu.au/rsync/documentation.html
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2002-10-03 17:02:48
Programma di archiviazione progettato per immagazzinare ed estrarre file da un archivio conosciuto come un tarfile.
Un tarfile può essere fatto su un'unità a nastro magnetico o su un file normale.
tar [opzioni] file1, file2, ... , fileN
-A, --catenate, --concatenate
aggiunge i file ad un archivio
-c, --create
crea un nuovo archivio
--delete
elimina dall'archivio (da non usare sui nastri magnetici!)
-r, --append
aggiunge i file alla fine di un archivio
-t, --list
elenca il contenuto di un archivio
-u, --update
aggiunge solamente i file che sono pi recenti della copia nell'archivio
-x, --extract, --get
estrae i file da un archivio
-f, --file [NOME_HOST:]F
usa il file di archivo o dispostivo F (default /dev/rmt0)
-L, --tape-length N
cambia il nastro dopo aver scritto N*1024 byte
-p, --same-permissions, --preserve-permissions
estrae tutte le informazioni relative ai permessi
-v, --verbose
elenco minuzioso dei file elaborati
-z, --gzip, --ungzip
filtra l'archivio attraverso gzip
LINK: Sito ufficaile di tar - http://www.gnu.org/software/tar/tar.html
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2002-10-03 17:04:13
zip e' un utility di archivio e compressione di file per Unix, VMS, MSDOS, OS/2, Windows NT, Minix, Atari and Macintosh, Amiga and Acorn RISC OS.
E' analogo alla combinazione dei comandi Unix 'tar' e 'compress' ma utilizza algoritmi diversi.
Per la decompressione a differenza di altri comandi di archivio e compressione (tar, gzip e bzip2), e' possibile utilizzare esclusivamente il comando unzip, in quanto zip non prevede alcuna opzione che permetta di decomprimere un file.
-A
Crea un archivio eseguibile auto-decompattante.
-b path
Utilizza il path specificato per allocare i file zip temporanei. una volta terminato il processo copia il file.zip nella directory corrente eliminando i file zip temporanei.
-c
Aggiunge una riga di commento per ogni file.
-d
Rimuove i file origine una volta archiviati.
-f
Sovrascrive un file contenuto nell'arichivio se viene inserito lo stesso file con data di modifica piu recente.
-i files
Include solo i files specificati.
-j
Mantiene solo il nome dei files archiviati senza salvare il nome delle directory. Di default zip salva il path completo.
-m
Sposta i files nell'archivio specificato eliminando gli originali.
-e
Assegna una password all'archivio creato.
-o
Setta come data di modifica dell'archivio la data di modifica piu recente dei files archiviati.
-r
Ricorsivo, se si comprime una directory, con questa opzione si archivieranno anche tutte le sue sottodirectory.
-t mmddyyyy (o yyyy-mm-dd)
non operera su file modificati prima della data specificata.
-tt mmddyyyy (o yyyy-mm-dd)
non operera su file modificati dopo la data specificata.
-T
testa l'integrita' del nuovo zip file. se il test fallisce un eventuale vecchio zip file non viene eliminato e vengono mantenuti i file di origine.
-v
Verbose, fornisce maggiori dettagli.
-#
Regola il rapporto tra qualita' e velocita' (-1=veloce, -9=migliore).
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2002-10-03 17:07:36
Comando che riduce la dimensione dei file usando la codifica di Lempel-Ziv (lo stesso algoritmo di zip e PKZIP). Quando possibile, ogni file rimpiazzato da uno con l'estensione .gz, mantenendo le stesse proprietà, date d'accesso e di modifica. Se il nome del file compresso è troppo lungo per il file system, gzip lo tronchera'.
gzip [opzioni] file
-c --stdout --to-stdout
Scrive l'uscita nello standard output; mantiene il file originale intatto.
-d --decompress --uncompress
Decomprime.
-f --force
Forza la compressione o la decompressione anche se il file ha link multipli o corrisponde a un file che già esiste, o se i dati compressi sono letti da (o scritti in) un terminale.
-l --list
Per ogni file compresso, elenca dimensione del file compresso, dimensione del file decompresso, rapporto di compressione (0.0% se sconosciuto), nome del file decompresso.
-N --name
Quando comprime, salva sempre il nome di file e la time stamp originali; il comportamento di default. Quando decomprime, ripristina il nome di file e la time stamp se sono presenti.
-r --recursive
Attraversa ricorsivamente la struttura della directory.
-S .suf --suffix .suf
Usa il suffisso .suf invece di .gz. Può essere dato qualsiasi suffisso, ma suffissi diversi da .z e .gz dovrebbero essere evitati per evitare confusioni quando i file sono trasferiti su altri sistemi.
-t --test
Test. Verifica l'integrità del file compresso.
-v --verbose
Verbose. Mostra il nome e la percentuale di riduzione di ogni file compresso o decompresso.
-# --fast --best
Regola la velocità di compressione usando la cifra # specificata, dove -1 o --fast indicano il metodo di compressione più veloce (minore compressione) e -9 o --best indicano il metodo di compressione più lento (migliore compressione). Il livello di compressione di default è -6.
LINK: Official gzip homepage - http://www.gzip.org
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2002-10-03 17:09:17
Comando che riduce la dimensione dei file usando un algoritmo che offre generalmente una migliore compressione rispetto ai convenzionali compressori basati su codifiche LZ77/LZ78 (gzip e zip).
La command-line e' volutamente simile (ma non identica) a quella di gzip.
Come gzip il file compresso mantiene il nome, data, permessi del file origine (che verra' eliminato), ed avrà l'estersione '.bz2'.
-c --stdout --to-stdout
Scrive l'uscita nello standard output; mantiene il file originale intatto.
-d --decompress
Decomprime
-z --compress
Comprime
-t --test
Verifica l'integrita' del file compresso senza decomprimerlo.
-f --force
Forza la compressione (o la decompressione), anche se il file corrisponde ad un file gia esistente (di default non lo fa)
-k --keep
Non elimina i file originali durante la compressione o la decompressione.
-v --verbose
Mostra il nome e la percentuale di riduzione di ogni file compresso o decompresso.
-1 (o --fast), -2, ... , -9 (o --best)
Setta la dimensione dei blocchi di memoria da utilizzare (100k,...,900k) durante la compressione.
A differenza di gzip utilizzando l'opzione -1 ( o --fast) l'aumento di velocita' di compressione non e' molto precepibile. di default e' settata l'opzione -9 (--best).
Questa opzione non ha effetto in fase di decompressione.
LINK: bzip2 official homepage - http://sources.redhat.com/bzip2
Tipo Infobox: BOFH - Skill Level: 3- INTERMEDIATE - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2002-10-03 17:12:13
Con l'opzione -c, gzip scrive l'uscita nello standard output, lasciando il file originale intatto.
Percio' e' possibile concatenare piu file compressi con il comando gzip -c fileN >> gzfile.gz.
.
Quindi il comando gzip -cd gzfile.gz
equivale a cat file1 file2,..., fileN
.
Compressioni migliori si ottengono pero' con la riga cat file1,...,fileN | gzip > gzfile.gz
, che comprime cosi' tutti i membri assieme, anziche' con il comando il comando gzip -c file1,...,fileN > gzfile.gz
.
Se un file compresso e' formato da piu' membri, l'opzione --list fara' riferimento solo alla dimensione compressa, decompressa, rapporto di compressione ecc... dell'ultimo membro, nel caso interessi solo la dimensione decompressa per tutti i files membri si puo' usare gzip -cd file.gz | wc -c
.
Nel caso si voglia ricomprimere files concatenati per ottenere una migliore compressione si puo' eseguire gzip -cd old_gzfile.gz | gzip > new_gzfile.gz
.
Se si vuole pero' creare un archivio di piu' files compressi indipendenti bisogna utilizzare il tar, che con l'opzione -z filtra gli archivi con gzip, creando cosi' i .tar.gz.
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2004-03-06 02:09:20
Permette di visualizzare i moduli disponibili su un host in cui è in esecuzione rsync in modalità server.
Prima di trasferire da o verso un host dei dati, è necessario sapere quali sono i moduli messi a disposizione dal server rsync per l'operazione. Questo è possibile attraverso il comando:
[azitti@topolino azitti]$ rsync pluto.it::
ftp the whole ftp area
www the whole web site
ildp the ILDP web site
HOWTO-it Italian HOWTOs
In questo caso possiamo notare che il Pluto Linux Documentation Project pluto mette a disposizione quattro moduli da cui scaricare files: ftp, www, ildp e HOWTO-it
Se sul server si vuole evitare la possibilità da parte dei client di visualizzare la lista dei moduli disponibili (per sicurezza o riservatezza) va inserita, in /etc/rsyncd.conf
la voce:
list = false
Schedulazione dei processi |
Utilizzo di crontab e at. Configurazione e alternative a crontab. |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Luca 'pillolinux' Bove - Ultimo Aggiornamento: 2002-10-09 16:21:05
Alcuni processi devono essere eseguiti a determinati orari, un determinato numero di volte. Esempi di questi possono essere i processi di backup che vengono lanciati ogni notte, oppure un analizzatore di log che deve girare ogni minuto.
Questi processi devono girare un certo numero di volte oppure in determinati giorni; il resto del tempo essi stanno fermi fino a quando un utente non interagisce con essi e li richiama (con gli appositi comandi). Qui è dove il CRON si rende utile. Vi permette di programmare (o "schedulare", come si dice in gergo) l'esecuzione di un lavoro in qualsiasi momento desideriate, ogni minuto, ogni ora, giornalmente, mensilmente.
E' un sollievo sapere che ci sono vari programmi che stanno girando senza alcun bisogno della vostra supervisione.
Le Basi
Cron può essere fatto partire da rc
o da rc.local
e ritorna immediatamente al prompt, sicchè non c'é bisogno di lanciarlo in background. Cron ricerca il file /etc/crontab
per le voci (le cosiddette "entry") di sistema e /var/spool/cron
per le voci relative agli utenti che si trovano nel file /etc/passwd
. Tutte le voci ritrovate sono caricate in memoria.
Tutto ciò viene ripetuto ogni minuto appena cron "si sveglia" ed esegue diversi compiti:
a) ricerca le voci ed esegue i programmi che sono stati schedulati.
b) determina se il modtime (vale a dire la data e l'ora dell'ultima modifica) nella directory di cron è cambiato c) se il modtime nella directory cron è cambiato, cron ricerca tutti i file e ricarica i programmi che sono stati modificati.
Poiché cron cerca le modifiche ogni minuto, non è necessario farlo ripartire quando sono stati effettuati dei cambiamenti (editati) nei file nella directory cron.
Utilizzare crontab
Il "cron daemon" legge il file "crontab"; ogni utente può avere la propria versione di questo file, orientata agli specifici compiti che si vogliono eseguire. I flag associati con le applicazioni crontab specificano quando aprire crontab per avere la lista o per rimuovere e modificare compiti.
La sintassi per il programma crontab è la seguente:
crontab [-u user] file
crontab [-u user] -l -e -r
Questi parametri indicano:
-u
questa opzione comunica al sistema il nome dell'utente che "possiede" il file. Se l'opzione -u è omessa, il sistema deduce per default che state usando il vostro crontab personale.
Il comando switch user (su) può confondere il crontab, così se siete nello switch "su" assicuratevi di utilizzare l'opzione -u.
-l
questa opzione dice a crontab di elencare i file nello standard output, in poche parole visualizza il file.
-e
questa opzione dice a crontab di editare il file. Cron usa l'editor definito dalla variabile EDITOR o da VISUAL. Se nessuna di queste variabili è definita, parte in automatico l'editor "vi". Quando si esce dall'editor, è immediamente piazzato nella locazione corretta e viene aggiornato il campo data/ora.
-r
questa opzione rimuove il file crontab specificato, se nessun file viene specificato, rimuove il file crontab dell'utente.
Voci in Crontab
Solo 2 tipi di voci sono permesse nel crontab: i settaggi ambientali (Crontab Environmental settings) e i settaggi di comando (Crontab Command settings)
a) Crontab Environmental settings
I settaggi ambientali utilizzano la seguente forma:
nome = valore
Cron conosce già le diverse variabili ambientali. Per esempio, SHELL è settato a /bin/bash
.
Altre variabili ambientali, come LOGNAME e HOME, sono associate al possessore del file. SHELL e HOME posso essere sovrascritte nello script, mentre non è possibile farlo con LOGNAME. Se MAILTO è definito (e non è settato a " "), tale variabile è inserita in una riga nel file crontab, e spedisce ogni messaggio generato all'utente specificato in questo campo.
La seguente riga mostra MAILTO settato ad uno specifico utente (luca): # spedisce tutti gli output all'utente *luca* (non importa chi è il proprietario di questo crontab)
MAILTO=luca
b) Crontab Command settings
I settaggi comandi usano un formato standard: ogni riga inizia con cinque campi ora/data. Se è il crontab di sistema, il campo successivo è lo username associato con la voce. Il campo seguente sarà il comando da eseguire. Il comando verrà eseguito solo quando la data e l'ora corrente coincideranno con tutti i valori dei campi time/date del crontab. Nel paragrafo succ. vi è un esempio.
I campi disponibili per la data e l'ora sono i seguenti:
Campi | Valori ammessi
----------------
minuti | 0-59
ore | 0-23
giorno | 1-31
mese | 1-12
giorno della settimana | 0-7 (0 & 7 indicano la domenica)
Questi campi possono anche contenere un asterisco (*) invece di un numero. Un asterisco indica che ogni possibile valore è ammesso.
Dettagli
La righe seguenti mostrano il /etc/crontab installato per default nella RedHat 6.2:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Avete notato come crontab chiama i quattro diversi eventi?
Il primo è associato ad eventi orari (eseguiti nel primo minuto di ogni ora)
Il secondo è associato ad eventi giornalieri (eseguiti alle ore 4:02 di ogni giorno)
Il terzo è associato ad eventi settimanali (eseguiti alle 4:22 di ogni domenica)
L'ultimo è associato ad eventi mensili (eseguiti alle 4:42 nel primo giorno di ogni mese).
Qualcosa da ricordare:
Il sistema non va indietro e raccoglie i lavori cron, esso li esegue solo se la data e l'ora sono uguali alla voce nel file. Ad esempio se il computer è spento quando dovrebbe essere eseguito il cron, quel programma non viene più eseguito.
Permessi e divieti di accesso al servizio crontab
Ci sono due file che abilitano la root (solo la root dovrebbe avere il permesso di editare o creare questi file) per autorizzare o vietare l'utilizzo dei servizi crontab agli utenti; essi sono: /etc/cron.allow -- Questo file in genere non esiste, lo dovete creare. Ogni voce che piazzerete in questo file coprirà quella inserita in /etc/cron.deny. Se il file /etc/cron.allow
esiste, solo gli utenti specificati dentro posso usufruire del servizio crontab.
/etc/cron.deny
-- Questo file esiste per default. In esso, ci metterete lo username delle persone a cui vietate l'utilizzo del servizio crontab.
SOURCE: PILLOLINUX: Introduzione al servizio di scheduling di Crontab - http://www.freeonline.it/articolo_linux_dtml?id_articolo=37
Tipo Infobox: PATH - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2002-10-24 15:39:32
File di configurazione generale del demone crond contenente le operazioni schedulate di default o manulamente dall'utente root.
La sintassi di crontab prevede una riga, con campi separati da uno spazio o un tab, per ogni comando da schedulare.
mm hh gg MM GG user comando
I primi 5 campi servono per definire quando eseguire il comando specificato nel settimo campo. Possono contenere valori separati da virgola o un asterisco che indica tutti i calori possibili:
1) mm Minuto in cui eseguire il comando. Valori da 00 a 59.
2) hh Ora in cui eseguire il comando. Valori da 0 a 23 (0 è mezzanotte, 12 mezzogiorno)
3) gg Giorno del mese in cui eseguire il comando. Valori da 1 a 31.
4) MM Mese dell'anno in cui eseguire il comando. Valori da 1 a 12.
5) GG Giorno della settimana in cui eseguire il comando. Valori da 0 a 6. (0 corrisponde alla Domenica, 1 al Lunedì.. )
6) Utente con cui viene eseguito il comando. Crond viene eseguito come root e può impersonificare qualsiasi utente. Questo campo può anche essere omesso (root di default).
7) Riga di comando da eseguire (con eventuali opzioni, argomenti ecc.)
Vediamo un esempio:
[neo@dido neo]$ cat /etc/crontab
Variabili che settano l'enviroment per il lancio di script o di comandi
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
Le entry riportate di seguito sono quelle di default di una RedHat ed esegue a seconda della scadenza gli script contenuti nelle varie directory
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Il file di crontab relativo al singolo utente in: /var/spool/cron/$user
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2003-11-21 16:01:27
Anacron è l'alternativa a cron da utilizzare per la schedulazione di processi su macchine non utilizzate come server e quindi non sempre in funzione.
Questo demone permette di eseguire processi schedulati nell'arco di tempo in cui la macchina non era in funzione e che quindi tramite cron non sarebbero stati eseguiti. Anacron utilizza il file /etc/anacrontab
per la schedulazione e la directory /var/spool/anacron
per tenere traccia dei compiti svolti.
Per ogni job-description line inserita in anacrontab, anacron controlla se il comando è stato eseguito nel periodo specificato ed in caso contrario lo esegue con il ritardo specificato. Una volta eseguito il comando, la sua data di esecuzione viene registrata in un file di time-stamps identificato dal nome univoco assegnato al processo nella directory /var/spool/anacron
. Una volta terminati i job da eseguire anacron termina.
Per default in caso di errore viene inviata una mail all'utente che ha avviato anacron, mentre gli altri messaggi vengono loggati da syslogd.
HOWTO: Linux Parallel Processing HOWTO - http://ldp.openskills.info/HOWTO/Parallel-Processing-HOWTO.html
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2003-07-13 19:04:24
E' l'eseguibile del demone anacron.
Anacron, viene tipicamente avviato tra gli script di boot del sistema. La sua sintassi è la seguente:
anacron [opzioni]
-f
: forza l'esecuzione di anacron ignorando i timestamps;
-s
: serializza l'esecuzione dei job. Non avvia l'esecuzione di un nuovo job finche' il precedente non e' stato terminato;
-n
: avvia l'esecuzione dei job senza tenere conto di quanto specificato in /etc/anacrontab
. Implica l'utilizzo dell'opzione -s
.
-d
: non esegue il demone in background, e visualizza i messaggi di stato sullo standard error:
-u
: aggiorna solamente i file di time-stamps senza eseguire jobs;
-q
: non visualizza messaggi sullo standard error quando l'esecuzione avviente con l'opzione -d
;
-t <nomefile>
: Utilizza il file di configurazione specificato anziche' quello di default;
-V
: stampa la versione ed esce;
-h
: visualizza la guida ed esce.
Tipo Infobox: PATH - Skill Level: 2- JUNIOR - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2003-07-13 19:05:26
E' il file di configurazione di anacron.
Questo file descrive il comportamento di anacron. Esso può contenere assegnamenti di variabili, linee vuote e linee di commento le quali iniziano con il carattere #.
Ogni entry nel file di configurazione contiene 4 parametri:
-1 periodo: ogni quanto tempo, in giorni, deve essere eseguito un comando;
-2 ritardo: il tempo di ritardo, in minuti, per l'avvio del comando (utile per non sovraccaricare il sistema con troppo processi attivi);
-3 nome-job: un nome univoco per identificare il comando;
-4 comando: il comando vero e proprio da eseguire;
Un esempio del contenuto di anacrontab:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Setting delle variabili per l'esecuzione dei job
1 65 cron.daily run-parts /etc/cron.daily
7 70 cron.weekly run-parts /etc/cron.weekly
30 75 cron.monthly run-parts /etc/cron.monthly
Schedulazione rispettivamente di processi giornalieri, settimanali e mensili
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2004-01-09 18:12:08
Si occupa di mandare in esecuzione tutti gli script o i programmi contenuti in una directory.
Esegue tutti i programmi contenuti nella directory passata come parametro. Eventuali sottodirectory vengono ignorate. Gli script da eseguire devono contenere come prima linea il nome dell'interprete nel formato #!/bin/nome-interprete
altrimenti non verrano eseguiti.
run-parts [opzioni] directory
--test
: visualizza il nome degli script che dovrebbero essere eseguiti ma senza mandarli in esecuzione;
--verbose
: stampa sullo standard error il nome di ogni script/programma prima di eseguirlo;
--report
: simile a --verbose
ma con la differenza che stampa solamente il nome degli script che producono un output;
--umask=<umask>
: setta l'umask specificata prima di eseguire gli script/programmi; L'umask di default e' 022;
--arg=<argomenti>
: passa eventuali argomenti allo script; E' necessario utilizzare --arg
per ogni argomento passato;
--help
: visualizza l'help in linea ed esce;
--version
: visualizza la versione il copyright ed esce;
Il suo utilizzo tipico è all'interno del file di configurazione di crontab:
[root@pluto etc]# cat /etc/crontab
[...]
# run-parts
01 * * * * root nice -n 19 run-parts /etc/cron.hourly
In questo esempio vengono eseguiti in tutte le ore di ogni giorno (al minuto 01) tutti i programmi/script contenuti nela directory /etc/cron.hourly
Gestione e analisi dei log |
Analisi, monitoring, rotazione e gestione dei log di sistema. Configurazione di syslogd. |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-09-27 21:28:02
Molto spesso ci si ritrova a diagnosticare problemi, capire perchè una applicazione non parte o eseguire blandi compiti di reverse engineering sul funzionamento di parti del sistema.
La prima fonte da consultare per ogni operazione di troubleshooting sono i log, file di testo che tengono traccia di errori e particolari azioni eseguite dal sistema, come il cambiamento di una password, il login di un certo utente o il messaggio di errore di una applicazione.
I log del sistema vengono generalmente scritti in directory come /var/log
e var/adm
o dove definito nei file di configurazione dei singoli programmi.
In quasi tutti i sistemi Unix il demone syslogd si occupa della gestione dei log tramite il file di configurazione /etc/syslog.conf
.
Le recenti distribuzioni Linux utilizzano sysklogd, una versione evoluta di syslogd che gestisce anche il logging del kernel (tramite il demone klogd).
Sono inoltre disponibili versioni modificato o più sicure di syslog.
L'equivalente su Windows dei log Unix sono gli eventi.
Tipo Infobox: PATH - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2002-10-24 19:50:09
E' il file di configurazione principale del demone syslog. Di solito ha questo path in Unix vari ed è comodo consultarlo per verificare in fretta dove il sistema scrive i suoi log.
Il file si puo' suddividere in due campi, suddivisi da uno o piu' spazi bianchi o TAB:
SELECTOR: Diviso a sua volta in due parti separate da un punto: facility (identifica chi o cosa ha prodotto il messaggio) e priority(identifica il livello di priorita' del messaggio)
ACTION:Identifica il "logfile" dove vengono scritti i log corrispondenti. Oltre ad un normale file può essere un device coem la stampante o una console.
Analizziamo un esempio preso da una macchina RedHat Linux:
[neo@dido neo]$ cat /etc/syslog.conf
[...]
Nel file /var/log/messages vengono loggati tutti i messaggi di livello informativo, tranne quelli relativi alla posta (mail), all'accesso al sistema (authpriv) e al cron
*.info;mail.none;authpriv.none;cron.none /var/log/messages
[...]
Tutti i log, di qualsiasi priorità, che hanno a che fare con l'accesso al sistema, sono loggati in /var/log/secure
authpriv.* /var/log/secure
[...]
Tutti i log riguardanti la posta sono scritti in /var/log/maillog
mail.* /var/log/maillog
[...]
Tutti i log di comandi eseguiti in cron sono scritti in /var/log/cron
cron.* /var/log/cron
[...]
Tutti i log con priorità di emergenza vengono inviati ai terminali di ogni utnete collegato al sistema
*.emerg *
I log relativi al boot (a cui è associata, su questo sistema la facility local7) sono scritti in /var/log/boot.log
local7.* /var/log/boot.log
Alcune interessanti opzioni che si possono configurare su questo file sono del tipo:
Tutti i log del sistema vengono inviati al syslog server chiamato pippo (il nome deve essere risolvibile)
*.* @pippo
Tutti i movimenti di posta vengono scritti sulla console tty10
mail.* /dev/tty10
Tutti gli accessi al sistema sono stampati direttamente su una stampante locale
authpriv.* /dev/lp0
Tipo Infobox: DESCRIPTION - Skill Level: 3- INTERMEDIATE - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2002-10-28 12:50:19
Logwatch e' uno strumento che permette l'analisi e il monitoraggio dei log.
E' molto semplice, versatile e flessibile in quanto permette di impostare il servizio che si vuole monitorare, il livello di monitoraggio, filtri customizzabili per il matching di pattern, periodi di tempo specifici ecc...
Oltre a questo e' possibile settare una mail a cui inviera' il report o un file dentro il quale salvarli.
I file e le directory principali di logwatch sono generalmente:
/etc/log.d/conf/logwatch.conf
: file di configurazione di logwatch;
/etc/log.d/conf/services/
: directory che contiene i file di configurazione per i diversi servizi i cui log possono essere processati da logwatch;
/etc/log.d/conf/logfiles/
: directory che contiene i file di configurazione per i file contenenti i log di diversi servizi;
/etc/log.d/scripts/shared/
: directory che contiene i filtri comuni per i servizi o logfiles;
/etc/log.d/scripts/logfiles/
: directory che contiene i filtri specifici per logfiles particolari;
/etc/log.d/scripts/services/
: directory che contiene i filtri attuali per i vari servizi.
Logwatch viene tipicamente schedulato in crontab per eseguire dei controlli periodici sui log di sistema ed inviarne il report via mail.
LINK: LogWatch Home Page - http://www.logwatch.org/
Tipo Infobox: COMMANDS - Skill Level: 3- INTERMEDIATE - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2003-06-03 21:02:51
E' l'applicazione inclusa in diverse distribuzioni Linux per la gestione dei log di sistema.
Logrotate permette di comprimere, rimuovere ed inviare via mail i file di log. Ogni file può essere gestito in base criteri temporali (giornalmente, settimanalmente, o mensilmente) oppure alle proprie dimensioni. Tipicamente l'utilizzo di logrotate viene schedulato tramite il demone cron ed i file di log da esso gestiti non vengono modificati più di una volta al giorno salvo che il criterio sia basato sulla dimensione e logrotate avviato più volte al giorno oppure che sia utilizzata l'opzione -f
o --force
e quindi logrotate sia forzato a rielaborare i file di log.
Logrotate utilizza /var/lib/logrotate/status
per tenere traccia dei log elaborati e /etc/logrotate.conf
per quanto riguarda la configurazione. Alcuni packages installano informazioni relative alla rotazione dei log in /etc/logrotate.d/
.
La sintassi è la seguente:
logrotate [-dvf?] [-m command] [-s statefile] [--usage]
-d
: Abilita il debug mode. Questa azione implica anche l'utilizzo automatico dell'opzione -v
. In modalità di debug, non vengono apportati cambiamenti ai log o al file di stato;
-v
: Abilita il verbose mode ovvero visualizza informazioni durante la rotazione dei log;
-f
: Forza la rotazione dei log;
-?
: Visualizza una breve guida in linea;
-m <comando>
: Indica a logrotate quale comando utilizzare per inviare via mail i log. Di default viene utilizzato /sbin/mail -s
;
-s <state-file>
: Indica a logrotate di utilizzare un file di stato diverso da quello di default ovvero /var/lib/logrotate/status
;
--usage
: Visualizza le opzioni disponibili per l'applicazione.
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-09-25 17:58:57
Per loggare su un syslog server Linux/Unix i log di un Cisco si deve intervenire sia sul router che sul server.
Su Cisco configurare lo IOS (conf term) per definire il syslog server (qui 10.0.0.20):
logging server 10.0.0.20
(opzionale, imposta il logging a livello 7: debug)
logging facility local2
logging trap 7
Sul syslog server Unix/Linux fare partire syslog con l'opzione di logging via rete (senza questo il syslogd non accetta messaggi via rete):
syslogd -r
e configurare /etc/syslog.conf per accettare i messaggi dal cisco (facility local2):
local2.* /var/log/cisco.log
La porta usata per il syslog via rete è la 514 UDP.
Considerare che syslog è un protocollo estremamente vulnerabile (accetta qualsiasi informazione, senza verificare contenuto o sorgente). E' opportuno limitare agli IP che servono (con packet filtering di vario tipo) l'accesso alla porta 514 di un syslog server.
Tipo Infobox: DESCRIPTION - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-02-01 10:52:22
La gestione e l'analisi dei log è un'attività sistemistica che richiede le sue attenzioni.
Su macchine ad alto traffico, o sotto attacco DOS o con particolari problemi ricorrenti, le dimensioni dei log possono crescere a dismisura in pochissimo tempo, fino a saturare il file system.
Per questo motivo è sempre consigliabile montare la directory /var
, dove generalmente risiedono i log, in una partizione indipendente, che, anche se riempita, non blocca il funzionamento del sistema.
E' inoltre importante poterli gestire, ruotandoli ad intervalli fissi e compattando i log vecchi, preparandoli per un'archiviazione.
Su molte distribuzioni Linux è incluso Logrotate, un'applicazione che semplifica l'amministrazione dei log, permette di comprimere, rimuovere ed inviare il log via mail oltre a eseguire una rotazione di file con vari criteri.
Il file di configurazione è /etc/logrotate.conf
In sistemi che usano RPM , solitamente, le regole di gestione dei singoli log sono inserite nella directory /etc/logrotate.d/
.
Generalmente gli script che eseguono logrotate sono inseriti nel crontab e di default sono configurati per gestire i log standard di sistema.
Altra applicazione che viene spesso usata per gestire, in particolare, i log di Apache è Cronolog, che rende particolarmente semplice la segmentazione di log in file diversi generati secondo unità di tempo configurabili (es: un file diverso ogni giorno). E' particolarmente utile per gestire siti ad alto traffico, in cui le dimensioni dei log tendono a crescere in modo spropositato.
Viene tipicamente usato come un filtro che riceve un log dallo standard input e lo scrive in stdout su più diversi file, secondo le specifiche indicate in un template. La sintassi di base è /path/cronolog [opzioni] template
. Per esempio:
/usr/sbin/cronolog /web/logs/%Y/%m/%d/access.log
divide il log che riceve in stdout in tanto diversi log in diverse directory secondo il criterio /web/logs/anno/mese/giorno/access.log, con risultati tipo: /web/logs/2003/01/17/access.log.
Viene tipicamente usato in httpd.conf sfruttando la funzionalità di Apache di inviare i log ad un comando esterno:
TransferLog "|/usr/sbin/cronolog /web/logs/%Y/%m-%d-access.log"
ErrorLog "|/usr/sbin/cronolog /web/logs/%Y/%m-%d-errors.log"
Crea un file di log diverso ogni giorno e li mette in directory divise per anno.
Il vantaggio di simili programmi è quello di sollevare l'amministratore dalla noiosa e insidiosa pratica di gestione e archiviazione dei log, che se non automatizzata può portare a spiacevoli conseguenze quali file system riempiti al 100%, file di log enormi, perdita di dati e simili contrattempi.
LINK: Home page di cronolog - http://www.cronolog.org/
LINK: Cronolog Home Page - http://www.cronolog.org/
Tipo Infobox: PATH - Skill Level: 3- INTERMEDIATE - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2003-06-03 20:55:34
E' il file principale riguardante la configurazione di logrotate.
Attraverso il file di configurazione di logrotate è possibile definire il comportamento dell'applicazione in due contesti: a livello globale (nella prima parte del file) e a livello locale dove le regole ridefinite prevalgono su quelle globali. Per ogni file di cui si vuole effettuare la rotazione è necessario indicarne il percorso, al quale seguono tra parentesi graffe le direttive di gestione.
Tra le direttive più utili:
- Criteri di rotazione
daily
: Rotazione su base giornaliera;
weekly
: Rotazione su base settimanale;
monthly
: Rotazione su base mensile;
size <dimensione>
: Rotazione in base alla dimensione;
notifempty
: Non esegue la rotazione se il file è vuoto;
- Compressione
compress
: Una volta archiviato il file di log, viene compresso tramite gzip;
compresscmd
: Indica il programma da utilizzare al posto di gzip;
- Gestione File
create <mode> <owner> <group>
: Immediatamente dopo la rotazione viene creato un nuovo file con il nome identico al precedente. E' possibile specificare, modalità di accesso, proprietario e gruppo;
copy
: Crea una copia del file di log e non modifica l'originale che non viene mai rimosso;
copytruncate
: Utilizzata nel caso in cui non sia possibile chiudere il file di log. Viene archiviata parte del file di log mentre ne viene eseguita una copia;
olddir <directory>
: I file di log vengono spostati nella directory indicata prima di eseguire la rotazione;
- Configurazione
include <file o directory>
: Legge il file oppure tutti i file della directory indicata ed applica le direttive incontrate all'interno di essi. E' possibile trovare include /etc/logrotate.d
in quanto alcuni packages installano le proprie istruzioni in questa directory;
- Operazioni Pre-log e Post-log
postrotate endscript
: Tramite questo blocco di direttive è possibile eseguire delle operazioni in seguito alla rotazione;
prerotate endscript
: Tramite questo blocco di direttive è possibile eseguire delle operazioni prima che avvenga la rotazione e solo se questa avrà luogo;
Un esempio del file di configurazione:
#
# Parametri Globali
#
compress Abilita la compressione, di default con gzip, dei log dopo la rotazione
weekly La rotazione di default è stabilita con criterio temporale settimanale ovvero ogni settimana viene creato un nuovo file di log
# Parametri Locali
/var/log/debug {
rotate 2 Indica che verranno mantenuti due file di log, in particolare uno per ogni settimana. La rotazione in questo caso è settimanale in quanto la direttiva di default non è stata ridefinita.
postrotate Blocco postrotate ovvero istruzioni eseguite in seguito alla rotazione di un log. Possono esistere solamente all'interno di direttive locali
/sbin/killall -HUP syslogd Ferma e riavvia il logging da parte di syslogd in modo che possa riprendere a lavorare sul nuovo file una volta effettuata la rotazione del vecchio file di log
endscript Termine blocco postrotate
}
/var/log/faillog {
monthly Il criterio temporale viene ridefinito localmente e passa da settimanale a mensile
rotate 2 Rotazione ogni 2 mesi
postrotate
/sbin/killall -HUP syslogd
endscript
}
/var/log/lastlog {
rotate 3 Rotazione ogni 3 settimane
postrotate
/sbin/killall -HUP syslogd
endscript
}
/var/log/maillog {
monthly
rotate 2 Rotazione ogni 2 mesi
postrotate
/sbin/killall -HUP syslogd
endscript
}
/var/log/syslog {
rotate 4 Rotazione ogni 4 settimane
postrotate
/sbin/killall -HUP syslogd
endscript
}
/var/log/messages {
rotate 2 Rotazione ogni 2 settimane
postrotate
/sbin/killall -HUP syslogd
endscript
}
/var/log/proftpd.log { Log ProFTPD Server
rotate 3 Rotazione ogni 3 settimane
postrotate
/sbin/killall -HUP syslogd
endscript
}
Tipo Infobox: DESCRIPTION - Skill Level: 5- SENIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2009-02-23 19:51:27
Brief report of the installation of rsyslog on Centos 5, with mysql support and PhpLogCon web interface.
This procedure has been tested on Centos 5 using the EPEL rpm repository.
Ensure all necessary packages are installed:
yum install rsyslog rsyslog-mysql
If you want local mysql server and web interface:
yum install mysql-server
yum install httpd php php-mysyql php-gd
If not running, start mysqld:
service mysqld status || service mysqld start
Create mysql database for rsyslog (file path changes on other distros/releases ):
mysql < /usr/share/doc/rsyslog-mysql-2.0.0/createDB.sql
Set mysql permissions (must be the same in /etc/rsyslog.conf and /path/top/phplogcon/config.php )
mysql> grant all on Syslog.* to syslog@localhost identified by 'mypass';
mysql> flush privileges ;
vi /etc/rsyslog.conf
# Log to Mysql Settings
$ModLoad ommysql
*.* :ommysql:localhost,Syslog,syslog,phplogcon
#Standard Redhat syslog settings
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg *
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
Try rsyslog (disable sysklogd):
service syslog stop
service rsyslog start
If you get messages like:
Feb 23 23:43:30 mon rsyslogd:could not load module '/usr/lib/rsyslog/ommysql', dlopen: /usr/lib/rsyslog/ommysql: cannot open shared object file: No such file or directory
fix fast with:
ln -s /usr/lib/rsyslog/ommysql.so /usr/lib/rsyslog/ommysql
Enable rsyslog service at boot time (and disable default syslog)
chkconfig syslog off
chkconfig rsyslog on
CENTRAL RSYSLOG
As with standard syslogd edit /etc/sysconfig/rsyslog
with option -r:
SYSLOGD_OPTIONS="-m 0 -r"
to enable the listening of syslog on the default 514 UDP port.
This is necessary for a centralized syslog server.
PHPLOGCON
Get latest package from http://www.phplogcon.org/
Unpack and move relevant files under Apache documents:
tar -zxvf phplogcon-2.5.24.tar.gz
cd phplogcon-2.5.24
mkdir /var/www/html/syslog
cp -a src/* /var/www/html/syslog
cd /var/www/html/syslog
To permit web configuration:
chmod 666 config.php
Browse to web interface: http://yourserver/syslog/ and follow on screen instructions.
Enable a Mysql source and use the authentication settings defined before.
Note that the logs table name is SystemEvents
To restore safe settings (do it after web configuration):
chmod 644 config.php
Networking - Configurazione |
Configurare i parametri di rete e il DNS: ifconfig, route, resolv.conf |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-09-29 10:47:14
Tipicamente la configurazione di un host in rete prevede pochi dati fondamentali: Indirizzo IP, subnet mask, default gateway e DNS server.
Esistono molteplici metodi per configurare il servizio di rete in Linux, molto di quanto viene qui riportato si applica a tutti gli Unix:
- editare i singoli file di configurazione del networking (ristartare il servizio per applicare le modifiche);
- usare comandi shell come ifconfig
, route
- utilizzare strumenti di configurazione con interfaccia a finestra come netconfig, linuxconf, webmin e altri facilmente individuabili su desktop KDE o GNOME.
File di configurazione:
/etc/sysconfig/network
Contiene le principali configurazioni per il Networking: hostname, domainname, default gateway (tipico di RedHat).
/etc/sysconfig/network-script/ifcfg-XXX
Directory contenente i file di configurazione delle singole interfacce (tipico di RedHat).
/etc/hosts
Contiene il mapping statico fra indirizzi e hostname ed alias. Segue un esempio.
/etc/services
Contiene il mapping tra i numeri di porta e i nomi dei servizi.
E' un file che solitamente non si modifica, salvo l'aggiunta di porte e protocolli custom.
/etc/host.conf
Specifica l'ordine secondo il quale il sistema effettuerà la ricerca di informazioni per risolvere gli indirizzi. Usato dalla resolver library in sistemi con libc versione 5.
order hosts,bind ; specifica di usare prima /etc/hosts e poi il DNS per risolvere gli IP.
/etc/nsswitch.conf
Stessa funzione di host.conf nei sistemi con libc versione 6 (glibc). In pratica è sempe meglio avere entrambi i file correttamente configurati.
/etc/resolv.conf
File di configurazione del client DNS ovvero contiene gli indirizzi del server DNS e un possibile dominio dell'host e l'ordine di ricerca
Comandi comuni
Tipicamente su Linux e su Unix i comandi che bastano per configurare la rete (con privilegi da root (sono:
ifconfig [interface] [options] | address
Permette di configurare le interfacce di rete dell'host. Es: ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up
. NOTA: Non esiste nessun controllo sulla corrispondenza fra netmask e broadcast.
route [ opzioni ] [comando] [parametri]
Permette di manipolare la tabella di routing del kernel. Es: route add -net 0.0.0.0/0 gw 192.168.0.1
/etc/init.d/network
Script di avvio/stop del networking. Es: Per riavviare il subsystem rete dopo una riconfigurazione basta scrivere /etc/init.d/network restart
.
ip [ opzioni ] oggetto { comando }
Comando estremamente potente e flessibile disponibile a chi ha installato i tool iproute2
E' possibile associare più indirizzi ip appartenenti alla stessa rete su un'unica interfaccia, ovvero è possibile associare più Alias a interfacce di rete.
Tipo Infobox: PATH - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2005-07-23 21:27:46
File di configurazione per il settaggio dei server DNS che il nostro sistema deve utilizzare (più precisamente è il file che configura il comportamente delle librerie del resolver, utilizzate da tutti i programmi fare query DNS).
[neo@dido neo]$ cat /etc/resolv.conf
Entry che identifica il nome del dominio a cui appartiene la propria macchina
domain dominio.it
Elenca domini che vengono aggiunti a nomi di host per ricerche DNS. Può generare traffico inutile e ritardi.
search dominio2.it dominio.com
Indirizzo IP del DNS primario
nameserver xxx.xxx.xxx.xxx
Indirizzo IP di un eventuale DNS secondario
nameserver xxx.xxx.xxx.xxx
Imposta a 3 secondi il tempo di timeout per una query DNS. Default 5 (su RedHat Linux)
options timeout 3
Imposta a 3 il numero di tentativi andati in timeout prima di rinunciare. Default 5 (su RedHat Linux)
options attempts 3
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: fargo 'fargo' - Ultimo Aggiornamento: 2002-10-16 19:36:13
Ifconfig serve essenzialmente a configurare l'indirizzo ip di un'interfaccia di rete, tipicamente una ethernet.
Un computer può avere più di un indirizzo IP. Ad ogni interface può corrispondere uno o più indirizzi IP.
per esempio potremmo avere un computer con due ethernet interface e avremmo quindi una eth0 e una eth1 (quindi due indirizzi), ma potremmo avere anche degli alias, quindi eth0:1, eth0:2 e così via.
Con ifconfig si possono configurare altri aspetti di un'interface, anche se molti parametri saranno difficilmente cambiati. Per esempio si possono cambiare e MTU e metrica, abilitare o disabilitare il multicast e la modalità promiscqua (di solito attivata automaticamente da programmi di sniffing). Sulla manuale (man ifconfig) si possono trovare queste opzioni, che consiglio di leggere.
Sicuramente i comandi dati sono sufficienti ad una configurazione standard.
Vediamo una panoramica dei principali comandi per utilizzare ifconfig:
ifconfig [interface] options | address
ifconfig -a
mostra la configurazione IP di tutte le interface. Su molti sistemi è sufficiente digitare ifconfig, senza l'opzione -a. Un esempio dell'output di ifconfig può essere questo (i commenti spiegano le varie righe):
eth0 Link encap:Ethernet HWaddr 00:50:8B:B0:15:7F
indica il tipo di hardware e il suo indirizzo fisico (MAC address)
inet addr:192.168.0.1 Bcast:192.168.1.255 Mask:255.255.255.0
indica indirizzo IP, indirizzo di broadcast e maschera della rete.
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Indica lo stato (UP) e le opzioni attive (accetta broadcast e multicast) l'MTU e la Metrica.
RX packets:2590603 errors:0 dropped:0 overruns:0 frame:0
TX packets:2713120 errors:0 dropped:0 overruns:1 carrier:0
collisions:0 txqueuelen:100
RX bytes:987732693 (941.9 Mb) TX bytes:1198865677 (1143.3 Mb)
Mostra le statistiche in ricezione (RX) e trasmissione (TX)
Interrupt:12 Base address:0x6100
Mostra l'indirizzo hardware della scheda
ifconfig interface
mostra la configurazione della interface specificata. Per esempio ifconfig eth0.
ifconfig interface ip netmask broadcast up/down
attiva disattiva una determinata interface. Con questo comando possiamo facilmente configuare e attivare una interface. Questo si applica sia come indirizzo primario che come alias, consentendoci di creare più alias alla stessa interfaccia.
Vediamo qualche esempio:
ifconfig eth0 192.168.0.1 up
assegna l'indirizzo IP 192.168.0.1 e attiva l'interface (di default viene assegnata la classe C in questo caso, che sarebbe stata una classe A se avessimo usato 10.0.0.1)
ifconfig eth0:1 192.168.0.1 up
assegna l'indirizzo IP 192.168.0.1 alla eth0:1 e attiva l'interface. Eseguendo questo comando di fatto assegniamo un'altro indirizzo IP alla interface.
ifconfig eth0 192.168.0.1 netmask 255.255.255.128 broadcast 192.168.0.127 up
assegna l'indirizzo IP 192.168.0.1 e attiva l'interface, creando una mask 192.168.0.0/25 (In questo modo la Classe C è divisa in due subnet di 126 indirizzi) e assegnando come indirizzo di broadcast 192.168.0.127.
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-24 13:47:12
Route è il comando Linux che viene utilizzato per manipolare le tabelle di routing. Permette di aggiungere ed eliminare route statiche e default gateway, oltre che semplicemente visualizzare la tabella di routing di un sistema.
Non è comune in altri Unix.
route add [-net|-host] indirizzo [gw gateway] [netmask netmask] [mss mss] [metric metric] [dev device]
route del indirizzo
Per aggiungere una route statica per un'intera rete si usa l'opzione add e si devinisce la rete con -net. Per esempio:
route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.0.0.254
Aggiunge una route statica per la rete 192.168.0.0/24 usando come gateway 10.0.0.254.
Per impostare il default gateway si può digitare qualcosa come:
route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.0.0.1
oppure:
route add default gw 10.0.0.1
Per cancellare una route esistente basta indicare il nome della rete:
route del -net 192.168.0.0
Per visualizzare la tabella di route basta: route
, se si vuole evitare il reverse lookup degli IP e velocizzare l'operazione scrivere: route -n
Per visualizzare la cache del sistema sulle route usate: route -C
Tipo Infobox: TIPS - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-07-10 23:23:01
Linux, a differenza di altri Unix come Solaris (dove ogni modello di scheda di rete ha un nome diverso in /dev) raggruppa i nomi delle interfacce di rete secondo il tipo (etherner, token ring, tunnel. ppp ecc.)
Su Linux, a prescindere dal modello, la prima scheda di rete ethernet ha sempre nome eth0
, le successive hanno nomi eth1
- eth2
ecc.
Interfacce tipo eth0:0
, eth0:1
sono interfacce logiche usate per ip virtuali attestati sulla stessa interfaccia fisiche.
Analogamente esistono nomi specifici per diversi protocolli di data link:
- token ring hanno nomi tipo tr0
, tr1:0
- ppp: ppp0
- il loopback (127.0.0.1, localhost) si rappresenta con lo
Anche delle VPN possono attestarsi su nomi di interfacce di rete come:
- Ipsec: ipsec0
- OpenVPN: tun0
Networking - Diagnosi |
I comandi e le tecniche per diagnosticare la rete: netstat, arp, tcpdump. |
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2004-05-23 16:10:35
Netstat è un comando polifunzionale che ti permettere di verificare le connessioni, le route e statistiche del proprio sistema. Un comando che ogni sys adm deve conoscere alla perfezione, utile per diagnostica e controllo del sistema.
netstat [information-type] [options]
netstat {--help|-h}
Richiama l'help
Per selezionare il tipo di informazioni da visualizzare, bisogna mettere come primo argomento una delle seguenti opzioni. Se non si specifica nulla il comando visualizzera' la lista delle socket aperte, opzione di default.
Information Type
--route , -r
Visualizza le route impostate sul sistema
--groups , -g
Visualizza informazioni riguardanti i multicast group membership (ipv4 e ipv6)
--interface=iface , -i
Visualizza le statistiche di tutte le interfacce o della singola interfaccia specificata
--masquerade , -M
Verifica le connessioni che hanno subito masquerading
--statistics , -s
Visuallizza un sommario di statistiche
Options
--verbose , -v
Abilita il verbose mode.
--numeric , -n
Non risolve gli Ip e il numero delle porte, risparmiando i tempi per query DNS.
--protocol=family , -A
Opzione per specificare l'address family quando si vuole visualizzare le connessioni.
-c, --continuous
Esegue il comando ogni secondo (o ogni intervallo di secondi specificato).
-p, --program
Mostra il PID, ed il nome del programma proprietario della socket. Utile per capire, per esempio, quale programma utilizza una specifica porta TCP.
-l, --listening
Mostra solo le conessioni in LISTENING
-a, --all
Mostra tutte le connessioni (LISTENING e non), se abbinato al flag -i visualizza le informazioni per tutte le interfacce
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-16 23:13:18
Diagnosticare problemi di rete è attività che difficilmente si spiega a parole.
Per essere in grado di affrontare problematiche di rete complesse (ma anche quelle relativamente triviali) sono necessari diversi skill, non tutti tramandabili facilmente:
1 - Solide basi teoriche e conoscenza dello stack TCP/IP.
Inutile fingere, si deve poter diagnosticare in fretta un problema di DNS rispetto a quello dovuto ad un cavo scollegato, un problema di routing rispetto ad un problema dovuto a troppi errori su una interfaccia.
Per farlo, a prescindere dai sistemi usati, è sempre necessario avere in mente network layers e protocolli.
2 - Esperienza.
Come sempre, i trucchi migliori sono quelli che si acquisiscono sul campo e la familiarità con ambienti e dispositivi specifici ci rende più efficaci e rapidi nelle scelte e nelle implementazioni.
3 - Conoscenza degli strumenti a disposizione.
Qui possiamo dare qualche indicazione utile, valida per quasi tutti gli Unix e anche sistemi Windows:
- ping, traceroute, telnet sono utili per diagnosticare problemi di raggiungibilità di sistemi remoti
- ifconfig, route servono per identificare la configurazione di rete corrente ed evidenziare routing particolari o problemi di errori a livello di interfaccia fisica.
- arp e le arp cache sono sempre da considerare quando si cambia IP di una macchina o la macchina associata ad un IP
- netstat è uno strumento flessibile per identificare connessioni di rete attive e errori e statistiche di traffico su IP, TCP, UDP e ICMP.
- tcpdump, snoop e altri sniffer sono fondamentali quando si devono analizzare nel dettagli dei flussi di pacchetti in rete
- nslookup e dig sono fondamentali per diagnosticare problemi di DNS.
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2002-10-12 20:02:55
Comando che ti permette di visualizzare e manipolare le voci di arp nella cache del sistema.
Come la maggior parte dei comandi relativi alla network ottiene informazioni dal proc file-system (/proc/net/arp)
Visualizzazione del contenuto di tutta la cache, oppure specificando l'host solo l'arp del suddetto host
arp [opzioni] -a [hostname]
Cancellazzione dell'arp di uno specifico host
arp [opzioni] -d hostname
Creazione manuale di uno specifico arp di un host
arp [opzioni] -s hostname hw_addr [opzioni]
Options
-v, --verbose
Abilita il verbose mode
-n, --numeric
Non esegue il DNS lookup degli indirizzi ip
-H type, --hw-type type, -t type
Specifica quale classe di arp deve visualizzare,cancellare inserire. ( ARCnet (arcnet) , PROnet (pronet) , AX.25 (ax25) and NET/ROM (netrom). Default=ether)
-i If, --device If
Specifica l'interfaccia
-e
Visualizza il risultato in linux standard
Tipo Infobox: COMMANDS - Skill Level: 3- INTERMEDIATE - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2003-04-04 22:44:28
Tcpdump è un ottimo sniffer che permette di monitorare il traffico di rete con filtri flessibili per limitare l'output a video secondo varie regole di matching di pacchetti.
tcpdump [ options ] [ expression ]
-a
Tenta di risolvere network e broadcast address
-c [count]
Esegue l'exit dopo aver raccolto tot pacc
-F [file]
Specifica di utilizzare un file in input per le expression
-i
Specifica l'interfaccia da cui sniffare
-n
Non risolve gli indirizzi ip
-nn
Non risolve ne gli ip ne il numero delle porte
-p
Non abilita il promiscuous mode sull'interfacce da cui tcpdump e' in ascolto
-v,-vv,-vvv
Abilita il verbose mode
-x
Printa ogni paccheto sniffato
Le expression servono per limitare il matching dei pacchetti
proto
Specifica il protocollo [tcp,udp,ether etc...]
dst host [host]
Specifica l'host di destinazione dei pacchetti
dst net
Specifica la network di destinazione dei pacchetti
dst port
Specifica la porta di destinazione dei pacchetti
src host [host]
Specifica l'host sorgente dei pacchetti
src net
Specifica la network sorgente dei pacchetti
src port
Specifica la porta sorgente dei pacchetti
`!' o `not'
Simbolo di negazione, ovvero inverte il matching
`&&' or `and'
Simbolo di concatenazione, visualizza il pacchetto che fa il match di tutte le regole concatenate
`||' or `or
Simbolo di alternanza, visualizza il paccheto o con questa opzione o con quest'altra
Tipo Infobox: TIPS - Skill Level: 3- INTERMEDIATE - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2002-10-16 18:51:58
Quando lanciate il comando tcpdump, su una macchina remota con una sola interfaccia oppure dovete sniffare il traffico dalla stessa interfaccia da cui avete aperto la connessione, dovrete utilizzare dei filtri per evitare di sniffare il vostro stesso traffico telnet o ssh e ricadere in vorticosi loop che rendono l'opera di analisi dei pacchetti improba.
Se mi collego ad un host remoto con SSH, dovro' sniffare tutto tranne i pacchetti con src e dst port 22
[root@morpheus pub]# tcpdump -i eth0 ! port 22
Kernel filter, protocol ALL, datagram packet socket
tcpdump: listening on eth0
[ Traffico sniffato ]
Per Interrompere Ctrl-c
Se devo sniffare ANCHE pacchetti SSH, ma non quelli generati dalla mia connessione posso scrivere (ipotizzando che il mio IP sorgente sia 10.0.0.10):
tcpdump -n -i eth0 ! host 10.0.0.10
(Notare il -n per evitare che venga fatto un DNS reverse lookup dell'IP 10.0.0.10, rendendo inefficace il filtro)
Tipo Infobox: DESCRIPTION - Skill Level: 3- INTERMEDIATE - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2003-11-16 19:49:46
TTCP, test TCP è un tool Open Source originariamente scritto da Mike Muuss che permette di verificare le performance (Throughput) della propria network evitando di scrivere o leggere dati su disco dando dunque la possibilità di testare anche network basate su fibra.
Il test si basa sull'invio e ricezione di pacchetti UDP o TCP tramite due host oppure utilizzandolo come "network pipe" , quindi con un terzo host che ha la funzione di inviare e ricevere, è possibile verificare il Throughput di un segmento di network che originariamente per motivi di routing o strutturali non possono colloquiare fra di loro.
Installazione
L'installazione non richiede nessuna particolare attenzione, sia tramite rpm o compilazione dei sorgenti. Per i primi ci si può appoggiare ai vari repository come http://www.rpmfind.net per trovare il package più adatto per i sorgenti si possono trovare in rete in varti ftp server pubblici come
Installazione da RPM
[root@dido root]# wget ftp://216.254.0.38/linux/redhat/9/en/os/i386/RedHat/RPMS/ttcp-1.12-7.i386.rpm
--11:12:45-- ftp://216.254.0.38/linux/redhat/9/en/os/i386/RedHat/RPMS/ttcp-1.12-7.i386.rpm
=> `ttcp-1.12-7.i386.rpm'
Connecting to 216.254.0.38:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD /linux/redhat/9/en/os/i386/RedHat/RPMS ... done.
==> PORT ... done. ==> RETR ttcp-1.12-7.i386.rpm ... done.
Length: 12,259 (unauthoritative)
100%[=================================================================================>] 12,259 33.72K/s ETA 00:00
11:12:47 (33.72 KB/s) - `ttcp-1.12-7.i386.rpm' saved [12259]
[root@dido root]# rpm -ihv /home/neo/fastweb/ttcp-1.12-7.i386.rpm
Preparing... ########################################### [100%]
1:ttcp ########################################### [100%]
[root@dido root]# rpm -qil ttcp
Name : ttcp Relocations: (not relocateable)
[...]
Binario
/usr/bin/ttcp
Manual e file README
/usr/share/doc/ttcp-1.12
/usr/share/doc/ttcp-1.12/README
/usr/share/man/man1/ttcp.1.gz
Installazione da sorgenti
[root@dido root]# wget http://www.netcordia.com/tools/tools/TTCP/ttcp.c
--11:22:11-- http://www.netcordia.com/tools/tools/TTCP/ttcp.c
=> `ttcp.c'
Resolving www.netcordia.com... done.
Connecting to www.netcordia.com[63.208.176.20]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 19,554 [text/plain]
100%[=================================================================================>] 19,554 60.81K/s ETA 00:00
11:22:12 (60.81 KB/s) - `ttcp.c' saved [19554/19554]
[root@dido root]# gcc -O3 -o ttcp ttcp.c
ttcp.c:539: warning: static declaration for `gettimeofday' follows non-static
Esempi di uso
Qualunque sia la funzione del test o l'invio dati tramite ttcp occorre attivarlo almeno su due host, sul primo in modalità "trasmitter" e il secondo in modalità "receiver".
Abilitazione del receiver tramite l'opzione -r, maggior verbosità con l'opzione -v e l'opzione -s per eviatre che i dati in stdin vengano printati sullo stdout.
La porta di ascolto di default è la 5001
[root@nefertiti root]# ttcp -r -v -s
ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp
ttcp-r: socket
Abilitazione del trasmitter tramite l'opzione -t , specificando nella linea di comando l'host receiver o l'host che ha la funzione di network pipe e come era per il receiver anche qui l'opzione -s è dobbligo se si vuole effetuare un test.
[root@pippo root]# ttcp -t -v -s 192.168.1.2
Esempio Risulato
Per un considerare un test valido vengono richiesti almeno dieci secondi di trasferimento dati.
ttcp-r: accept from 192.168.1.5
ttcp-t: 16777216 bytes in 408.85 real seconds = 40.07 KB/sec +++
ttcp-t: 16777216 bytes in 0.00 CPU seconds = 1638400000.00 KB/cpu sec
ttcp-t: 2048 I/O calls, msec/call = 204.42, calls/sec = 5.01
ttcp-t: 0.0user 0.0sys 6:48real 0% 0i+0d 0maxrss 0+2pf 0+0csw
ttcp-t: buffer address 0x8050000
Esempio di utilizzo di ttcp come "network pipe"
[root@pippo root]# ttcp -rvs | ttcp -tvs 192.168.1.5
ttcp-r: socket
ttcp-t: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp -> 192.168.1.5
ttcp-t: socket
ttcp-t: connect
In questo caso tutto il traffico ricevuto dall'host pippo sulla porta 5001 verrà dirottato sull'host 192.168.1.5
LINK: TTCP from CISCO - http://www.cisco.com/warp/public/471/ttcp.html
LINK: Repository di sorgenti di varie versioni - http://www.netcordia.com/tools/tools/TTCP/ttcp.html
LINK: Codice sorgente originale di Mike Muuss - http://sd.wareonearth.com/~phil/net/ttcp/ttcp.c
Networking - Tool comuni |
I comandi comuni per utilizzare la rete: finger, ftp, nslookup, dig, lynx, wget. |
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2002-10-10 18:42:13
Comando che permette di lanciare query dns per la risoluzione di ip o hostname.
Agisce in due modalita:
Interactive: Permette di effettuare piu' query e visualizza i singoli riultati. Viene abilitato in modo automatico quando il comando non e' seguito da argomenti oppure se il primo argomento e' un trattino (-) seguito dal secondo argomento che corrisponde all'host name o all'ip del name server.
non-interctive: Permette di effettuare una sola query e ovviamente visualizza il risultato della singola query. Abilitato ogni qualvolta che si specifica l'host-to-find.
Il DNS di default a cui si effettuano le query e' quello configurato in /etc/resolv.conf
nslookup [opzioni] [host-to-findi] [-server]
INTERACTIVE COMMAND
?
richiama l'help
host [server]
look up dell'host eseguendo una query al dns di default oppure al server specificato
server nomeserver
Modifica il dns di default per la sessione corrente
set keyword [value]
Comando che permette di cambiare i criteri di ricerca e visualizzazione delle informazioni che si vanno a richiedere al dns. Di seguito sono riportati alcune opzioni di questo comando.
all
Visualizza tutte le opzioni che sono selezionate di default
class=value
Modifica la query class
type
Modifica il tipo di informazioni da richiedere al dns.
CLASS
IN
Internet class
CHAOS
chaos class
HESIOD
MIT Athena Hesiod class
ANY
wildcard, cioe' tutte le classi
TYPE
A
L'indirizzo internet di un host
CNAME
canonical name di un alias
MX
mail exchanger
NS
Name server autoritativo della zona
PTR
l'host name se la query e' per un indirizzo internet altrimenti altre informazioni
SOA
Visualizza i dns autoritativi della zona
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-16 18:05:20
Parlare di reti vuol dire anche parlare di protocolli e servizi di tutti i tipi, per vari scopi. Alcuni sono un retaggio del passato, di quel mondo accademico basato su Unix su cui Internet è cresciuta.
I comandi testuali per utilizzare, diagnosticare rete e servizi sono comuni a tutti gli Unix e, spesso a tutti i sistemi operativi, in quanto costituiscono spesso dei normali client per protocolli condivisi.
Le stesse funzioni e gli stessi protocolli sono comunemtne usati con analoghi strumenti e programmi grafici.
Gli strumenti più comuni, accessibili dalla shell di molti Unix sono:
telnet Permette un collegamento su una shell di un host remoto. E' comunissimo e molto diffuso. Richiede una login e un password che vengono trasmesse in chiaro sulla rete.
ssh Come telnet permette l'accesso remoto via shell ad un sistema, ma i dati trasmessi vegnono criptati per maggior sicurezza.
nslookup - dig Sono di fatto dei client DNS, permettono di interrogare server DNS e consentono precise operazioni di analisi e troubleshooting.
ftp E' un comune protocollo di trasferimento di file fra host remoti. E' anche il nome di base del client con cui si possono uploadare o downlodare file da server FTP remoti.
lynx - links Sono dei cleint HTTP testuali, cioè dei browser che visualizzano solo i testi dei siti web e non le immagini.
wget E' un comodo comandi, comuni in molti Linux ma disponibile anche su Unix, per scaricare file remoti tramite FTP o HTTP.
finger E' il client dell'omonimo protocollo, permette di elencare gli utenti collegati su un host remoto. Ormai è usato raramente.
traceroute Permette di visualizzare l'elenco degli nodi che esistono fra il nostro host e l'indirizzo specificato.
ping Permette di diagnosticare se è raggiungibile via retel'indirizzo specificato.
whois Esegue una query whois, utile anche per ottenere dati su chi ha registrato il dominio specificato.
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2002-10-10 18:43:48
Utility GNU per downlodare files, sia tramite HTTP che FTP, con la possibilita' del resume, di logging e tante altre features.
Possiede due file di configurazioni che possono contenere le opzioni di default del comando:
-.wgetrc file di configurazione del singolo utente
- /usr/local/etc/wgetrc file di configurazione globale
Di seguito sono riportate le opzioni piu' interessanti:
wget [option]... [URL]...
BASIC OPTIONS
-b; --background
Esegue il processo in background
-e; --execute
Esegue il comando come se fosse all'interno del file di configurazione dell'utente .wgetrc
LOGGING E INPUT FILE OPTIONS
-o logfile;--output-file=logfile
Logga tutti i messaggi dello STERR in un file.
-a;--append-output=logfile
Come sopra, con la differenza che esegue un'append al file di log se tale file esiste gia'.
-d;--debug
Abilita il debug
-i;--input-file=file
Legge l'eleco degli indirizzi dal file specificato
-F;--force-html
Opzione per indicargli che il file in input e' un file html, e i vari url a cui si deve connettere sono quelli all'interno del tag del link (href="url")
DOWNLOAD OPTIONS
--bind-address
Specifica l'indirizzo a cui bindarsi sulla macchina locale
-c;--continue
Opzione per abilitare il resume di un download
--spider
Abilita lo spider mode, ovvero non scarica niente ma verifica che l'url esista
-Q;--quota
Specifica quanto scaricare, non funziona con un singolo file!
DIRECTORY OPTIONS
-nd;--no-directories
Non ricrea la struttura completa trovata sul server remoto, quindi tutti i file vengono scaricati nella directory corrente.
-x;--force-directories
Esattamente l'opposto dell'opzione -nd, ovvero foza la creazione della struttura ristrovata sul server remoto
HTTP OPTIONS
--http-user=user;--http-passwd=password
Specifica Utente e password per connettersi via http ad un server remoto
-C on/off; --cache=on/off
Abilita o meno la cache lato server
--cookies=on/off
Abilita o meno l'uso dei cookies
-U agent-string;--user-agent=agent string
Opzione che ti permette di modificare l'user-agent per identificarsi al web server
FTP OPTIONS
-g on/off;--glob=on/off
Abilita o meno l'uso delle wildcards. [ " * ", " ? " etc..]
--passive-ftp
Abilita il passive mode
RECURSIVE RETRIEVAL OPTIONS
-r;--recursive
Abilita il recursive mode
--delete-after
Cancella cio' che e' stato scaricato (ovviamente sulla macchina locale)
--convert-link
Opzione che permette di modificare in modo automatico i link all'interno di una pagina html per permettere la visualizzazioenda locale
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2004-05-23 16:11:14
Ftp oltre ad essere un protocollo e' anche il comando (user-interface) per connettersi ad un server ftp.
Utilizzato per downloadare e uploadare files. Disponibile in tutti gli Unix e su Windows.
I comandi che si possono dare dal client sono quelli tipici del protocollo FTP e risultano disponibili su ogni client ftp.
ftp -pievd [host]
-p
Abilita il passive mode, utile se ci sono firewall fra il server ed il client
-i
Disabilita l'interctive prompting
-e
Disabilita il command editing e l'history
-v
Abilita il verbose mode
-d
Abilita il debugging
Comandi FTP
open nomehost
Si collega all'host specificato
user login
Si logga all'host a cui si è connessi con la login indicato
open nomehost
Si collega all'host specificato
dir
Visualizza file e directory.
get nomefile
Scarica il file specificato
put nomefile
Fa un upload sul server ftp del file locale specificato
cd nomedir
Cambia la directory corrente
ascii
Attiva la modalità di trasferimento file ascii
bin
Attiva la modalità di trasferimento file binari
pas
Attiva/disattiva la modalità passiva
!
Esegue il comando localmente. Es: !dir visualizza la directory corrente locale e non quella sul server FTP remoto.
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2002-10-10 18:45:34
Valida alternativa a nslookup per effettuare query sul dns.
Come nslookup ha due modi di utilizzo:
- Interactive mode, per effettuare una semplice query
- Batch mode, per effettuare una serie di query contenute in un file
dig [@server] domain [] [] [-]
@server
Specifica il server DNS a cui fare le query
query-type
Specifica che tipo di query effettuare
query-class
Seleziona la class della query
-f
-dig-options che specifica il file contenente le query da effettuare in modalita' batch mode.
Tipo Infobox: BOFH - Skill Level: 2- JUNIOR - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2006-09-20 21:59:26
Permette di scaricare un file dalla rete, eseguendo il processo in background (opzione -b) con possibilità di recupero in caso di interruzione (opzione -c) partendo dal file di log generato (opzione -o).
homer@Joker:~$ wget -c -b -o disc1-log ftp://ftp.edisontel.com/pub/Fedora_Mirror/1/i386/iso/yarrow-i386-disc1.iso
Continuing in background, pid 1340.
Utile nel caso sia necessario, abbandonare una shell remota di una macchina con un download in corso. Wget continuerà a scaricare i file anche dopo la disconnessione e in caso di interruzione imprevista il download potrà comunque essere ripreso.
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2004-05-23 16:11:34
Restituisce informazioni utili dei vari utenti del sistema (anche remoti).
Ormai, per questioni di riservatezza e sicurezza, il numero di server finger in rete è ridottissimo.
finger [-lmsp] [user] [user@host]
-m
Switch per identificare se il nome dell'utente corrisponde al login name oppure al real-name.
-s
Visualizza login name, real name, terminal name,write status, idle time, login time, e eventuali informazioni sull'ufficio e il numero di telefono.
-p
Utilizzato con l'opzione -l non visualizza alcune informazioni contenute nei seguenti file ``.plan'', ``.project'' e ``.pgpkey''
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2004-05-23 16:12:32
Lynx è un web browser testuale molto popolare, veloce e comodo, ma non supporta i frame.
Le opzioni disponibili sono infinite, di seguito sono riportati i comandi piu comuni da utilizzare una volta che lynx è stato lanciato
lynx [options] [path or URL]
lynx --help
Per richiamare l'help
COMMANDS
Up arrows e Down Arrows
Permette lo scroll della pagina visualizzata
Return e right Arrows
Segue il ink selezionato nella pagina visualizzata, equivalente al click con il mouse sul link.
Left Arrows
Richiama la pagina precedentemente caricata.
H; ?
Richiama l'help.
K
Richiama la lista dei comandi con le relative key bindate.
d
Esegue il download.
g
Abilita la funzione goto, ovvero ti permette di cambiare url.
q
Chiude il browser.
o
Richiama una finistra con la possibilita' di cambiare le opzioni.
p
Esegue la stampa
^A
Richiama la home page
!
Richiama la shell senza chiudere il browser, e' possibile richiamarlo digitando in shell exit
LINK: Faq, Official Info - http://lynx.isc.org/release/lynx2-8-3/lynx_help/lynx_help_main.html
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2002-10-10 18:30:16
Un web browser testuale con comandi simili a lynx che supporta anche tabelle e frames.
Come tutti i web browser testuali risulta essere un prodotto veloce, leggero e funzionale, ma può presentare difficoltà di visualizzazione con siti con alto contenuto grafico o dinamico.
links -[OPTIONS] [filename|URL]
I comandi riportati sono quelli in aggiunta o diversi da lynx
F9 e F10
Richiama il menu.
^C
Exit
Left Arrow
Permette di fermare il download
\
Switch che permette la visualizzazione dei src della pagina html
^Z
Links passa in background. Per richiamarlo fg links.
LINK: Home page del progetto links - http://links.sourceforge.net/
Il superdemone Inetd (e Xinetd) |
Configurazione di inetd e tcp wrappers. Configurazione di xinetd. |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-17 12:33:51
Inetd è un demone (servizio) che ascolta sulle porte specificate nel suo file di configurazione e fa avviare il relativo servizio nel momento in cui viene fatta una richiesta.
Viene chiamato superdemone proprio per questa sua funzione di controllo di altri demoni.
Il vantaggio di usarlo è di ottimizzare le risorse del sistema, avviando il programma che gestisce un determinato servizio solo quando ci sono effettive richieste.
Sebbene possa essere usato per gestire quasi tutti i servizi è consigliabile farlo solo per quelli a basso e occasionale traffico.
/etc/inetd.conf
E' solitamente il suo file di configurazione
/etc/services
E' un file che assegna un nome di servizio alla relativa porta. Viene usato anche da altri programmi.
Spesso inetd si trova abbinato ai tcp wrappers che permettono di introdurre delle access list che regolano quali IP possono accedere a determinati servizi.
Spesso un'installazione standard di Unix lascia il file inetd.conf
con molte porte inutilmente aperte: è consigliabile commentare le relative righe per evitare che inet ascolti su porte non utilizzate e potenzialmente soggette ad intrusioni.
Ogni volta che viene cambiato il suo file di configurazione, va riavviato il servizio.
Inetd è comune su tutti gli Unix, ma su Linux più recenti si utilizza Xinetd, che è una versione più evoluta che introduce nuove funzionalità.
LINK: The inetd super server - http://www.tldp.org/LDP/nag/node125.html
Tipo Infobox: PATH - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2004-05-23 16:13:13
E' il file di configurazione del superdemone Inetd.
Qui si configurano quali servizi e relative porte vengono resi disponibili sul sistema.
Ogni riga di /etc/inetd.conf corrisponde ad un servizio che viene gestito da inetd.
Se è commentata con un # il servizio non viene avviato e inetd non mette la relativa porta in listening.
Il formato di ogni riga è:
service type protocol wait user server argument
Un esempio di una riga tipica è:
ftp stream tcp nowait root /usr/sbin/in.ftpd -l
Se si vogliono utilizzare i tcpwrapper per limitare l'accesso al servizio la riga sopra diventa:
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l
Vediamo nei dettagli le varie voci:
service E' il nome del servizio a cui si riferisce la riga di inetd.conf. La porta a cui è associato viene ottenuta dal file /etc/services
. Di default inetd.conf prevede vari servizi. Alcuni sono attivati, altri commentati. Tipicamente gli unici che si dovrebbero lasciare attivati (se serve) sono ftp e telnet o ssh (se si decide di non far partire il server ssh autnonomamente).
type Specifica il tipo di socket usata per il protocollo indicato. Può essere: stream, dgram, sunrpc_tcp, sunrpc_udp.
protocol Indica il tipo di protocollo: tcp o udp. Si basa sul file /etc/protocols
wait Indica se aspettare o no che il server invocato rilasci la socket prima di rimettersi in listening sulla relativa porta
user L'utente con cui viene lanciato il server. Inetd di suo viene eseguito come root.
server Il path completo del programma da eseguire per gestire la connessione per il servizio specificato
argument Gli argomenti da passare al comando di server lanciato.
LINK: Configuring inetd.conf securely - http://www.uwsg.iu.edu/security/inetd.html
LINK: inetd.conf file format dor TCP/IP - http://www.unet.univie.ac.at/aix/files/aixfiles/inetd.conf.htm
Tipo Infobox: TIPS - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-17 13:19:31
Di default inetd permette fino a 40 connessioni al minuto su una specifica porta (è una misura anti attacchi DOS).
Questo può essere un limite per server particolarmente affollati.
Tipicamente un server pop3 con parecchie connessioni può superare questo limite e venire temporaneamente disattivato, lasciando un esplicativo messaggio di errore nei log.
Per impostare, per esempio a 100, il numero massimo di connessioni al minuto inserire una simile riga in inetd.conf:
pop-3 stream tcp nowait.100 root /usr/sbin/tcpd ipop3d
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-17 12:58:23
I tcp wrapper (tcpd), sviluppati dall'olandese Wietse Venema, sono un layer software che permette il controllo e il filtro degli accessi a servizi del sistema, tipicamente gestiti con inetd.
In pratica da una logica:
1- client (che esegue una connessione)
2- inetd (che risponde alla connessione e lancia il relativo server)
3- server (che processa la connessione al suo servizio)
si passa ad una configurazione:
1- client 2- inetd 3- tcpd 4- server
in cui i tcpwrappers possono limitare l'accesso al servizio secondo criteri configurabili ed hanno funzionalità anti-spoofing e anti tcp sequence guessing.
La configurazione dei tcp wrappers si fa essenzialmente in due file:
/etc/hosts.allow
Permette di specificare quali servizi permettere e da quali indirizzi IP
/etc/hosts.deny
Permette di specificare come limitare l'accesso a specifici servizi
In alcuni sistemi con Xinetd (es: RedHat) la configurazione dei wrappers viene direttamente inglobata nella configurazione dei singoli servizi.
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-17 13:09:46
Nelle versioni di Linux più recenti Inetd viene sostituito da un superdemone più versatile e sicuro: Xinetd.
A differenza del precedessore, xinetd:
- Limita o regola l'accesso a determinati servizi sia con un sistema proprio sia inglobando nella sua configurazione i TcpWrappers
- Offre un sistema di logging indipendente da syslog
- Permette di limitare l'accesso ai servizi in determinate ore della giornata
- Supporta il protocollo Ipv6
- Utilizza vari meccanismi che mitigano l'impatto di un attacco DOS.
La configurazione del demone e dei servizi può essere suddivisa in più file (non compatibili con /etc/inetd.conf).
Su RedHat si deve operare su:
/etc/xinetd.conf
File principale di configurazione del demone
/etc/xinetd.d/*
Directory che contiene i singoli file dei servizi offerti da xinetd
SOURCE: Xinetd Home Page - http://www.xinetd.org/
Tipo Infobox: BOFH - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-18 12:59:23
Visualizza rapidamente quali servizi sono attivati e quali disattivati nella configurazione di xinetd.
Le righe dove si trova un disable = no
indicano che il rispettivo servizio è attivato.
grep disable /etc/xinetd.d/*
/etc/xinetd.d/chargen: disable = yes
/etc/xinetd.d/chargen-udp: disable = yes
/etc/xinetd.d/daytime: disable = yes
/etc/xinetd.d/daytime-udp: disable = yes
/etc/xinetd.d/echo: disable = yes
/etc/xinetd.d/echo-udp: disable = yes
/etc/xinetd.d/finger: disable = yes
/etc/xinetd.d/ntalk: disable = yes
/etc/xinetd.d/rexec: disable = yes
/etc/xinetd.d/rlogin: disable = yes
/etc/xinetd.d/rsh: disable = yes
/etc/xinetd.d/rsync: disable = no
/etc/xinetd.d/servers: disable = yes
/etc/xinetd.d/services: disable = yes
/etc/xinetd.d/talk: disable = yes
/etc/xinetd.d/telnet: disable = yes
/etc/xinetd.d/time: disable = yes
/etc/xinetd.d/time-udp: disable = yes
/etc/xinetd.d/wu-ftpd: disable = no
Tipo Infobox: PATH - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-18 13:48:33
E' il file di configurazione del superdemon Xinetd. Ha una sintassi leggermente più complicata e flessibile del suo analogo /etc/inet.conf e può prevedere degli "include" che ne facilitano la gestione.
In particolari su distribuzioni Linux come RedHat si usa inserire per ogni servizio un omonimo file di configurazione nella directory /etc/xinetd.d/
Vediamo un esempio di xinetd.conf leggermente modificato (in versione security paranoia) rispetto a quello standard.
[root@95 al]# cat /etc/xinetd.conf
Si definiscono fra parentesi graffe le proprietà comuni a tutti i servizi (defaults)
defaults
{
Numero di istanze del server evocato. Di default sono infinite
instances = 60
Specifica di usare SYSLOG con facility authpriv per il logging. Può anche essere FILE /path/nomelog
log_type = SYSLOG authpriv
Cosa viene loggato di ogni connessione. Può essere uno o più delle seguenti voci: HOST remoto, PID del server, DURATION della sessione, EXIT status del server, USERID dell'utente remoto (tramite identd - sconsigliato)
log_on_success = HOST PID
Cosa viene loggato di ogni connessione non riuscita (per access list o problemi nel lancio del server): HOST remoto, ATTEMPT registrato, USERID dell'utente remoto (identd), RECORD di ogni dato utile
log_on_failure = HOST RECORD
Limita il numero massimo di connessioni contemporanee per server: il primo numero è il numero di connessioni al secondo, superato il quale il servizio viene temporaneamente disabilitato per il numero di secondo indicato con la seconda cifra. Su server molto
cps = 25 30
Il numero massimo di connessioni da un singolo IP ad un determinato servizio
per_source = 5
}
Specifica la directory che contiente ulteriori file di configurazione (in genere 1 per ogni servizio)
includedir /etc/xinetd.d
Prendiamo un file di esempio di configurazione di un singolo servizio:
cat /etc/xinetd.d/wu-ftp
Definisce il servizio, associa la relativa prota tramite il file /etc/services
service ftp
{
Indica se disattivarlo o farlo funzionare, in questo caso il servizio è attivo
disable = no
Come viene gestito il flusso di dati sulla socket: stream Servizio basato su stream di dati, dgram Servizio basati su datagrammi, raw Servizio che richiede accesso diretto all'IP, seqpacket Sercizio che richiede una trasmissione di datagrammi affidabile
socket_type = stream
Indica se il server lanciato è single-threaded (wait=yes: Xinetd non accetta più connessioni fino a quando il server lanciato muore) o multi-threaded (wait=no: Xinetd continua ad accettare connessioni per il servizio ed invocare nuove istanze del server)
wait = no
L'utente con cui viene lanciato il server
user = root
Il path completo del comando per lanciare il server
server = /usr/sbin/in.ftpd
Gli argomenti eventualmente passati al comando lanciato
server_args = -l -a
Il += indica di aggiungere le impostazioni qui indicate a quelle impostate di default
log_on_success += DURATION
Il livello di priorità del server lanciato
nice = 10
Limita l'accesso al servizio solo dagli IP o reti indicati (Alcune notazioni valide: 10.0.0.0/24, 10.0.0.1, 0.0.0.0 (tutti gli IP)
only_from = 192.168.0.0/24
Esclude l'accesso dagli IP o reti indicati. Insieme a only_from gestire le access list di xinetd
no_access = 192.168.4.0/24
Definisce il range di ore del giorno in cui servizio è attivo. Formato hh.mm-hh.mm (hh da 0 a 23, mm da 0 a 59)
access_times = 0:0-6:30
}
La configurazione e la gestione dei principali programmi che gestiscono i protocolli di rete più comuni (http, smtp, dns, nfs, ftp, pop3/imap, smb) sono argomenti ampi, per i quali è inevitabile fare approfondimenti dettati dalle proprie necessità e contningenze.
Qui ci limitatimo a fornire l'idea d'insieme, le logiche di base per gestire questi servizi, sapere dove configurarli e analizzarne log e comportamenti:
- Sapere l'utilizzo e la logica generale del protocollo gestito (avere ben chiaro il livello a cui agisce il protocollo e come funziona);
- Sapere avviare, stoppare e capire se è in esecuzione il servizio che gestisce il dato protocollo (usare il comando service o gli script in /etc/init.d/* per avviare/stoppare un servizio e strumenti come netstat e ps per capire se il servizio è in esecuzione e in Listening su una porta pubblica);
- Sapere configurare l'avvio del servizio al boot (tramite tool come ntsysv);
- Sapere dove andare a trovare eventuali log dedicati (che sono sempre ottima fonte di informazioni nel caso in cui qualcosa non funziona);
- Conoscere i tool grafici e i riferimenti per la documentazione di un dato software.
Su questi argomenti è disponibile una videolezione generale:
http://mediateca.elis.org/MEPlayer/start.asp?ID=1147&Mode=2
(link diretto: rtsp://teca.elis.org/1147/video.smi )
Nello specifico:
APACHE (SERVER WEB)
E' il server web usato da almeno il 65% degli host su Internet. E' diffuso su Linux, altri Unix e anche Windows.
Di default su RedHat, i documenti html vanno messi in /var/www/html/ e che l'home page deve chiamarsi index.html.
I file di configurazione stanno in /etc/httpd/ (il principale è httpd.conf) e in diferse distribuzioni possono "comporsi" in vari modi.
NFS
Network File System è un file system di rete particolarmente diffuso nel mondo Unix.
Per l'esame è opportuno sapere come configurare un server NFS (editando il file /etc/exports e lanciando i servizi NFS) e, soprattutto, come utilizzare NFS lato client:
- Assicurarsi di avere il servizio portmap in esecuzione
- Usare il comando mount per montare una condivisione di rete su un server NFS remoto su una directory del proprio computer
SAMBA (SMB)
SMB è il protocollo di rete comune nel mondo Windows. Il supporto su Linux è offerto dal software Samba.
Come per NFS è opportuno sapere gestire Samba lato server e sapere come usarlo lato client.
Il file di configurazione è /etc/samba/smb.conf, lo strumento grafico per configurarlo su RedHat è redhat-config-samba.
[RHCT] Documentazione RedHat:
http://www.europe.redhat.com/documentation/rhl9/rhl-cg-it-9/ch-samba.php3
POSTA ELETTRONICA (SMTP, POP3/IMAP)
La posta elettronica è una applicazione cruciale per Internet e, anche se lato client viene gestita da un unico programma, su un server esistono diversi servizi per i vari protocolli coinvolti:
SMTP - Il protocollo con cui viene inviata posta su Internet. I programmi più diffusi per gestirlo sono Sendmail (default su RedHat) e Postfix.
La loro configurazione di base si limita generalmente a:
- Indicare quali indirizzi solo abilitati ad usare il server per inviare posta (relay);
- Indicare quali sono i domini locali, per cui il server può ricevere posta da tutta Internet.
POP3/IMAP - Sono due diversi protocolli (il secondo è meno diffuso e più evoluto) con cui il client scarica la posta da un server.
La loro configurazione è minima: basta avviare il servizio e per ogni utente presente sul sistema (ed elencato in /etc/passwd) esiste la relativa casella postale in /var/spool/mail
[RHCT] Documentazione RedHat:
http://www.europe.redhat.com/documentation/rhl9/rhl-rg-it-9/ch-email.php3
Apache: principi di base |
Introduzione all'installazione, uso e configurazione di Apache |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2003-02-03 17:47:31
Su Unix, Apache gira generalmente come demone in esecuzione continua in background ("Standalone") gestendo le richieste dei client. E' anche possibile far invocare Apache dal super demone inetd modificando la voce ServerType nel file di configurazione di Apache, anche se questo è sconsigliato, soprattutto su server con traffico che non sia minimo e occasionale.
Se nel file di configurazione la listening port è la 80 (o qualsiasi altra porta sotto la 1024), è necessario avere i privilegi di root per poter avviare il servizio. Una volta che il server ha terminato una serie di operazioni preliminari come leggere il file di configurazione e aprire i file di log, esegue un numero configurabile di processi figli che si mettono in attesa di richieste.
Il processo httpd padre continua a girare con user root, ma i processi figlio, che gestiscono le richieste dei client, possono tranquillamente girare con user con privilegi inferiori.
AVVIO LANCIANDO DIRETTAMENTE HTTPD
La posizione del file di configurazione httpd.conf è settata quando httpd viene compilato, ma è possibile specificare una locazione alternativa per avviare Apache usando un altro file di configurazione con l'opzione. Per esempio:
[root@eberk diego}# /usr/local/apache/bin/httpd -f /home/diego/test_httpd.conf
Cosi facendo il server partirà con la configurazione contenuta in /home/diego/test_httpd.conf anziché quella originale presente in /etc/httpd/conf/httpd.conf
(Posizione preimpostata in molte distribuzioni Linux) o /usr/local/apache/conf/httpd.conf
(Posizione di default in un Apache compilato direttamente dai sorgenti).
AVVIO TRAMITE APACHECTL
Un'alternativa all'esecuzione diretta del binario httpd è lo script apachectl, che viene usato per controllare il demone httpd lanciando semplici comandi come apachectl start
e apachectl stop
.
Apachectl può essere usato anche per altre operazioni come verificare la correttezza del file di configurazione ed può essere utilizzato su ogni dialetto Unix, in quanto comando distribuito direttamente con i sorgenti di Apache.
AVVIO TRAMITE /ETC/INIT.D/HTTPD START
Su molti sistemi Unix e in tutte le distribuzioni Linux con Apache installato tramite relativo package, inoltre, si trova lo script init di gestione: /etc/rc.d/init.d/httpd start
(in alcuni casi basta anche/tec/init.d/httpd start
avvia il servizio.
Se durante lo startup tutto va bene, il prompt dei comandi tornerà ad essere utilizzabile. Questo significa che il server è su e che sta girando correttamente. Un test sicuro è utilizzare un browser, connettersi al server (http://indirizzo_server:80) e vedere se compare il contenuto della Document root.
Se Apache da errore in fase di start-up, si può visualizzarne la causa in console o nel file specificato nella direttiva ErrorLog di httpd.conf.
Uno degli errori più frequenti è "Unable to blind to port xxxx".
Questo errore puo essere causato da:
- Tentato start con listening ad una porta sotto la 1024 senza essere root.
- Tentato start con listening ad una porta gia utilizzata da un altra istanza di Apache o di un qualsiasi altro server.
Un altro errore comune è un "Syntax Error on line xxx" che indica la riga nel file di configurazione che contiene una direttiva errata. I motivi possono essere:
- Errore di sintassi nella scrittura della direttiva;
- Utilizzo di una direttiva che viene fornita da un modulo non caricato.
Se si desidera startare il server in fase di boot, bisogna aggiungere la "chiamata" ad httpd o ad apachectl nei file di startup del sistema (solitamente /etc/rc.d/rc.local
o nella struttura di init con un symlink tipo /etc/rc.d/rc.3/S70httpd
che punta a /etc/rc.d/init.d/httpd
).
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-02-07 19:08:04
Tutta la configurazione di Apache può essere fatta operando con un editor di testi sul file httpd.conf
che di trova in /usr/local/apache/conf/
oppure in /etc/httpd/conf/
o dove è stato specificato in fase di compilazione (provare un locate httpd.conf
per trovarlo).
Alternativamente o in parallelo alla modifica manuale del file di configurazione si possono usare diversi strumenti di configurazione grafici, sia dedicati come Comanche o Apache Configuration di RedHat, che parte di più ampi strumenti grafici di configurazione del sistema come Linuxconf o Webmin.
Ogni riga nel file di configurazione di Apache può contenere o un # per indicare che segue un commento che non viene processato o una direttiva con cui definire le varie configurazioni.
Alcune direttive (Limit, LimitExcpet, Directory, DirectoryMatch, Files, FilesMatch, Location, LocationMatch, VirtualHost) definiscono un container, individuano cioè una directory, un dato tipo di file o, genericamente, un insieme di file per i quali si possono definire specifiche direttive.
Per esempio, per indicare che l'accesso a tutti i file nella directory /home/www/private è possibile solo da certi indirizzi si scrive:
<Directory /home/www/private> # Direttiva container Directory, con la quale si definisce una directory e tutto quello che vi è contenuto
order deny,allow # All'interno della directory definita si limita l'accesso secondo l'ordine indicato
deny from all # Viene negato l'accesso a tutti gli indirizzo
allow from 10.0.0 # Viene permesso l'accesso agli indirizzi della rete 10.0.0.0/24
</Directory> # Il container Directory viene chiuso, le direttive che seguono non si applicano più a questa directory
Le direttive si dividono in diverse categorie, a seconda di dove possono essere usate nel file di configurazione:
- Server-Level - Possono essere usate solo nella parte della configurazione che riguarda l'intero server, quindi non all'interno di container.
- Globali e locali - Possono essere usare sia a livello dell'intero server, definendo i comportamenti di default, che valgono per tutti i documenti, che all'interno di container, per gestire casi specifici e sostituire quanto definito al server-level.
- Solo locali - Possono essere usate solo all'interno di un container, in quanto non avrebbero senso nella configurazione generale.
Per impostare una configurazione di base servono alcune informazioni, che l'amministratore deve fornire:
- Nome del server (può essere il nome effettivo della macchina o un nome arbitrario), si definisce con la direttiva ServerName
- La porta a cui mettere in listening il web server. Per il protocollo http la porta di default è l'80, ma volendo se ne può definire una alternativa. Si può inoltre definire a quale IP locale appoggiarsi (nel caso si stia usando una macchina con più IP). La direttiva raccomandata è Listen
. Nella versione 1.3 di Apache vengono usate anche le direttive BindAddress
e Port
che però sono deprecate.
- L'utente e il gruppo con cui gira il processo httpd. E' meglio che siano utenti comuni non privilegiati (di solito "nobody" o "apache"). Per definirli si usano le direttive User
e Group
- La directory che contiene i file HTML che fanno parte del sito che si vuole rendere pubblico con Apache. Si definisce con la direttiva DocumentRoot
. Notare che questa è diversa dalla direttiva ServerRoot
che definisce la directory di base di Apache, partendo dalla quale il programma cerca file di configurazione, log ecc.
- Se si usa un Apache con supporto dei moduli è probabile che solo il modulo di core mod_so sia effettivamente incluso nel binario httpd, per cui per poter funzionare Apache richiede il caricamento, tramite file di configurazione, degli altri moduli. Con Apache 2.0 basta la direttiva LoadModule
, con Apache 1.3 ci vuole ANCHE la direttiva AddModule
.
- Non è obbligatorio ma è prassi comune indicare l'indirizzo e-mail dell'amministratore del sistema, che può venir visualizzato in pagine di errore o altri casi. Lo si imposta con la direttiva ServerAdmin
.
Un esempio di un file di configurazione minimale, senza caricamento di moduli, è quindi:
ServerName pippo
Listen 80
User apache
Group apache
DocumentRoot /home/httpd/html
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-11-04 22:01:38
Come prevedibile la quantità di informazioni online su Apache è notevole e sufficiente a soddisfare la sete di conoscenza anche dei più insaziabili.
Il punto di riferimento principale è ovviamente la documentazione ufficiale, direttamente reperibile sul sito di Apache.
http://httpd.apache.org/docs/ - La documentazione ufficiale di Apache 1.3
http://httpd.apache.org/docs-2.0/ - La documentazione ufficiale di Apache 2.0
Ulteriore documentazione si può trovare su altri siti:
http://www.refcards.com/about/apache.html Apache RefCard. Una comoda reference essenziale e pratica.
http://www.onlamp.com/apache/ ONLAMP. La sezione su Apache di O'Reilly Network.
Esistono numerosi siti di informazione, news e discussione su Apache. Fra questi:
http://www.apacheweek.com/ - Apache Week. Una popolare newsletter, un sito, molte news.
http://apachetoday.com - Apache Today. News e reviews.
Fra i siti che parlano di progetti collaterali ad Apache indichiamo:
http://www.apache-tools.com/ Apache Tools. Un completo elenco di moduli, programmi e strumenti di configurazione, benchmark ecc.
http://www.apachetoolbox.com/ Apache Toolbox. Uno script che automatizza e semplifica la compilazione di Apache con svariati moduli.
Fra i forum e le community segnaliamo:
http://www.faqts.com/knowledge_base/index.phtml/fid/56/ FAQTs: Apache. Domande e risposte su Apache.
http://slashdot.org/index.pl?section=apache La sezione di Slashdot interamente dedicata ad Apache. Discussioni e approfondimenti della enorme community di Slashdot.
http://www.tek-tips.com/gthreadminder.cfm/lev2/3/lev3/22/pid/65 Affollato Apache forum su Tek Tips.
LINK: Apache Documentation Project - http://httpd.apache.org/docs-project/
Tipo Infobox: DESCRIPTION - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-11-05 10:56:44
Sono disponibili vari strumenti per monitorare e capire il funzionamento di Apache, il suo stato e quello che sta facendo.
Comandi Unix di Sistema
Vari comandi comuni sono utili per verificare cosa sta facendo Apache (come qualsiasi altra applicazione):
ps -adef | grep httpd
Visualizza se fra i processi in esecuzione c'è Apache (dovrebbero vedersi varie righe con httpd, una per ogni child in esecuzione, oltre al httpd padre di tutti i processi (l'unico eseguito come root).
netstat -natp
Visualizza tutte le connessioni Internet esistenti sul sistema, tra cui quelli in LISTENING sul sistema. Per ogni connessione si mostra anche il processo che la gestisce.
ldd /usr/sbin/httpd
o ldd /usr/local/apache/bin/httpd
(o ldd /path/httpd) Visualizza tutte le librerie dinamiche utilizzate da Apache. Utile per capirne le dependencies.
strace -p PID
(Dove il PID è quello di un child di Apache) Traccia le system call di un singolo processo.
strace apachectl start
Traccia le system call del processo che avvia Apache, utile per diagnosticare eventuali problemi all'avvio di Apache (verificare prima i log).
lsof | grep httpd
Visualizza tutti i file aperti da Apache. Utile per verificare, tra la'ltro, dove sono i log e quali moduli sono utilizzati.
Log di Apache
I log di Apache sono il primo posto dove cercare la soluzione di problemi (oltre che, ovviamente, analizzare il traffico Web sul sito). Di default sono in /usr/local/apache/logs
ma se si è installato Apache tramite un RPM li si potranno trovare in /var/log/httpd
o comunque dove specificato nel file di configurazione principale (verificare la direttiva ErrorLog
e definire la verbosità dei log con LogLevel
(per diagnostica mettere LogLevel debug
per il massimo della verbosità, in condizioni normali lasciare LogLevel warn
).
Server-status e Server-info
Apache fornisce due moduli che permettono all'amministratore di visualizzare informazioni utili in tempo reale.
Server-status mostra info sulle connessioni esistenti, l'uptime del server, il traffico generato, la CPU impegnata, la versione di Apache. E' possibile avere lo status sia in modalità normale che in modalità estesa, dove per ogni connessione si vedono maggiori informazioni. Di default, se abilitato, si trova su http://www.sito.com/server-status/
Server-info fornisce dettagliate informazioni sulla configurazione di Apache e sulle direttive relative ad ogni singolo modulo. Di default, se abilitato, si trova su http://www.sito.com/server-info/
Opzioni di invocazione
Anche le opzioni che possono essere passate ad Apache, eseguendo httpd
danno informazioni utili:
httpd -V
Mostra il numero di versione, e i parametri usati in fase di configurazione
httpd -l
Mostra i moduli compilati direttamente nel file httpd.
httpd -L
Mostra tutte le direttive che possono essere usate con i moduli direttamente compilati (vengono escluse tutte quelle che sono fornite dai moduli caricabili dinamicamente).
httpd -t
Esegue un test sulla configurazione di Apache e segnala eventuali errori di sintassi.
Variabili d'ambiente
Apache setta ed utilizza una serie di variabili d'ambiente che possono essere utilizzate da script CGI, PHP, Perl o trattate in sede di configurazione per gestire il comportamento del server sulla base dell'ambiente generale e delle singole connessioni. Per visualizzarle esistono vari metodi indiretti, per esempio uno è quello di utilizzare PHP all'interno di pagine HTML: <?php echo $REMOTE_ADDR ?>
visualizza l'IP del client remoto.
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2003-02-03 22:50:25
Il file httpd.conf è il file di configurazione principale di Apache. Ci sono veramente tante opzioni possibili da settare, ed è per questo che è importante fare spesso riferimento al manuale ufficiale, che offre una documentazione completa su Apache. Il seguente esempio di configurazione riporta una configurazione minima di Apache con commenti su ogni direttiva usata.
### Section 1: Global Environment
ServerType standalone
La direttiva ServerType specifica come Apache deve girare sul sistema. E' possibile farlo girare tramite il super daemon inetd (che invoca Apache quando riceve connessioni sulla porta 80) o come tramite server standalone, costantemente in esecuzione sul sistema. E' altamente raccomandabile questa seconda alternativa, per ridurre i tempi di latenza ed evitare i potenziali problemi che si possono avere invocando Apache da inetd.
ServerRoot "/etc/httpd"
Specifica la directory di base di Apache dove si trovano i file di configurazione e altri file importanti. Eventuali PATH di ulteriori directory, se non altrimenti specificato, sono relativi a questa directory.
PidFile /var/run/httpd.pid
Specifica dove viene scritto il PID di httpd quando si avvia. Questa opzione è richiesta solo quando Apache gira in standalone mode.
ResourceConfig /dev/null
Specifica la locazione del file srm.conf che Apache legge quando finisce di leggere il file di configurazione httpd.conf. Nelle versioni più recenti di Apache, viene tutto scritto in httpd.conf e non si usa più usare un file srm.conf separato. /dev/null, in questo caso indica che NON esiste un srm.conf separato.
AccessConfig /dev/null
L'opzione AccessConfig specifica la locazione del file access.conf, che Apache legge quando finisce di leggere il file di configurazione httpd.conf. Come sopra, impostando come argomento /dev/null non si specifica alcun file esterno per questa parte di configurazione (relativa ai permessi di accesso al web.
Timeout 300
Specifica il tempo di attesa massimo di Apache per le richieste (GET, POST, PUT). Su server a traffico normale si puo tranquillamente mantenere l'opzione di default, altrimenti può aver senso ridurla per liberare risorse più rapidamente.
KeepAlive On
L'opzione KeepAlive, se settata On, permette di usare, come da specifiche HTTP/1.1, la stessa connessione TCP per inviare più file. Per migliori performance è consigliato settarla On evitando che venga aperta una connessione TCP per ogni richiesta HTTP.
MaxKeepAliveRequests 100
Specifica il numero di richieste permesse per connessione (sempre che l'opzione KeepAlive venga settata On). Se questa opzione è settata a 0, una connessione rimane attiva e file continuano ad essere scambiati fino a quando non va in timeout.
KeepAliveTimeout 15
Specifica quanto tempo, in secondi, Apache deve attendere per una successiva richiesta prima di chiudere la connessione. Un valore di 15 secondi è molto buono (parlando sempre di performance di Apache).
MinSpareServers 16
Specifica il numero minimo di processi figli in attesa di ricevere una richiesta. Apache, fa uno spawn di nuovi figli, mano a mano che quelli esistenti vengono occupati da nuove richieste. Dal momento che l'operazione di spawning non è rapidissima, questa opzione è molto importante per quanto riquarda le performance di Apache. Per un server che deve gestire un numero medio alto di accessi, 16 è il valore piu usato.
MaxSpareServers 64
Specifica il numero massimo di processi figli in attesa di ricevere una richiesta, un valore alto permette ad Apache di rispondere più rapidamente a picchi di traffico, ma occupa maggiormente le risorse del sistema. Per un server che deve gestire un numero medio alto di accessi, 64 è il valore piu usato.
StartServers 16
Specifica il numero di processi figli che devono essere creati da Apache in start-up. Anche questo è un parametro importante per quanto riguarda le performance di Apache. Per un server che deve gestire un numero medio alto di accessi ha senso aumentare questo valore.
MaxClients 256
Specifica il numero massimo di richieste simultanee che Apache può supportare. Anche questo parametro è fondamentale per il discorso performance. Considerare che nella compilazione di default di Apache, questo parametro non può superare 256.
MaxRequestsPerChild 100000
Specifica il numero di richieste che un singolo processo figlio può gestire. Con 0 si indica un numero infinito, ma per evitare un potenziale degradamento del sistema è utile mettere un numero alto ma finito.
### Section 2: 'Main' server configuration
Port 80
Indica la porta TCP su cui Apache deve ascolare. 80 è la porta di default per un server http. Questa direttiva, insieme a BindAddress, che indica l'IP su cui ascoltare, è destinata ad essere soppiantata dalla più flessibile Listen
Listen *:80
Indica di ascoltare su tutti gli IP locali sulla porta 80. Si possono specificare anche singoli indirizzi e più righe con diversi IP e porte in Listen
User nobody
Lo user con cui Apache gira. E' importante creare un nuovo utente con i minimi permessi usati allo scopo di far girare il servizio. Notare che Apache avrà, nell'accesso al file system locale, i privilegi dell'utente qui specificato.
Group nobody
Il gruppo con cui Apache gira.
DirectoryIndex index.htm index.html index.php index.php3 default.html index.cgi
Specifica i nomi di file che Apache considera come home page. In altre parole, se viene fatta una GET che non specifica il nome di un file specifico ma solo la directory (quello che succede abitualmente, quando su un browser si indica un indirizzo tipo http://www.yahoo.com) Apache cerca, nell'ordine indicato, i file sopra citati e se non ne trova alcuni visualizza, se questo è permesso nel resto della configurazione, l'elenco dei file contenuti della directory
Include conf/virtual-domains.conf
Specifica la posizione di altri files che si possono includere insieme al file di configurazione httpd.conf. In questo caso è stato incluso il file virtual-domains.conf, contenuto nella directory /etc/httpd/conf.
HostnameLookups Off
Questa opzione, se settata off, specifica di disabilitare il DNS reverse lookup degli IP dei client in fase di logging. Per evitare tempi di latenza eccessivi, è consigliabile lasciare Off la risoluzione degli IP, che potrà essere fatta successivamente e autonomamente da strumenti di analisi dei log.
ServerAdmin [email protected]
L'indirizzo email di chi amministra il server. Può essere indicato in alcune pagine di errore
ServerName www.domain.com
Il nome del server web
DocumentRoot "/home/httpd/folder"
La directory dove sono contenuti i file html che costituiscono il sito offerto dal server
<Directory "/home/httpd/folder">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Si definisce un container Directory, al cui interno si impostano delle direttive limitate agli oggetti ivi contenuti
<Files .pl>
Options None
AllowOverride None
Order deny,allow
Deny from all
</Files>
Altro esempio di container. Qui si impedisce la lettura di tutti i file .pl
<IfModule mod_mime.c>
TypesConfig /etc/httpd/conf/mime.types
</IfModule>
Indica di caricare il file specificato con l'elenco dei MIME file type, se è presente il modulo mod_mime, in grado di gestirli.
DefaultType text/plain
Indica con quale MIME type il server web fornisce i suoi file
ErrorLog /var/log/httpd/error_log
LogLevel warn
La posizione del file di log per quanto riguarda gli errori, e il livello di debugging
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /var/log/httpd/access_log combined
Si definisce il formato di un file di log (per quanto riguarda le richieste HTTP), lo si chiama "combined" e, con la direttiva CustomLog si definisce dove scriverlo.
<IfModule mod_alias.c>
ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/"
<Directory "/home/httpd/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
</IfModule>
Se è presente il modulo mod_alias si definisce un alias per una directory che contiene script CGI e si impostano direttive specifiche per quella directory
ErrorDocument 500 "The server made a boo boo.
ErrorDocument 404 http://192.168.1.1/error.htm
ErrorDocument 403 "Access Forbidden -- Go away.
Definisce come reagire in caso di errore, a seconda del codice di errore. Si può visualizzare una scritta, aprire un file html locale o puntare ad un URL remoto
<IfModule mod_setenvif.c>
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
</IfModule>
Se è presente il modulo mod_setenvif, si impostano specifici header di risposta per richieste effettuati da specifici Browser
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2003-08-06 12:22:56
Fra i vari modi con cui è possibile installare Apache su distribuzioni RedHat based, quello più semplice è tramite pacchetti RPM.
Per farlo, innanzitutto bisogna scaricare il pacchetto apache-ver.arch.rpm appropriato per la propria distribuzione Linux, dove ver sta per versione e arch per architettura.
Una volta fatto questo andare dove si è scaricato il pacchetto e lanciare il comando (esempio per Apache 1.3):
[root@eberk diego]# rpm -ihv ./apache-1.3.9-4.i386.rpm
/etc/httpd/conf
/etc/httpd/conf/access.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/httpd/conf/srm.conf
/etc/httpd/logs
[...]
/home/httpd
/home/httpd/cgi-bin
/home/httpd/html
/home/httpd/html/index.html
[...]
/usr/sbin/httpd
/usr/sbin/logresolve
/usr/sbin/rotatelogs
/usr/sbin/suexec
[...]
Ora Apache è installato.
Attenzione, alcuni moduli per Apache non sono contenuti nell'RPM di installazione (per esempio mod_PHP, mod_PERL ecc...), e vanno installati tramite gli appositi RPM.
In genere su qualsiasi distribuzione è già inclusa, e installabile fin dall'inizio, una versione di Apache.
Per aggiornarla con una versione più recente basta il solito:
[root@eberk diego]# rpm -Uv ./apache-1.3.9-4.i386.rpm
Per gestire correttamete le dependencies, per esempio con un Apache con MOD_php con supporto MySQL e MOD_ssl seguire questo ordine: Apache, Mysql (pacchetto base + server + devel), PHP, MOD_php, php-mysql, OpenSSL, MOD_ssl.
Su RedHat, Apache 2.0 è stato introdotto di default dalla versione 8.0 (notare che il nome del pacchetto è httpd-versione.rpm e non più apache-versione.rpm). I pacchetti relativi sono:
httpd - Il server web Apache (2.0)
httpd-devel - Le librerie che permettono la compilazione di moduli addizionali (non serve se non si compilano a mano)
redhat-config-httpd - Un semplice tool di configurazione visuale (non serve se si edita a mano httpd.conf)
httpd-manual - le pagine del manuale di Apache
mod_ssl - Supporto delle criptazioni dei dati per https (richiede openssl)
mod_perl - Modulo Apache per il supporto Perl
mod_python - Modulo Apache per il supporto Python
php - Supporto PHP (come modulo Apache o standalone). Se servono moduli specifici per PHP questi vanno installati (es: php-mysql, php-imap, php-snmp...)
Notare che sui sistemi RedHat la DocumentRoot
, direcrtoty dove di default vanno inserite le pagine html di un sito), era /home/httpd/html
nelle versioni fino alla 6.2 ed è diventata /var/www/html
nelle versioni successive.
LINK: RPMFIND: Ricerca e il download di RPM - http://www.rpmfind.net
Samba: Principi di base |
Introduzione all'installazione, la configurazione e l'uso di Samba. |
Tipo Infobox: COMMANDS - Skill Level: 2- JUNIOR - Autore: lorenzo 'lorenz' urbinati - Ultimo Aggiornamento: 2003-05-31 21:34:20
Un server Samba si compone di due principali demoni:
smbd per i servizi di condivisione di file e stampanti.
nmbd per il servizio di risoluzione dei nomi NetBIOS e di assistenza al browsing delle risorse.
Entrambi questi demoni si appoggiano al file smb.conf per funzionare e hanno opzioni da riga di comando specialmente per effettuare test e debug dei rispettivi servizi.
Smbd e nmbd necessitano di essere avviati insieme per poter garantire un funzionamento corretto del server Samba. E' consigliabile infatti far gestire il loro avvio da uno script di avvio e le principali distribuzioni vengono già fornite di comodi script come /etc/init.d/samba
anche se la loro posizione varia tra le diverse distribuzioni.
In altri casi si può usare il super-demone di gestione dei servizi inetd o infine si possono avviare da riga di comando ma a patto di essere l'utente root.
smbd: Come detto questo demone è responsabile della gestione delle risorse condivise, siano esse dischi o stampanti, tra il server Samba e i suoi client. Fornisce i servizi di condivisione dei file e delle stampanti, di browsing ai client di una o più sotto-reti e di gestione di tutti i messaggi di notifica che client e server si scambiano. Infine si occupa di autenticare gli utenti e di controllare le risorse condivise.
Smbd rilegge il suo file di configurazione automaticamente ogni minuto. Si può forzare il server a rileggere il suo file di configurazione con un SIGHUP. Ricaricare il file comunque non influirà sui client già connessi i quali dovranno sconnettersi e riconnetersi perchè le modifiche abbiano effetto.
Il modo esatto di lanciarlo e con l'opzione -D
che lo porta ad avviarsi come demone. Questa è anche l'opzione di default.
Le sue opzioni a parte quella appena descritta sono finalizzate al debug e sono principalmente ad uso degli sviluppatori. Con -h
si può avere la lista di queste, per approfondirle fare riferimento alla pagina di man.
nmbd: Questo demone è in realtà un semplice name server che imita le funzionalità di un WINS o di un NetBIOS name server. Ascolta e cattura le richieste per il name server e risponde con le informazioni in suo possesso. Si occupa inoltre di mantenere una lista per il browse delle risorse di rete e partecipa alla scelta del browsing. Se attivo il server WINS nmbd tiene il database dei nomi e degli indirizzi in un file chiamato wins.dat
. Un demone nmbd può anche rispondere alle richieste del protocollo di browsing delle Risorse di Rete di Windows. Il browsing è una serie di protocolli di annuncio, annuncio di servizi o di directory condivise che fornisce una directory dinamica che contiene i server e i dischi e le stampanti presenti nella rete NetBIOS. Se nmbd è il master browser locale mantiene i databases di browsing nel file browse.dat
.
Anch'esso se lanciato con l'opzione -D
si comporta come un demone andando in background e ascoltando sulla sua porta. Il resto delle opzioni anche in questo caso serve principalmente per effettuare test particolari e verifiche per gli sviluppatori. Con l'opzione -h
se ne può avere un brief veloce.
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2004-06-04 10:57:16
Installazione step by step di samba attraverso i pacchetti RPM e la compilazione dei sorgenti.
TAR.GZ - COMPILAZIONE DEI SORGENTI:
- Download dei sorgenti
Si scarica il tar.gz di Samba dal sito ufficiale o uno dei suoi mirror:
root@SATURNO root]# wget ftp://it.samba.org/pub/samba/samba-latest.tar.bz2
--16:45:01-- ftp://it.samba.org/pub/samba/samba-latest.tar.bz2
=> `samba-latest.tar.bz2'
Resolving it.samba.org... done.
Connecting to it.samba.org[217.56.103.6]:21...
[...]
- Scompattazione sorgenti
[root@SATURNO root]# tar -jxvf samba-latest.tar.bz2
[..]
[root@SATURNO root]# cd samba-2.2.8/
[root@SATURNO samba-2.2.8]# ls -l
total 102
-rw-r--r-- 1 783 783 17982 May 4 1996 COPYING
Directory contenente documentazione di vario genere e in vari formati
drwxr-xr-x 10 783 783 1024 Feb 5 17:24 docs
Directory contenente esempi di file di configurazione oltre a tools o script per la gestione della configurazione di samba
drwxr-xr-x 16 783 783 1024 Mar 15 05:28 examples
-rw-r--r-- 1 783 783 4551 Apr 30 2002 Manifest
Directory contenente files di configurazione e relativi script per la creazione di package per vari OS e distribuzioni di Linux
drwxr-xr-x 15 783 783 1024 May 3 2002 packaging
Directory contenente sorgenti di un semplice monitoring della shared memory
drwxr-xr-x 2 783 783 1024 May 3 2002 pcp
-rw-r--r-- 1 783 783 0 Aug 21 1997 Read-Manifest-Now
-rw-r--r-- 1 783 783 8412 Feb 28 16:56 README
-rw-r--r-- 1 783 783 1894 Apr 14 2001 Roadmap
Directory contenente i sorgenti
drwxr-xr-x 33 783 783 1024 Mar 15 05:28 source
Directory contenente il tool swat per la configurazione di samba via web
drwxr-xr-x 5 783 783 1024 Mar 15 05:28 swat
Directory contenente, script, sorgenti e altro per eseguire alcuni test su samba
drwxr-xr-x 9 783 783 1024 Mar 15 05:28 testsuite
-rw-rw-r-- 1 783 783 59481 Mar 15 05:44 WHATSNEW.txt
-Compilazione sorgenti
La compilazione dei sorgenti avviene come nella maggior parte dei casi con il lancio dello script configure per il settaggio di alcuni parametri e il comando make per la compilazione e installazione dei sorgenti.
[root@SATURNO samba-2.2.8]# cd source/
Per richiamare l'elenco delle opzioni e la relativa spiegazione, lanciare il seguente comando:
[root@SATURNO source]#./configure --help
Di seguito sono riportate le opzioni con relativa spiegazione utilizzati per la creazione dell' RPM per la distribuzione redhat.
Imposta il prefisso del path di installazione
--prefix=%{prefix} \
Imposta la directory ove il sistema scrive tutte quelle informazioni come log, pidfile etc.
--localstatedir=/var \
Imposta la directory contenente tutti i file di configurazione
--with-configdir=/etc/samba \
Specifica la directory ove viene messo smbpasswd
--with-privatedir=/etc/samba \
Specifica la directory dove risiedono i code page files
--with-codepagedir=/etc/codepages \
Abilita l'uso dei path fhs-compliant
--with-fhs \
Abilita il supporto per quota
--with-quotas \
Include il supporto per MS Dfs
--with-msdfs \
Abilita il supporto per smbmount
--with-smbmount \
Abilità il supporto per l'uso di PAM password database
--with-pam \
Include anche il modulo smbpass
--with-pam_smbpass \
Abilita il supporto del logging via syslog
--with-syslog \
Include utmp accounting
--with-utmp \
Specifica dove vengono installati i file riguradanti a swat
--with-sambabook=%{prefix}/share/swat/using_samba \
--with-swatdir=%{prefix}/share/swat \
Abilita la compilazione delle librerie dinamiche del client
--with-libsmbclient
[root@SATURNO source]# ./configure --prefix=/usr \
--localstatedir=/var \
--with-configdir=/etc/samba \
--with-privatedir=/etc/samba \
--with-codepagedir=/etc/codepages \
--with-fhs \
--with-quotas \
--with-msdfs \
--with-smbmount \
--with-pam \
--with-pam_smbpass \
--with-syslog \
--with-utmp \
--with-sambabook=/usr/share/swat/using_samba \
--with-swatdir=/usr/share/swat
[...]
checking for poptGetContext in -lpopt... yes
checking whether to use included popt... no
checking configure summary... yes
updating cache ./config.cache
creating ./config.status
creating include/stamp-h
creating Makefile
creating script/findsmb
creating include/config.h
Compilazione dei sorgenti
[root@SATURNO source]# make
Using FLAGS = -O -Iinclude -I./include -I./ubiqx -I./smbwrapper -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -DLOGFILEBASE="/var/log/samba" -DCONFIGFILE="/etc/samba/smb.conf" -DLMHOSTSFILE="/etc/samba/lmhosts" -DSWATDIR="/usr/share/swat" -DSBINDIR="/usr/sbin" -DLOCKDIR="/var/cache/samba" -DCODEPAGEDIR="/etc/codepages" -DDRIVERFILE="/etc/samba/printers.def" -DBINDIR="/usr/bin" -DPIDDIR="/var/run/samba" -DLIBDIR="/usr/lib" -DHAVE_INCLUDES_H -DPASSWD_PROGRAM="/usr/bin/passwd" -DSMB_PASSWD_FILE="/etc/samba/smbpasswd" -DTDB_PASSWD_FILE="/etc/samba/smbpasswd.tdb"
[...]
Installazione
[root@SATURNO source]# make install
[...]
INSTALLAZIONE TRAMITE RPM
L'installazione completa di samba via rpm richiede più package scaricabili da repository come http://www.rpmfind.net oppure nel caso di Redhat ci si può appoggiare anche al suo repository di errata.
Supponiamo di aver scaricato i seguenti RPM:
Package principale contenente documentazione, manuali e binari per attivare il servizio.
samba-2.2.7-4.8.0.i386.rpm
Package contenente le utility e relativi manuali per il mounting delle share
samba-client-2.2.7-4.8.0.i386.rpm
Package contenente file di necessari sia al client che al server come l'utility smbpasswd o le code pages
samba-common-2.2.7-4.8.0.i386.rpm
Utility per la configurazione di samba via web
samba-swat-2.2.7-4.8.0.i386.rpm
Installazioe di tutti i vari rpm relativi a samba
[root@SATURNO root]# rpm -ihv samba-*.rpm
warning: samba-2.2.7-4.8.0.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:samba-common ########################################### [ 25%]
2:samba ########################################### [ 50%]
3:samba-client ########################################### [ 75%]
4:samba-swat ########################################### [100%]
Visualizzazione di ciò che i vari rpm hanno installato
[root@SATURNO root]# rpm -qil samba
[...]
File di configurazione per logrotate
/etc/logrotate.d/samba
File di configurazione per PAM
/etc/pam.d/samba
Script di gestione del servizio
/etc/rc.d/init.d/smb
File contenente la correlazione unix_name e smb_name
/etc/samba/smbusers
File contenente le opzioni passate ai vari demoni
/etc/sysconfig/samba
Uility per la creazione di file unicode per samba
/usr/bin/make_unicodemap
Script relativo alla gestione del file smbpasswd
/usr/bin/mksmbpasswd.sh
Script per la gestione degli utenti samba
/usr/bin/smbadduser
/usr/bin/smbcontrol
/usr/bin/smbstatus
/usr/bin/tdbbackup
Librerie e file header
/usr/include/libsmbclient.h
/usr/lib/libsmbclient.a
/usr/lib/samba/vfs
/usr/lib/samba/vfs/recycle.so
Binari relativi ai demoni
/usr/sbin/nmbd
/usr/sbin/smbd
Documnetazione
/usr/share/doc/samba-2.2.7
/usr/share/doc/samba-2.2.7/COPYING
/usr/share/doc/samba-2.2.7/LDAP
/usr/share/doc/samba-2.2.7/LDAP/README
/usr/share/doc/samba-2.2.7/LDAP/export_smbpasswd.pl
/usr/share/doc/samba-2.2.7/LDAP/import_smbpasswd.pl
/usr/share/doc/samba-2.2.7/LDAP/ldapchpasswd
/usr/share/doc/samba-2.2.7/LDAP/ldapsync.pl
[...]
Manuali
/usr/share/man/man1/make_unicodemap.1.gz
/usr/share/man/man1/smbcontrol.1.gz
/usr/share/man/man1/smbstatus.1.gz
/usr/share/man/man5/smbpasswd.5.gz
/usr/share/man/man7/samba.7.gz
/usr/share/man/man8/nmbd.8.gz
/usr/share/man/man8/pdbedit.8.gz
/usr/share/man/man8/smbd.8.gz
Directory di appoggio
/var/cache/samba
/var/log/samba
/var/run/samba
/var/spool/samba
[root@SATURNO root]# rpm -qil samba-common
[...]
Script di gestione del demone windbind
/etc/rc.d/init.d/winbind
File di configurazione
/etc/samba
/etc/samba/lmhosts
/etc/samba/smb.conf
Librerie dinamiche
/lib/libnss_winbind.so
/lib/libnss_winbind.so.2
/lib/libnss_wins.so
/lib/libnss_wins.so.2
/lib/security/pam_winbind.so
utility e binari di vario genere per l'amministrazione del servizio e degli utenti di samba
/usr/bin/make_printerdef
/usr/bin/make_smbcodepage
/usr/bin/smbpasswd
/usr/bin/testparm
/usr/bin/testprns
/usr/bin/wbinfo
/usr/sbin/winbindd
Manuali
/usr/share/man/man1/make_smbcodepage.1.gz
/usr/share/man/man1/testparm.1.gz
/usr/share/man/man1/testprns.1.gz
/usr/share/man/man1/wbinfo.1.gz
/usr/share/man/man5/lmhosts.5.gz
/usr/share/man/man5/smb.conf.5.gz
/usr/share/man/man8/smbpasswd.8.gz
/usr/share/man/man8/winbindd.8.gz
Directory contenente i codepages
/usr/share/samba
/usr/share/samba/codepages
[...]
[root@SATURNO root]# rpm -qil samba-client
[...]
links a /usr/bin/smbmount,binario per il mounting delle share
/sbin/mount.smb
/sbin/mount.smbfs
Utility per l'interrogazione del server smb e per il mountig delle share
/usr/bin/nmblookup
/usr/bin/rpcclient
/usr/bin/smbcacls
/usr/bin/smbclient
/usr/bin/smbmnt
/usr/bin/smbmount
/usr/bin/smbprint
/usr/bin/smbspool
/usr/bin/smbtar
/usr/bin/smbumount
Manuali
/usr/share/man/man1/nmblookup.1.gz
/usr/share/man/man1/rpcclient.1.gz
/usr/share/man/man1/smbcacls.1.gz
/usr/share/man/man1/smbclient.1.gz
/usr/share/man/man1/smbtar.1.gz
/usr/share/man/man8/smbmnt.8.gz
/usr/share/man/man8/smbmount.8.gz
/usr/share/man/man8/smbspool.8.gz
/usr/share/man/man8/smbumount.8.gz
Per la gestione del servizio ci si può appoggiare allo script: /etc/init.d/smb, specificando come parametro l'azione da eseguire, esempio start, stop o restart.
Opzioni disponibili:
- start : Avvia il servizio smb
- stop : killa i processi smb
- restart : Esegue in successione stop e start
- reload : esegue il reload del file di configurazione
- status : visualizza lo status dei demoni
- condrestart : Esegue il restart del servizio
Per richiamare le singole opzioni utilizzabili lanciare lo script senza argomenti
[root@SATURNO root]# /etc/init.d/smb
Usage: /etc/init.d/smb {start|stop|restart|reload|status|condrestart}
Esempi di avvio, restart e stop
[root@SATURNO root]# /etc/init.d/smb start
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
[root@SATURNO root]# /etc/init.d/smb restart
Shutting down SMB services: [ OK ]
Shutting down NMB services: [ OK ]
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
[root@SATURNO root]# /etc/init.d/smb stop
Shutting down SMB services: [ OK ]
Shutting down NMB services: [ OK ]
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: lorenzo 'lorenz' urbinati - Ultimo Aggiornamento: 2003-06-04 01:11:21
Se si ci si è appena avvicinati all'argomento e si desidera imparare a configurare un server Samba si avrà quasi certamente l'imbarazzo della scelta.
La documentazione non manca, a partire dal pacchetto dei sorgenti per arrivare a innumerevoli siti italiani e stranieri, passando per varie mailing-list.
Risorse locali
Innanzi tutto se si è scaricato il pacchetto contenente i sorgenti una volta scompattato si troveranno al suo interno alcune directory molto interessanti:
docs
e examples
Dentro docs troveremo tutta la documentazione necessaria, in html e in txt, molti howtos, le faq e un comodo pdf che raggruppa molti howtos: il Samba-HOWTO-Collection.pdf.
Di solito tutto questo materiale, se la propria distribuzione ha provveduto ad installare Samba si trova nella directory di sistema dedicata alla documentazione che generalmente si trova a partire dalla directory /usr
e se si è compilato dai sorgenti si troveranno questi file dove specificato dal configure
.
Come visto parlando dell'utility swat si può accedere a parecchia di questa documentazione nella sua pagina menu HOME.
Samba.org
Non dovesse bastare il primo posto dove cercare è dal sito di samba, www.samba.org.
Quando si accede alla pagina iniziale si trova una lista di mirror sparsi per il mondo. Attualmente ne esiste uno in Italia ma è per il download dei pacchetti, consiglio di usare un mirror vicino a noi per la visualizzazione del sito, tipo quello in Austria, di modo da non oberare di lavoro il server principale e anche per avere velocità di caricamento maggiori dovute alla vicinanza.
Molti how-to si trovano solo in questo sito, a volte perchè molto recenti, per questo consiglio vivamente a chiunque voglia cimentarsi seriamente con Samba di far diventare questo sito temporaneamente la sua homepage iniziale. Oltre alla documentazione sul sito si trovano tutte le mailing-lists ufficiali con le modalità di iscrizione e consultabili on-line.
Risorse online
A questo punto questo potrebbe essere sufficiente ma se si desidera approfondire basta andare su Google linux (www.google.com/linux) e cercare la parola chiave "samba" per trovare innumerevoli risorse. Anche se si cerca tra le pagine in italiano aggiungendo documentazione alle parole chiave si è proiettati in una spirale enorme di risorse.
Vediamo alcuni dei siti più interessanti per documentazione in italiano:
Esiste un libro, tradotto in italiano, che si chiama "Usare Samba" e comprabile in qualunque buona libreria convenzionata con la o'Reilly ma anche disponibile gratuitamente on-line all'url http://www.hopslibri.it/samba/root.html
Si tratta però della traduzione della prima edizione, tenerlo a mente perchè parecchie cose potrebbero e sono cambiate, resta comunque molto importante per comprendere meglio certi concetti che in lingua originale sono un po oscuri.
Un how-to che dà dei buoni spunti su cui lavorare si trova su
http://www.valtellinux.it/howto/samba/SMB-HOWTO.html
Un'altro how-to, tral'altro inserito nel mitico progetto "Appunti di informatica libera", è disponibile all'indirizzo
http://scuola.linux.it/docs/samba/samba.html
Un articolo che nello specifico tratta dell'implementazione di un samba server come Domain Controller in una rete windows:
http://mercury.chem.pitt.edu/~sasha/LinuxFocus/Italiano/March2002/article177.shtml
Per finire segnalo un simpatico sito che con un po di ironia offre alcune discussioni su problemi riscontrabili nella configurazione di vari servizi tra cui anche Samba raggiungibile su http://www.campana.vi.it/ottavio/linux/4pinguiniinpadella/4pinguiniinpadella.html
Mi sono fermato nella mia ricerca alla terza pagina di google ed ho omesso alcuni siti perchè trattavano argomenti basandosi su vecchie versioni di Samba o perchè fin troppo specifici. Come riscontrerete anche voi con un po di pazienza e delle ricerche mirate si possono trovare spunti e consigli utilissimi, raccomando di verificare sempre che il sito o l'how-to o il manuale trovati siano attuali prima di perdere i capelli chiedendosi perchè la tale opzione non funziona.
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2003-03-25 17:14:42
La configurazione di Samba (i demoni smbd e nmbd) viene gestita dal file smb.conf, un normale file di testo ASCII con queste caratteristiche di massima:
- I parametri di configurazione vengono forniti nella forma opzione = valore
- Il file viene diviso in più sezioni che definiscono una share (condivisione), oltre alla sezione generale [global]
. Ogni sezione si indica fra parentesi quadre: [printers]
- Le righe di commento sono precedute da asterisco (#) o punto e virgola (;)
- Righe di configurazione possono estendersi su più righe di smb.conf utilizzando una backslash (\) a fine riga
- Le opzioni e i valori sono case insensitive, ma se si indica un path nel file system questo è case sensitive
- Per separare una serie di valori possono essere usati sia virgole (,) che spazi vuoti ( )
- Possono essere utilizzate delle variabili, precedute dal simbolo percento (%) all'interno dei valori (es: path = /home/%u
)
- Si può includere a smb.conf un altro file di configurazione con l'opzione include (es: include = /etc/samba/smb.conf.%a
)
Le opzioni di configurazione possono essere di 2 tipi fondamentali:
- global, appaiono solo nella sezione [global] e definiscono i comportamente generali del server Samba
- share, appaiono all'interno di specifiche share e definiscono il comportamento riguardo alla specifica share. Se appaiono in [global] definiscono i comportamenti di default.
Qualsiasi opzione deve essere inclusa una una sezione. Esistono le seguenti sezioni speciali:
[global] Sempre presente, di solito ad inizio file, definisce le opzioni di default valide per tutte le condivisioni (possono essere sovrascritte da opzioni contrarie presenti nelle specifiche sezioni) e i parametri generali di configurazione del server.
[printers] E' una sezione speciale utilizzata per condividere l'accesso via rete a delle stampanti
[homes] E' una sezione speciale che coincide con la home directory di un utente autenticato. Di fatto è una condivisione generica con il nome dell'utente che accede a Samba.
Oltre a queste sezioni speciali ne possono esistere un numero arbitrario di altre, il nome di ogni sezione coincide con il nome della relativa condivisione, così come appare al client SMB.
Tipo Infobox: COMMANDS - Skill Level: 3- INTERMEDIATE - Autore: lorenzo 'lorenz' urbinati - Ultimo Aggiornamento: 2003-05-31 21:25:07
La suite Samba risulta essere veramente ricca di tools e script per la configurazione gestione e uso dei suoi servizi, uno di questi è molto utile per verificare prima di lanciare il demone che tutto sia a posto all'interno del file di configurazione.
testparm esegue un controllo sul file di configurazione specificato che per default, se si è installato dai sorgenti è dir_samba/lib/smb.conf
, dopo di che se è tutto ok stampa a monitor "Loaded services file OK." più qualche informazione ulteriore e dopo aver premuto [enter] mostra tutti i settaggi e come sono configurati.
La sua sintassi:
testparm [opzioni] path_file_conf [hostname indirizzo_IP]
Per l'ultimo campo quando si specifica l'hostname va sempre specificato anche l'indirizzo IP e in questo modo si effettua una verifica dei parametri host allow
e host deny
nel smb.conf per verificare che il dato host abbia accesso al server Samba.
Le opzioni sono:
-h
: Per avere in output un brief delle opzioni e della sintassi.
-L nome_server
: Per modificare il valore della macro %L nel valore nome_server.
-s
: Fa in modo che non faccia premere all'utente il tasto [enter] per avere il dump dei settaggi.
Aggiornamento di un sistema Linux |
I metodi e le tecniche per l'upgrade manuale e automatico di un sistema Linux |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2006-03-23 11:52:41
L'aggiornamento di un sistema operativo è un operazione fondamentale per la sua sicurezza, sia in ambito aziendale che domestico, sia su server che su desktop.
L'unica differenza sostanziale saranno i mezzi, le necessità e le modalità ma l'obbiettivo è comune: proteggere i propri sistemi aggiornandone il software regolarmente per eliminare possibili vie di intrusione tramite vulnerabilità note.
Esistono molteplici vie per eseguire l'update di sistemi Linux:
- utilizzare tool automatici o semi-automatici per il download e l'installazione di pacchetti rpm o deb,
- installare manualmente nuovi pacchetti binari per l'aggiornamento dei programmi installati,
- compilare i sorgenti con le patch del software da aggiornare.
L'uso di strumenti (semi)automatici, generalmente consigliabile quando si deve gestire un parco macchine considerevole, può basarsi su mirror distribuiti nel mondo o su un servizio, generalmente a pagamento, offerto dal produttore della distribuzione che si usa.
Ogni distribuzione Linux ha i propri metodi preferenziali per l'aggiornamento del software.
REDHAT
La versione commerciale di RedHat (Enterprise edition) si aggiorna tramite il RedHat Network (RHN) che permette di gestire e aggiornare facilmente anche via Web una moltitudine di sistemi. up2date
, utilizzabile sia via command line che tramite interfaccia grafica, è il programma utilizzato per aggiornarsi tramite RHN.
Fedora, la distribuzione free di RedHat, aperta alla community, si aggiorna tramite yum
(tool di aggiornamento derivato da Yellow Dog Linux) che si appoggia a svariti mirror worldwide.
Sono disponibili, ma non inclusi dei CD ufficiali, altri strumenti di aggiornamento come autorpm o la versione per rpm di apt.
DEBIAN
I pacchetti .dep di Debian vengono gestiti e aggiornati tramite il potente apt che appoggiandosi ad un elenco di mirror distribuiti permette di scaricare e aggiornare software sia del ramo "stable" che quello "testing". Con il comando apt-get
di fatto si gestisce ogni attività.
MANDRIVA
L'aggiornamento e la gestione dei pacchetti rpm avviene tramite l'interfaccia grafica rpmdrake o il tool testuale urpmi
. Entrambi si appoggiano a dei mirror configurabili e sono presenti di default sul sistema.
NOVELL - SUSE
Tramite il tool grafico di configurazione Yast2, strettamente integrato in ogni distribuzione Suse, è possibile gestire e automatizzare gli aggiornamenti dai mirror selezionati.
SLACKWARE
I pacchetti tgz di Slackware possono essere aggiornati dai mirror ufficiali tramite tool come swaret
e slapt-get
, che vanno scaricate a parte.
GENTOO
E' fortemente radicato nel sistema di gestione dei portage di Gentoo l'aggiornamento (tramite scaricamento dei sorgenti e ricompilazione automatica degli stessi) e l'installazione del software. Il comando emerge
provvede a tutto.
Patching dei Sorgenti
Tramite utility come patch
o diff
, o semplicemente ricompilando i sorgenti presenti nel tar.gz (./configure ; make ; make install
), è possibile applicare o creare patch (file contenenti modifiche da apportare ai file originari) al software installato sul sistema senza l'utilizzo di pacchetti. Questa operazione viene eseguita principalmente quando si lavora direttamente dai sorgenti, ricompilandoli una volta applicata la patch e può applicarsi a qualsiasi distribuzione.
Non essendo legata ad uno specifico sistema di packaging, va fatta manualmente.
(F)AQ: configurare yum -
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2003-05-05 23:08:20
RedHat Network è nata per gestire con più facilità gli aggiornamenti software di uno o più sistemi RedHat, anche di vecchia data.
La sua prima comparsa risale nella distribuzione RedHat 6.0, tramite l'utility up2date.
Attualmente oltre all'utility testuale up2date si ha disposizione una GUI (interfaccia grafica) e un demone (RHNSD) che si occupa di gestire in via del tutto automatica i check periodici per gli upgrade.
Il principio su cui si basa RHN è molto semplice, di fatto RedHat mette a disposizione dei repository da cui poter scaricare gli aggiornamenti tramite un client specifico, up2date.
Questo client si occupa di scaricare gli aggiornamenti in modo "intelligente", ovvero facendo ricerche incrociate per downlodare solo i RPM necessari.
Da sottolineare che lo scambio dei dati fra client e server RHN viene effettuato tramite il protocollo SSL e che sui pacchetti scaricati vengono fatti controlli di integrità attraverso il checksum GPG per evitare spiacevoli problemi di intercettazione dati e malformazione dei pacchetti.
Inoltre l'utility è estremamente flessibile poichè da la possibilità al sistem administrator di configurare molteplici opzioni, come ad esempio la possibilità di creare liste di rpm che non dovranno mai essere aggiornati oppure la creazione di più utenti per la gestione dei singoli canali (Es RedHat 8.0 i386 e RedHat 6.2 sparc sono due canali diversi) con permessi differenti, oppure decidere semplicemente di downlodare e non installere gli upgrade.
Esistono anche soluzioni per ottimizzare e velocizzare tutte le procedure di automatizzazione dell'upgrade di più sistemi come:
RHN proxy
RHN proxy, come si può intendere dal nome stesso è un sistema che permette di usufruire del servizio RHN tramite un proxy, il quale avrà il compito di scaricare e mettere in cache tutti gli aggiornamenti necessari per i sistemi della propria network. Il vantaggio risiede nella riduzione del traffico (Es. l'aggiornamento del RPM del kernel viene scaricato una volta, salvato sul proxy ma utilizzato da tutti i sistemi che lo richiedono) oltre alla possibilità di propagare rpm personalizzati o che non sono stati rilasciati ufficialmente dallo staff di RedHat.
RHN Satellite
RHN Satellite, oltre a tutti i vantaggi di RHN Proxy, permette di avere nella propria network un vero e proprio server RHN con tutti i vantaggi del caso.
Per usufruire di questa possibilità vengono richiesti sforzi maggiori per quanto riguarda i requisiti di sistema (ES: Installazione di Oracle e di RedHat Advanced Server).
Anche in questo caso si ha la possibilità di configurare nei minimi dettagli tutte le singole opzioni oltre che utilizzare questo sistema anche come server kickstart per effettuare installazioni personalizzate direttamente via rete.
Questa soluzione risulta essere vantaggiosa solo in caso di reti aziendali molto grosse, nell'ordine di 1000 host e più.
LINK: RHN HomePage - http://rhn.redhat.com/
LINK: RHN Satellite - http://www.redhat.com/support/techsupport/production/RHN_satellite_defs.html
LINK: RHN proxy - http://www.redhat.com/support/techsupport/production/RHN_proxy_defs.html
Tipo Infobox: COMMANDS - Skill Level: 3- INTERMEDIATE - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2003-04-19 18:45:02
up2date è l'utility testuale che permette di usufruire del servizio RedHat Network per aggiornare gli RPM del sistema.
up2date [opzioni] [nome RPM]
up2date-nox [opzioni] [nome RPM]
up2date-config [opzioni] [nome RPM]
Opzioni:
--configure
Abilita la modalità configurazione, attraverso un menu in shell. (update-config)
-d, --download
Esegue il download dei RPM ma non li installa.
-f, --force
Forza l'installazione dei RPM.
-i, --install
Installa tutti gli RPM scaricati.
-k, --packagedir
Specifica la direcory che funge da repository di RPM, per evitare di scaricare più volte lo stesso package.
--nosig
Evita il check con gpg dei singoli rpm.
--tmpdir=directory
Specifica la directory temporanea. Default /var/spool/up2date.
--justdb
Non installa gli RPM sul sistema, ma li aggiunge nel db di RPM.
--dbpath=dir
Specifica il path del db di RPM.
-l, --list
Mostra l'elenco dei vari RPM disponibili.
--showall
Mostra l'elenco di tutti gli RPM scaricabili.
--undo
Esegue l'undo dell'ultimo update.
-u, --update
Esegue l'update di tutti i RPM disponibili.
--register
Registra il server al servizio RHN.
--show-channels
Visualizza i canali disponibili.
Paths utili (RedHat):
/var/spool/up2date
- Directory in cui vengono scaricati gli rpm.
/etc/sysconfig/rhn/up2date
- Il file di configurazione principale.
/etc/sysconfig/rhn/up2date-uuid
- Il codice unico che identifica il proprio sistema su RHN
Tipo Infobox: DESCRIPTION - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-04-26 16:49:38
La procedura per la creazione di un repository di RPM (usando i CD ufficiali e un mirror degli update) è simile a quella utilizzabile per un repository di Fedora2.
Prevede diverse fasi:
1- Installazione del software necessario per creare un repository (createrepo) ed esportarlo via Web (apache)
2- Creazione di uno script che esegua il mirror degli rpm da un sito ufficiale su una directory locale e che provveda a ricreare, ogni volta, gli indici dei pacchetti presente nel repository (repodata);
3- Mount in loopback sul sistema delle iso dei CD ufficiali e creazione, una tantum, dei repodata
4- Configurazione di apache per esportare tutto via web
5 (Sui Client) - Configurazione di yum per scaricare i pacchetti dal proprio repositoy locale.
1 - Installazione software
Per creare un proprio repository essenzialmente basta il pacchetto createrepo, per condivederlo via web basta Apache e per usare lo script sotto riportato per sincronizzare il proprio sistema con un mirror ufficiale, è necessario rsync:
yum install createrepo
yum install apache
yum install rsync
E' probabile che sul proprio sistema siano già installati sia Apache che Rsync.
2 - Script di sincronizzazione e creazione repository
Il seguente script scarica via rete, dall'url definito in REMOTE_UPDATES i pacchetti di tipo rpm (sono esclusi pacchetti di sorgenti, di debug o per sistemi non i386, per evitare tempi di download eccessivi) e li copia della directory locale definita in LOCAL.
Dopo il download (eseguito tramite rsync) viene eseguito in comando createrepo passandogli come argomento la directory in cui si trova la directory packages contenenti gli rpm. Allo stesso livello di questa directory viene creata la directory repodata con tutti i metadati necessari a yum.
Notare che rispetto a Fedora 2, qui c'è una sostanziale differenza: i metadati vengono creati con l'utility createrepo (più veloce) invece dell'ormai superato yum-arch.
Notare altresì che questo script, oltre a scaricare gli update, fa anche il mirror di due interessanti repository con RPM aggiuntivi (extra e livna).
#!/bin/sh
#### FEDORA 3 ######
## DEFINE LOCAL DIRECTORY
LOCAL=/distro/fedora3/
## DEFINE OFFICIAL FEDORA UPDATES MIRROR
REMOTE_UPDATES=rsync://ftp.join.uni-muenster.de/fedora-linux-core
## DEFINE FEDORA.US EXTRAS MIRROR
REMOTE_EXTRA=rsync://mirrors.kernel.org/fedora.us/fedora
# REMOTE_EXTRA=rsync://ftp-stud.fht-esslingen.de/fedora
# REMOTE_EXTRA=rsync://sunsite.mff.cuni.cz/fedora.us
## DEFINE LIVNA MIRROR
REMOTE_LIVNA=rsync://rpm.livna.org/rlo/fedora
# Fedora 3 Updates (RPM i386)
/usr/bin/rsync --ignore-existing -v $REMOTE_UPDATES/updates/3/i386/*.rpm $LOCAL/updates/packages/
/usr/bin/createrepo $LOCAL/updates
## Optional extra RPM packages repositories
## Fedora 3 Extras
#/usr/bin/rsync --ignore-existing -av $REMOTE_EXTRA/fedora/3/i386/RPMS.extras/*.rpm $LOCAL/extras/packages/
#/usr/bin/createrepo $LOCAL/extras
## Fedora 3 Livna
#/usr/bin/rsync --ignore-existing -v $REMOTE_LIVNA/3/i386/RPMS.stable/*.rpm $LOCAL/livna/packages/
#/usr/bin/createrepo $LOCAL/livna
3- Creazione repository per i pacchetti dei CD
Per quanto riguarda il contenuto dei CD ufficiali di Fedora, uno dei metodi più rapidi ed efficaci è di montare in loop le rispettive iso e creare gli indici (visto che i pacchetti sono sempre gli stessi, i repodata vengono generati una volta soltanto.
Nel nostro esempio abbiamo le iso nella directory /distro/iso e vogliamo montarle nelle directory /distro/fedora3/cd/disc1, disc2 ecc.
Creazione delle directory su cui montare ed "esplodere" il contenuto delle iso.
E' molto importante chiamare le directory in questo modo (disc1, disc2, disc3 e disc4) per poter gestire anche installazioni centralizzate via rete:
mkdir -p /distro/fedora3/cd/disc1
mkdir -p /distro/fedora3/cd/disc2
mkdir -p /distro/fedora3/cd/disc3
mkdir -p /distro/fedora3/cd/disc4
Mount in loop delle iso (che vanno ovviamente copiate precedentemente in /distro/iso/ o directory analoga):
mount -t auto -o loop /distro/iso/FC3-i386-disc1.iso /distro/fedora3/cd/disc1
mount -t auto -o loop /distro/iso/FC3-i386-disc2.iso /distro/fedora3/cd/disc2
mount -t auto -o loop /distro/iso/FC3-i386-disc3.iso /distro/fedora3/cd/disc3
mount -t auto -o loop /distro/iso/FC3-i386-disc4.iso /distro/fedora3/cd/disc4
Creazione del repository:
createrepo /distro/fedora3/cd/
Questo comando crea la directory /distro/fedora3/main/repodata/
con tutti i metadati relativi ai pacchetti contenuti nei CD (nelle directory incluse in main).
4- Configurazione di Apache
Esportare via web i pacchetti rpm e i metadati è necessario sia per eventuali installazioni via rete che per gli aggiornamenti tramite yum dei client.
Fermo restando che nomi delle directory, path e indirizzi possono essere variati secondo i propri sistemi possiamo configurare in modo semplice Apache creando un file di configurazione, chiamato, per esempio, /etc/httpd/conf.d/yumrepository.conf
con simili contenuti (accesso da qualsiasi IP e possibilità di browsing delle directory):
Alias distro /distro
Options + Indexes
AllowOverride None
Order allow,deny
Allow from all
In questo modo, ipotizzando che il nostro server abbia IP 10.42.42.1, all'URL http://10.42.42.1/distro/ troveremo i contenuti della directory /distro locale, in cui esiste una sottodirectory iso, con le iso dei CD, e la sottodirectory fedora3 con i vari pacchetti e i relativi metadati.
5- Configurazione dei client
A questo punto la configurazione del server centrale con le funzioni di repository è completa. Possiamo procedere alla configurazione dei client, cioè dei sistemi (desktop o server che siano) che useranno questo repository locale (accessibili a velocità da LAN) per tutte le operazioni di installazione e aggiornamento dei pacchetti RPM.
Su ogni host su cui si è installato Fedora 3 (o in genere ogni sistema RedHat o basato su RPM) è opportuno importare le chiavi pubbliche GPG con cui sono stati firmati i pacchetti ufficiali. Questo permette di forzare l'aggiornamento e l'installazione solo dei pacchetti di cui la fonte è certa e validata.
Per farlo, su Fedora3, scrivere:
rpm --import /usr/share/doc/fedora-release-3/RPM-GPG-KEY
(questa è la chiave GPG con cui sono firmati tutti i pacchetti degli aggiornamenti) e:
rpm --import /usr/share/doc/fedora-release-3/RPM-GPG-KEY-fedora
(la chiave con cui sono firmati i pacchetti di base presenti nei CD ufficiali).
Notare che questa attività va fatta anche su un sistema Fedora che si vuole aggiornare normalmente via Internet, senza usare un repository locale, in quanto, di default, nessuna chiave GPG è importata e viene automaticamente impostato l'obbligo di fare un check della presenza della firma GPG (opzione gpgcheck=1
allinterno del file di configurazione /etc/yum.conf
e dei singoli file di configurazione dei repository)
Il passo successivo, e l'ultimo per avere l'infrastruttura di aggiornamento centralizzata, è quello di modificare gli URL da cui il sistema preleva i suoi rpm.
Modificare il file /etc/yum.repos.d/fedora.repo
(relativo al repository base, con gli rpm presenti nei cd ufficiali) in qualcosa tipo:
[base]
name=Fedora Core $releasever - $basearch - Base
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/os/
# mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-$releasever
baseurl=http://10.42.42.1/distro/fedora3/cd/
enabled=1
gpgcheck=1
In pratica si sono solamente commentate le righe esistenti (meglio commentarle che cancellarle, potrebbero essere utili in caso di problemi con il repository locale) e si è aggiunta la righa che punta al proprio server (ovviamente l'IP 10.42.42.1 e il path possono cambiare).
Analogamente, per il file /etc/yum.repos.d/fedora-updates.repo
(relativo agli aggiornamenti ufficiali) scrivere:
[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/$releasever/$basearch/
#mirrorlist=http://fedora.redhat.com/download/mirrors/updates-released-fc$releasever
baseurl=http://10.42.42.1/distro/fedora3/updates/
enabled=1
gpgcheck=1
Gestione repository aggiuntivi
Oltre ai repository ufficiali (base e updates) è possibile aggiungere al proprio sistema uno o più dei molteplici repository di pacchetti rpm per software aggiuntivo, che estendono considerevolmente la facilità di installazione di pacchetti interessanti o utili che non sono presenti nel CD ufficiale.
Nello script sopra riportato sono presenti, commentate, delle righe per eseguire il mirror e la creazione dei metadati, per i repository Extras (pacchetti RPM extra, semi-ufficiali, gestiti dalla community e ospitati da RedHat) e Livna (altri pacchetti, basati e con dipendenze da quelli Extra, particolarmente interessanti).
Per includere anche questi repository, oltre a scommentare le righe dello script di mirror e a creare le directory utilizzate sul server, sui client vanno creati file come: /etc/yum.repos.d/extras.repo
contentente:
[extras]
name=Fedora Core $releasever - $basearch - Extra
baseurl=http://10.42.42.1/distro/fedora3/extras/
enabled=1
gpgcheck=1
E il file /etc/yum.repos.d/livna.repo
con:
[livna]
name=Fedora Core $releasever - $basearch - Livna
baseurl=http://10.42.42.1/distro/fedora3/livna/
enabled=1
gpgcheck=1
Ricordarsi che anche per questi due repository vanno importate le chiavi GPG:
rpm --import http://download.fedora.redhat.com/pub/fedora/linux/extras/RPM-GPG-KEY-Fedora-Extras
rpm --import http://rpm.livna.org/RPM-LIVNA-GPG-KEY-i386
Tipo Infobox: COMMANDS - Skill Level: 4- ADVANCED - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2003-03-14 22:30:25
Utility di APT per la gestione della cache di supporto.
apt-cache [opzioni] comando
apt-cache [opzioni] add file1 [file2 ...]
apt-cache [opzioni] showpkg pkg1 [pkg2 ...]
apt-cache [opzioni] showsrc pkg1 [pkg2 ...]
Comandi:
add
Aggiunge un pacchetto alla cache
showpkg
Visualizza informazioni generali di un singolo pacchetto (versione,dipendenze etc..)
showsrc
Visualizza i sources record (descrizione, mantainer del package etc.. )
stats
Visualizza alcune statistiche
dump
Mostra il contenuto della cache
search
Abilita la ricerca di un package per il nome
show
Mostra tutto il contenuto di un package
depends
Visualizza le dipendenze di un package
pkgnames
Visualizza l'elenco di tutti i package scaricabili
Opzioni:
-p=?
Specifica il file per salvare la cache dei package.
-s=?
Specifica il file per salvare la source cache.
-q
Abilita il quiet mode.
-c=?
Specifica quale file di configurazione utilizzare.
-o=?
Permette di settare un opzione.
Tipo Infobox: TIPS - Skill Level: 4- ADVANCED - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2005-05-06 11:53:22
I pacchetti rpm che venongo distribuiti da chi produce una distribuzione o da chi gestisce repository alternativi, sono quasi sermpre "firmati" con una chiave GPG che certifica l'autore del pacchetto, assicurandone la fonte.
E' bene, al termine di una installazione Linux, importare le chiavi pubbliche (rpm --import
) dei packager che forniscono gli aggiornamenti o i pacchetti che si intendono utilizzare. Questa operazione potrebbe rendersi indispensabile quando si utilizzano tool di aggiornamento automatici come yum o autorpm se sono configurati per eseguire il gpgcheck dei pacchetti da aggiornare.
Se si prova ad installare un pacchetto creato da un packager di cui non si è importata la chiave GPG pubblica si ottiene un output di questo genere:
[root@zoe root]# rpm -Uhv httpd-2.0.40-21.3.i386.rpm
warning: httpd-2.0.40-21.3.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:httpd ########################################### [100%]
Le chiavi GPG pubbliche sono comunemente rintracciabili nella directory principale del primo CD di installazione o in /usr/share/doc/, ad esempio su Fedora in /usr/share/doc/fedora-release-XX/RPM-GPG-KEY:
[root@zoe root]# rpm --import /usr/share/doc/fedora-release-2/RPM-GPG-KEY
[root@zoe root]# rpm -Uhv httpd-manual-2.0.40-21.3.i386.rpm
Preparing... ########################################### [100%]
1:httpd-manual ########################################### [100%]
Tipo Infobox: COMMANDS - Skill Level: 4- ADVANCED - Autore: Giorgio 'neo' Colombo - Ultimo Aggiornamento: 2003-03-14 22:34:23
Utility per la gestione dei package di un sistema tramite command line.
apt-get [opzioni] comando
apt-get [options] install|remove pkg1 [pkg2 ...]
apt-get [options] source pkg1 [pkg2 ...]
Comandi:
update
Scarica la nuova package list
upgrade
Esegue l'upgrade dei package
install
Installa un nuovo pacchetto
remove
Rimuove un pacchetto
source
Scarica i sorgenti del pacchetto specificato
build-dep
Configura le build dependency
clean
Cancella tutti i vecchi file
autoclean
- Cancella i vecchi file scaricati e archiviti
check
- Verifica che tutte le dependency siano presenti
Opzioni:
-qq
Abilita il quiet mode, visualizza solo gli errori (utile in script schedulati)
-d
I package vengono solo scaricati e non installati
-y
Risponde Yes in modo automatico a tutte le domande presentate (utile in script schedulati)
-D
Abilita la rimozione di un package con tutte le sue dipendenze
-c=?
Specifica la lettura di un file do configurazione
-o=?
Permette di settare alcune opzioni specifiche
Tool grafici per l'amministrazione del sistema |
Le alternative grafiche alla command line per la gestione e configurazione di sistemi Linux / Unix. Webmin e altri tool grafici. |
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2006-03-23 11:55:26
Spiegare cosa fa un sistemista non è sempre ovvio.
Definire quali sono i suoi compiti è quantomeno pretenzioso.
Inquadrare gli skill di cui ha bisogno è limitativo, visto che di fatto, in molte realtà, un sistemista deve poter gestire e configurare hardware e software eterogenei che richiedono conoscenze ed esperienza disparate.
Le attività sistemistiche su un server con qualsiasi sistema operativo variano a seconda delle funzioni della macchina e del contesto lavorativo.
Generalmente il sistemista si dovrebbe preoccupare di:
1- Partecipare a riunioni e fornire la propria opinione sulla definizione dell'infrastruttura informatica e la scelta e il dimensionamento dell'hardware da utilizzare;
2- Installare le macchine;
3- Eseguire le procedure di post-installazione standard (aggiornamento software, rimozione servizi inutili, hardening del sistema, installazione di script e procedure custom);
4- Installare, configurare e testare i servizi richiesti per la macchina;
5- Monitorare performance, sicurezza e funzionalità del sistema;
6- Assistere e assecondare le richieste dirette o indirette degli utenti del sistema (sviluppatori e utenti dei servizi);
7- Eseguire backup e ripristino dei dati;
8- Automatizzare varie procedure nel sistema;
8- Documentare approfonditamente il lavoro svolto.
Troppo spesso il sistemista:
1- Non viene interpellato per una consulenza sulle tecniche più adeguate per le esigenze richieste;
2- Racka, cabla, se necessario smonta e rimonta, e installa le macchine;
3- Non ha una procedura standard di post installazione a cui attenersi;
4- Installa e configura i servizi necessari per la macchina, non sempre li testa a dovere;
5- Non controlla quasi mai i log di sistema, non implementa procedure di controllo;
6- Asseconda gli utenti ma li odia;
7- A volte prevede il backup dei dati, raramente esegue test di recupero;
8- Ripete spesso i soliti comandi;
9- La migliore documentazione la mantiene in testa, il resto in qualche file sul proprio computer.
Generalmente il tutto si spiega e si tende a giustificare con la cronica mancanza di tempo, spesso basterebbe un po' di lucidità progettuale e lungimiranza per riuscire ad ottenere tutti i risultati e alla lunga risparmiare tempo.
- La documentazione è fondamentale: permette di mantenere memoria storica del funzionamento dei sistemi e mette in grado il sistemista di delegare a colleghi meno esperti o appena arrivati di svolgere correttamente il lavoro che dovrebbe svolgere da solo.
- La partecipazione alle decisioni tecniche va richiesta con la giusta insistenza. E se ci ritrova a dover eseguire lavori, imposti dall'altro e tecnicamente discutibili, è doveroso quantomeno esprimere il proprio dissenso e suggerire le alternative più adeguate.
- Nonostante il knowledge generalmente vasto e variegato che spesso un sistemista deve avere, il suo compito di fatto è oscuro ai molti e a volte considerato di importanza trascurabile. Di solito ci si accorge del contrario quando un sistema in produzione va down e qualcuno deve farlo tornare a a funzionare.
- L'utente che usa i servizi della macchina o lo sviluppatore che riempe i contenuti di un sito web, per quanto generalmente poco sensibili alle esigenze e condizioni del sistemista, NON può e NON deve essere considerato un nemico. Di fatto è il motivo per cui il sistemista lavora e, in ogni caso, non ce se ne può disfare. L'unico modo per conviverci al meglio è educarlo all'uso del sistema e capire cosa gli serve per ridurre problemi e tempi di implementazione.
- Per quanto possibile è sempre consigliabile mantenere hardware e software omogenei: hardware dello stesso fornitore e non eterogeneo riduce complicazioni e velcoizza la sostituzione di pezzi di ricambio. Sistemi allineati (stesso OS, stessa distribuzione, stessa versione) rendono più facile, comoda e rapida l'attività sistemistica: gli aggiornamenti di software e kernel possono essere più rapidi e viene ottimizzato il tempo per seguire le problematiche di sicurezza di un sistema operativo.
SOURCE: Linux Corso Base - Coresis - http://www.coresis.com/linux/corsobase/
SOURCE: La Vera Storia di Linux Torwalds - Articolo su Apogeo OpenPress - http://www.apogeonline.com/openpress/articoli/art_9.html
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2004-05-23 16:15:32
Webmin e' un semplice tool web-based che permette, attraverso un interfaccia molto user-friendly, di poter amministrare praticamente l'intero sistema. E' anche un ottimo strumento "didattico", in quanto permette di verificare la sintassi di file di configurazione e le funzionalità di servizi e programmi vari, editandoli tramite una intuitiva interfaccia grafica.
E' composto da un server web (che di default lavora sulla porta 10000) e da numerosi CGI scritti in Perl che agiscono direttamente su file di sistema come /etc/inetd.conf e /etc/passwd.
Per poter utilizzare webmin, bisogna innanzi tutto scaricarlo dal sito ufficiale (disponibile sia il .tar.gz che l'RPM), dopodiche', tramite un piccolo script, eseguire l'installazione.
Durante l'installazione verranno chieste svariate cose (in linea di massima, a parte user name, le soluzioni di default vanno piu' che bene) tra cui file di configurazione, file di log, path del binario di perl, porta per il server web, utente e password.
Attenzione: se possedete una versione di webmin compresa tra la 0.91 e la 0.960, affrettatevi a scaricarne una piu' aggiornata, in quanto quelle versioni presentano un grave buco che spalanca le porte del vostro sistema ai cracker.
La falla riguarda il modo in cui comunicano il processo padre ed il processo figlio di webmin.
Sfruttando questo l'aggressore, da remoto, puo' ingannare il programma utilizzando il sessionID di un qualsiasi utente gia' loggato nel sistema, e poter cosi' eseguire ogni tipo di azione con i privilegi di root. Per fare questo si deve essere a conoscenza di almeno un nome utente valido, cosa non molto difficile, visto e considerato che di default webmin assegna il nome admin.
Webmin puo' essere compilato tranquillamente su una grande varieta' di sistemi operativi, da Linux alle piu disparate versioni di Unix, compreso il mac OS X.
La sua natura modulare ha permesso la creazione di innumerevoli plug-in in grado di gestire e configurare diversi servizi.
LINK: Sito ufficiale di Webmin - http://www.webmin.com
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Diego 'Eberk' Carobbio - Ultimo Aggiornamento: 2002-10-13 20:23:10
Linuxconf e' un tool che permette, tramite 3 interfacce diverse, di amministrare il proprio sistema Linux in maniera abbastanza semplice ed intuitiva.
E' facilmente installabile via rpm ( rpm -i linuxconf-ver-arch.rpm
)
Vi sono 3 interfacce per linuxconf: testuale, web e grafica.
La prima e' eseguibile da shell digitando linuxconf
(o digitando il path completo /sbin/linuxconf
) ed e' composta da menu e sottomenu a tendina con tanto di help per ogni singola voce.
La seconda e' eseguibile da un qualsiasi browser e lavora sulla porta 98 ( http://localhost:98
).
La terza (disponibile dalla versione 1.9 release 26-12) gira in ambiente grafico, ed ha un impostazione molto simile alla modalita' testuale, anche se e' un po piu' user-friendly di quest'ultima.
Tramite Linuxconf varie operazioni di amministrazione del sistema e di specifici servizi sono presentate con una intuibile interfaccia. In alcuni casi tende a riscrivere i file di configurazione secondo dei propri canoni e questo puo' creare confusione o problemi a chi lo usa.
Tipo Infobox: DESCRIPTION - Skill Level: 3- INTERMEDIATE - Autore: Arnaldo 'homer' Zitti - Ultimo Aggiornamento: 2004-11-12 17:50:35
PhpSysInfo è uno script PHP per la visualizzazione di informazioni sul sistema.
OVERVIEW
PhpSysInfo è uno script sviluppato in linguaggio PHP che permette di visualizzare tramite browser informazioni sul sistema riguardanti, la rete, la memoria, il filesystem, e l'hardware. E' rilasciato sotto licenza GPL ed è disponibile per tutti i sistemi BSD e le piattaforme Posix. Per utilizzare questo tool è necessario avere sulla macchina da monitorare, un web server con supporto di PHP.
DOWLOAD
E' possibile effettuare il download presso SourceForge.net:
root@Joker:/software# wget http://puzzle.dl.sourceforge.net/sourceforge/phpsysinfo/phpsysinfo-2.3.tar.gz
--18:31:38-- http://puzzle.dl.sourceforge.net/sourceforge/phpsysinfo/phpsysinfo-2.3.tar.gz
=> `phpsysinfo-2.3.tar.gz'
Resolving puzzle.dl.sourceforge.net... done.
Connecting to puzzle.dl.sourceforge.net[195.141.101.221]:80... connected. <br>
HTTP request sent, awaiting response... 200 OK
Length: 163,674 [application/x-gzip]
100%[=================================================================================================================================>] 163,674 3.62K/s ETA 00:00
18:32:23 (3.62 KB/s) - `phpsysinfo-2.3.tar.gz' saved [163674/163674]
In caso di utilizzo con PHP 5.0 o sucessivi, è necessario scaricare le versione 2.3.
INSTALLAZIONE
Una volta eseguito il download, il pacchetto andrà scompattato nella document root del webserver sull'host che di cui si vuole eseguire il monitoraggio:
root@Joker:/home/webuser# tar xvfz phpsysinfo-2.3.tar.gz
phpsysinfo-dev/
phpsysinfo-dev/includes/
phpsysinfo-dev/includes/lang/
phpsysinfo-dev/includes/lang/big5.php
phpsysinfo-dev/includes/lang/bg.php
phpsysinfo-dev/includes/lang/br.php
phpsysinfo-dev/includes/lang/ca.php
phpsysinfo-dev/includes/lang/cn.php
phpsysinfo-dev/includes/lang/cs.php
phpsysinfo-dev/includes/lang/ct.php
phpsysinfo-dev/includes/lang/da.php
phpsysinfo-dev/includes/lang/de.php
phpsysinfo-dev/includes/lang/en.php
...
Quindi è necessario rinominare il file principale di configurazione config.php.new
in config.php
:
root@Joker:/home/webuser/phpsysinfo-dev# cp config.php.new config.php
CONFIGURAZIONE
Per utilizzare il tool, si andrà ad inserire una entry nel file di configurazione del web server, in modo da potervi accedere via web. Un esempio di configurazone utilizzando Apache:
root@enigma:/home/webuser/phpsysinfo-dev# cat /usr/local/apache/conf/httpd.conf
...
Alias /sysinfo/ "/home/webuser/phpsysinfo-dev/"
<Directory "/home/webuser/phpsysinfo-dev">
Options Indexes
AllowOverride None
Order allow,deny
Allow from 192.168.0.
</Directory>
...
Le informazioni vengono richiamate puntando a http://nomehost/sysinfo e ne è permessa la visualizzazione solamente alle macchine della rete 192.168.0
L'ultimo settaggio riguarda il file php.ini
, il quale deve includere nela variabile include_path
il "."
e in cui la variabile safe_mode
deve essere settata a off
, in quanto lo script deve poter accedere in lettura alla directory /proc
del sistema al fine di ricavarne le informazioni. Terminate queste operazioni, dopo il riavvio del webserver, sarà possibile accedere alla pagina generata da PhpSysInfo.
LINK: PHP SysInfo Project - http://sourceforge.net/projects/phpsysinfo/
Esempi di configurazione di Iptables |
Esempi di configurazioni di un firewall Linux con iptables |
Linux post-installation check-list |
Operazioni da compiere su un sistema Linux dopo averlo installato dal CDROM. Security fixes e patches. |
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-14 17:53:20
L'installazione di un sistema Unix o Linux con il CD-ROM ufficiale è solo la prima fase della preparazione di un server per essere messo in produzione.
A questa vanno fatte seguire alcune customizzazioni quali:
- Aggiornamento dei pacchetti, per evitare di avere programmi con bug o buchi.
- Rimozione dei servizi non utilizzati e potenzialmente pericolosi
- Ricompilazione del kernel. Non indispensabile ma raccomandabile.
- Customizzazione del sistema secondo policy congruenti e generali.
- Intervento su alcune configurazioni riguardanti la sicurezza del sistema.
- Installazione e configurazione dei servizi di produzione.
Sono indicazioni di massima generiche che possono essere evitate su macchine desktop o sistemi senza problematiche di sicurezza ma che diventano fondamentali su sistemi direttamente su Internet.
Tipo Infobox: DESCRIPTION - Skill Level: 2- JUNIOR - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-05-06 12:10:29
Utilizzare software opensource ha vantaggi e svantaggi.
Uno degli svantaggi, o quantomeno effetti collaterali, è che relativamente spesso vengono rilasciati aggiornamenti di software comuni, caratteristica per'altro comune anche a software proprietario.
Le nuove versioni possono avere nuove feature, dei bug corretti o dei buchi di sicurezza tappati.
Abituarsi a sapere quali software vengono utilizzati sui server in produzione e sapere che è fisiologico doverli aggiornare è fondamentale per un approccio sicuro all'uso di Linux su server pubblici.
Ogni sistema Linux DEVE (dovrebbe?) essere aggiornato appena dopo l'installazione ed essere mantenuto costantemente aggiornato, almeno per i programmi che offrono servizi accessibili dalla rete.
Ogni distribuzione Linux seria prevede il rilascio regolare di pacchetti di aggiornamento (alcuni li chiamano "errata") per il software fornito con i CD ufficiali.
Possono essere diversi gli strumenti utilizzati in diverse distribuzioni (i principali sono: apt per Debian e derivate, yum per Fedora e derivate, swaret per Slackware, yast2 per Suse, urpmi per Mandrake...) ma simile è la loro logica: permettere l'aggiornamento, anche automatico, di tutti i pacchetti installati sul sistema, appoggiandosi a mirror pubblici ufficiali.
In linea con la logica conservativa dei sistemi di pacchettizzazione del software su Linux, gli aggiornamenti generalmente non generano disservizi:
- Se si sono dipendenze, queste vengono gestite coerentemente;
- I file di configurazione modificati dall'utente non vengono sovrascritti;
- I servizi vengono patchati e riavviati;
- Tutto funziona esattamente come è giusto che funzioni (e non si deve riavviare il sistema se non per l'aggiornamento del kernel stesso).
E' possibile valutare e decidere, sulla base della criticità, del numero e di quanto sia aderente agli standard della propria distribuzione, se gestire in modo automatico gli aggiornamento (tipicamente tramite schedulazione notturna) o farlo manualmente.
In ogni caso è buona norma, soprattutto se si devono amministrare più server Linux, avere in un proprio repository locale un mirror con tutti gli aggiornamenti che vengono rilasciati.
Fa risparmiare parecchio tempo e, se ben mantenuto, facilita l'ordinaria amministrazione e l'aggiornamento dei server.
LINK: Rpm man Pages - http://man.openskills.info/rpm/
Tipo Infobox: TIPS - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-05-06 12:56:21
Ogni distribuzione Linux installa una quantità di servizi che vengono automaticamente avviati al boot.
Alcuni sono necessari per il funzionamento generale del sistema, altri funzionali ai servizi che il server deve offrire, alcuni possono essere inutili per la sua attività e quindi andrebbero disattivati.
L'amministratore del sistema, a seconda della distribuzione usata, ha a disposizione diversi strumenti per gestire quali servizi far avviare al boot. Questi possono essere tool grafici, integrati nelle interfacce di amministrazione di default o comandi shell e variano:
Su Fedora, RedHat e derivati: ntsysv
, chkconfig
e tool grafico system-config-services
Su Debian: update-rc.d
Su Suse: chkconfig
e Yast2
Su Mandrake: chkconfig
e Mandrake Control Center
Su Gentoo: rc-update
Strumenti di ammnistrazione generici come Webmin o Linuxconf permettono altresì la gestione dei servizi da avviare ai vari run level del sistema.
Segue una lista, non completa, dei principali servizi che si trovano di default su installazioni Linux, alcuni nomi sono comuni anche in altri Unix. Viene indicato quando è il caso di disattivarli e quando sono sempre necessari, ovviamente sono indicazioni di massima, che vanno adattate alle singole situazioni.
E' basata sui servizi di una RedHat ormai datata, su nuove e altre distribuzioni possono variare i nomi e la quantità, ma in questo caso è importante considerare quali sono i servizi strettamente indispensabili.
anacron Controlla il demone di pianificazione anacron - Comodo su workstation, inutile su un server
apmd Controllo dell'alimentazione e del login - Utile in un portatile
arpwatch Monitora le variazioni di arp entry. Utile per individuare azioni di arp poisoning
atd Controlla il demone at - Evitabile in un server
autofs Controlla il demone per l'automount di Filesystem - Utile in una workstation
crond Controlla il demone di pianificazione di sistema cron - Sempre attivo
ctm SNMP Traffic monitor - Utile per monitoring
httpd Controlla il server Web Apache e i servizi HTTP - Solo su server web
identd Server Ident - Solo in casi particolari
(x)inet Superdemone Inet - Da attivare solo se configurato per lanciare altri servizi (telnet, ftp, ecc.)
innd Server News - Solo su server news
keytable Controlla il caricamento della mappa di tastiera - Sempre attivo
kudzu Controlla e verifica la presenza di nuovo hardware - Utile per una workstation
linuxconf Permette l'accesso via web all'interfaccia di linuxconf - Da evitare su un server
lpd Controlla i servizi dello spooling di stampa - Da evitare su un server
mars-nwe Controlla i servizi di sistema compatibili Netware - Da attivare solo se si utilizzano sistemi Netware
named Controlla l'avvio e l'arresto del Domain Name Service - Solo su server DNS
netfs Controlla i Mount e Umount di tutti i Network Filesystem - Solo se si usano FS di rete
network Controlla l'avvio e l'arresto dei sistemi di rete - Sempre attivo
nfs Controlla i servizi del Network File System - Solo su server NFS
nfslock Controlla i servizi del Network File System - Solo su server NFS
pcmcia Controlla i servizi delle schede per computer portatili - Solo su portatili
portmap Controlla i servizi per la procedura di chiamata remota - Necessario per NFS, NIS+ ecc.
postgresql Controlla il demone di PostgreSQL database - Solo su un SQL Server
random Controlla la generazione dei numeri casuali - Sempre attivo
routed Controlla un RIP router daemon - Solo su un router, se serve
rstatd Controlla il demone delle statistiche del kernel di rete rpc.statd. - Da evitare
rusersd Controlla i servizi di rete dell'rpc.rusersd. - Da evitare
rwhod Controlla il demone di rete rwhod per i servizi di rwho - Da evitare
sendmail Controlla i servizi di trasporto di posta - Solo su server SMTP
smb Controlla i demoni Samba smbd e nmbd - Solo su file server CIFS-SMB
snmpd Controlla il demone del protocollo Simple Network Management - Utile per monitoring
syslog Avvia e arresta i servizi di logging di sistema - Sempre attivo
xfs Avvia e arresta il server font X11 - Necessario per l'uso di Xwindows
*bind Controlla i servizi di binding NIS - Solo su sistemi NIS
Tipo Infobox: TIPS - Skill Level: 3- INTERMEDIATE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2005-05-06 13:13:05
Esempi di customizzazioni post-installazione praticabili su sistemi Linux - Unix.
Sincronizzare l'ora con un time server
E' sempre buona cosa avere l'ora sincronizzata su tutti i server che si gestiscono. Il modo migliore di farlo è utilizzare un NTP server centrale per la propria rete (può essere un router Cisco, particolarmente semplice da configurare, o un ntp server Linux) e usarlo come time server da parte di tutti gli host.
Su Linux il comando ntpdate time.server.com
(presente nel pacchetto ntp-*.rpm|dep ) esegue la sincronizzazione dell'ora locale con quella di time.server.com.
Si consiglia di crontabbare questo comando e di eseguirlo ad ogni boot.
Redirezionare le mail per root
La maggior parte delle mail che invia il sistema o i singoli programmi vengono redirezionate alla mailbox dell'utente root.
Se si hanno diverse macchine da amministrare risulta scomodo dover controllare la mail di root su ogni sistema.
Una possibilità è forwardare tutte tutte le mail destinate all'utente root ad un account di posta che si controlla regolarmente con il proprio client favorito. Per farlo basta creare il file /root/.forward
e inserire nella prima riga l'indirizzo e-mail a cui si vuole forwardare la mail destinata a root, oppure aggiungere a /etc/alias
una riga tipo: root: [email protected].
Invio periodico di mail di stato
Può capitare che un sistema venga "dimenticato" dopo essere stato messo in produzione. L'amministratore non lo controlla e eventuali problemi vengono a galla solo troppo tardi, quando sono già avvenuti. Il miglior modo per gestire diversi server sarebbe quello di avere un sistema centralizzato di management e monitoring.
In mancanza di una soluzione esistono comodi e rapidi strumenti che analizzano i log di sistema e mandano, per esempio, una mail di report. Uno dei più usati è Logwatch installato di default in qualche distribuzione, che genera un report quotidiano sullo stato del sistema e lo invia via mail a root (altro buon motivo per leggere le mail di root).
Se si vuole procedere con una soluzione custom, segue un esempio di cosa può essere contenuto nello script che raccoglie info sullo stato del sistema (in questo caso crea un file, con il nome uguale alla data corrente, nella directory /home/getdata, questo file può poi essere inviato via mail tramite cron con mail root < /home/getdata/nomefile
):
#!/bin/sh
Se è installato sar, fornisce numerose statistiche sull'utilizzo delle risorse
home=/home/getdata
file=$(date '+%Y-%m-%d')
touch $home/$file
/bin/uname -a >> $home/$file Nome del sistema
/bin/df -k >> $home/$file Spazio su disco disponibile
/bin/netstat -rn >> $home/$file Tabella di routing
/sbin/ifconfig >> $home/$file Statistiche su interfacce di rete
/bin/netstat -lp >> $home/$file Programmi con porte aperte
/bin/netstat -s >> $home/$file Statistiche sul TCP/IP
cat /etc/resolv.conf >> $home/$file Nameserver utilizzato
cat /etc/hosts >> $home/$file Mapping statici nome host - IP
ps -adef >> $home/$file Processi in esecuzione
/sbin/iptables -L -n -v >> $home/$file Stato del firewall
/usr/bin/who >> $home/$file Utenti connessi al sistema
/bin/cat /root/.bash_history >> $home/$file History dell'utente root
/usr/bin/sar -A >> $home/$file
Tipo Infobox: DESCRIPTION - Skill Level: 4- ADVANCED - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2002-10-13 22:54:54
Riassumiamo qui una serie di configurazioni e ottimizzazioni post-installazione che possono aumentare il livello di sicurezza del sistema.
Non ci addentriamo nei particolari, ci si limita a dare indicazioni operative, lasciando a chi legge gli approfondimenti del caso.
Alcune indicazioni sono necessarie solo per server fisicamente posizionati in luoghi non sicuri ed in qualche modo accessibili da estranei (PHYSICAL), altre sono particolarmente pignole e dedicate a chi ha particolarmente a cuore la sicurezza del sistema o è particolarmente paranoico (PARANOID), altre ancora in qualche modo possono compromettere le funzionalità di parti del sistema per cui vanno adottate e testate adeguatamente (DISFUNCTION?), alcune sono particolarmente raccomandate (RECCOMENDED).
Queste impostazioni si riferiscono ad una distribuzione RedHat 7.2 standard. Su altre distribuzioni le posizioni dei file possono essere diverse e le indicazioni date vanno adattate.
In ogni caso queste indicazioni NON bastano a rendere un server sicuro, ma vanno affiancate ad altre precauzioni (aggiornamento costante di programmi e kernel - esposizione solo dei servizi strettamente necessari - utilizzo di IPTABLES adeguate - controllo della sicurezza dei servizi pubblici - installazione di un IDS e di un file integrity checker - log check regolare - BACKUP!).
Settare una password sul BIOS - PHYSICAL - RECCOMENDED
Necessario per impedire che si possa modificare il device di boot, impedendo la possibilità di fare password recovery o accesso non protetto ai dati bootando da floppy o CDROM estranei. Considerare che la password del BIOS è resettabile switchando un jumper sulla scheda madre. Il vero paranoico impedisce anche l'apertura del case se la macchina si trova in luoghi fisicamente non sicuri.
Strong password policy - RECCOMENDED
Le password di fatto sono il baluardo principale per permettere l'accesso al sistema. Se sono semplici, triviali, recuperabili da un dizionario o brevi sono password deboli.
E' possibile forzare il numero minimo di caratteri composti da una password editando /etc/login.defs
e forzando a 8 il numero minimo di caratteri della password con PASS_MIN_LEN 8
.
Altra opzione interessante presente nello stesso file è PASS_MAX_DAYS 99999
dove 99999 è la durata della password. Ha senso inserire un PASS_MAX_DAYS 180
per forzare il cambio della password ogni 180 giorni. Attenzione: Queste modifiche vanno fatte PRIMA di aggiungere utenti alla macchina. PASS_MAX_DAYS 99999 e altri parametri sono comunque modificabili successivamente in /etc/shadow
.
Cript a lot - RECCOMENDED
E' fondamentale per un server pubblico che si gestisce via Internet rimuovere l'accesso telnet e sostituirlo con SSH, che cripta i dati trasmessi (e quindi login e password per l'accesso). SSH comunque non è esente da difetti, la versione 1 del protocollo ha potenziali buchi e in passato ci sono state serie vulnerabilities su alcuni software SSH. Si raccomanda di usare una versione recente di OpenSSH con supporto di SSH2, chiave di almeno 1024 bit e con accesso root diabilitato.
Permission restriction - PARANOID - DISFUNCTION?
In molte distribuzioni, spesso, alcuni file hanno di default permessi in lettura per tutti gli utenti anche quando non è necessario.
Non è una brutta idea restringere questi permessi, lasciando che sia root Colui Che Può:
chmod 600 /etc/inetd.conf
Se presente inetd.conf. Ovviamente è pure necessario editarlo per rimuovere tutti i servizi inutili.
chmod 600 /etc/xinetd.conf
Se presente Xinetd invece di inetd. Stesse raccomandazioni.
chmod 700 /etc/xinetd.d
La directory dove Xinetd ha il file di configurazione per i singoli servizi.
chmod -R 700 /etc/&rc.d/init.d/*
La directory dove sono presenti gli script di avvio. Perchè un normale utente dovrebbe vederlI?
Restrizione /etc/aliases - PARANOID - DISFUNCTION?
/etc/aliases
gestisce gli alias di posta, spesso di default si forwardando a root la posta di altri utenti. E' opportuno commentare alcuni alias, inseriti di default, per evitare potenziali exploit tramite il loro utilizzo (in particolare l'alias decode). Segue una lista delle righe di /etc/aliases che si possono commentare o rimuovere. Dopo la modifica del file va eseguito il comando newaliases per rendarla effettiva:
# uucp: root
# operator: root
# games: root
# ingres: root
# system: root
# toor: root
# manager: root
# dumper: root
# decode: root
Boot loader password - PHYSICAL - RECCOMENDED
Impedire l'accesso alle opzioni del bootloader è fondamentale in un server fisicamente non custodito.
Se si usa lilo aggiungere a /etc/lilo.conf
la riga password= e assicurarsi che lilo.conf sia leggibile solo da root.
Se si usa grub aggiungere a /etc/grub.conf
la riga password e assicurarsi che grub.conf sia leggibile solo da root o, meglio, usare l'opzione password --md5
Disabilitare CTRL-ALT-CANC - PHYSICAL - RECCOMENDED
Sicuramente non ci piace l'idea che chiunque possa riavviare il nostro server con un comodo CTRL+ALT+CANC
, per renderlo impossibile commentare in /etc/inittab la riga: ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Stampare i log! - PARANOID
La prima cosa che fa un intrusore una volta preso possesso del sistema e coprire le proprie tracce, modificando e cancellando i log che ne possano rilevare l'entrata.
Questo è evitabile se si ha molta carta da sprecare: è possibile configurare syslog per stampare (su stampante a feed continuo) i log che si vogliono. E' semplice, basta aggiungere una riga come quella che segue ed avere una stampante funzionante su /dev/lp0
authpriv.* /dev/lp0
Usare un syslog server
Leggermente meno sicuro e definitivo del metodo precedente è quello di loggare i propri log su un syslog server remoto, opportunamente blindato, che risulti, per quanto possibile, inattaccabile per l'intrusore. Sul syslog locale aggiungere/modifcare:
authpriv.* @nomesyslogserver
Sul syslog server configurare /etc/rc.d/init.d/syslog
per lanciare syslogd con l'opzione di accettare messaggi dalla rete, aggiungendo -r
alle opzioni di startup.
In RedHat 7.2 modificare la riga: SYSLOGD_OPTIONS="-m 0" con SYSLOGD_OPTIONS="-r -m 0"
Buona scelta è anche usare alternative più sicure (paranoiche?) a syslogd.
Limitare la history della shell
E' possibile limitare la history predefinita della bash per ridurre i rischi che un hacker, leggendola, possa vederci delle password digitate per sbaglio.
Caso tipico è l'utente che prova a diventare superuser e scrive la password al momento sbagliato, passandola come comando shell (che probabilmente non verrà trovato) invece che come input alla richiesta della password. Tale leggerezza resta immortalata nella history della sua shell.
Editare /etc/profile
per ridurre la dimensione della history. Modificare HISTSIZE=1000 in HISTSIZE=25
(o il valore che si preferisce).
Non urlare la proria identità - RECCOMENDED
Nonostante esistano tool come queso in grado di rivelare il sistema operativo installato su una macchina, è sempre buona norma fornire il minor numero possibile di informazioni sul sistema ed i suoi servizi. Questo non basta per fermare un bravo hacker, ma può essere abbastanza per fuorviare lo scan di uno script kiddie.
Per quanto riguarda i singoli servizi (web, dns, ssh, smtp ecc) riferirsi alle relative documentazioni per trovare il modo di nascondere versione e nome del programma utilizzato. Per quanto riguarda il sistema si può evitare di mostrare a console o via telnet/ssh un verboso banner introduttivo con nome distribuzione e versione del kernel.
Su RedHat7.2 editare rispettivamente /etc/issue
e /etc/issue.net
per mascherare versioni di kernel e distribuzione.
Su RedHat più vecchi uno sciagurato script di avvio (/etc/rc.d/rc.local) riscriveva ogni volta questi file con le informazioni originarie. In questo caso è necessario commentare le righe dello script che riscrivono /etc/issue e /etc/issue.net.
Rimuovere RPM, GCC e altri comandi utili - DISFUNCTION?
Se si vuole rendere la vita difficile ad un intrusore, e anche complicarsi un po' la propria, considerare la possibilità di spostare il comando RPM in una directory non standard (meglio cambiandogli anche il nome per evitare che un find lo trovi) o metterlo direttamente in un luogo inaccessibile (floppy estraibile).
Analogamente si può pensare di rimuovere dal sistema tutti i tool necessari per compilare del codice come gcc, make e le relative libraries (utili all'hacker che vuole crearsi delle backdoor) e i comandi che si possono usare per prendere un file dalle rete (lynx, ftp, irc, ncftp, wget, scp, rcp ...) e che si possono impropriamente essere utilizzare per caricare sulla macchina programmi estranei.
Queste precauzioni, seppur efficaci in un contesto di sicurezza estrema, rendono molto meno comoda e pratica la vita dell'amministratore.
Restringere le opzioni di mount del file-system - DISFUNCTION?
Il file /etc/fstab contiene le informazioni su quali dispotivi possono essere montati sulla macchina e può definire delle opzioni che introducono limitazioni sul file-system montato.
Per esempio un /etc/fstab con queste righe:
/dev/hda2 /tmp ext2 defaults 1 2
/dev/hdc1 /home ext2 defaults 1 1
può essere modificato con opzioni che restringono, sui file system montati, la possibilità di eseguire binari (noexec), di onorare i bit setUID e setGID su file che li hanno (nosuid), di interpretare caratteri o dispositivi a blocchi speciali (nodev):
/dev/hda2 /tmp ext2 nosuid,nodev,noexec 1 2
/dev/hdc1 /home ext2 nosuid,nodev 1 1
Limitare gli utenti che possono fare SU - RECCOMENDED
Qualsiasi utente con una shell sul sistema con il comando su, può diventare root (sapendo la password). Si può stroncare alla radice questa velleità editando il file /etc/pam.d/su
e scommentando la riga:
auth required /lib/security/pam_wheel.so use_uid
.
Una volta fatto, solo gli utenti appartenti al gruppo wheel (è un gruppo speciale, non si possono usare altri gruppi arbitrari per questa operazione) possono fare su, per cui editare /etc/group ed aggiungere al gruppo wheel gli utenti abilitati ad eseguire su.
Fonte: OpenSkills.info | Rilasciato sotto licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo. |