E' garantito il permesso di copiare, distribuire e/o modificare questo documento in base ai termini della GNU Free Documentation License, Versione 1.2 o ogni versione successiva pubblicata dalla Free Software Foundation. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation. 

E’ possibile scaricare la versione PDF del AlNao Debian HandBook con tutti gli articoli. Il documento è aggiornato alla primavera 2022 con riferimento alla versione 11 di Debian. Il documento è scritto con LaTex.

Questo documento nasce negli anni di utilizzo dei sistemi GNU Linux e dalla necessitò di riordinare il contenuto di grossi blocchi di appunti sparsi in raccolte di pagine web, in particolare gli appunti riguardanti i sistemi Debian su che uso da ormai più di quindici anni. Dopo aver sentito la necessità di dover mettere ordine agli appunti, ho deciso di scrivere un documento che poi io chiamo manuale con lo scopo anche di condivisione di esperienze e conoscenze, seguendo proprio lo spirito base del mondo GNU Linux.

L'opera è diretta principalmente all'utente semplice, che usa il computer per scrivere, navigare, che ha la possibilità o la necessità di approfondire alcune tematiche avanzate di un sistema operativo come l'installazione di alcuni demoni e le configurazioni base. Un programmatore, anche non alle prime armi, può trovare molti spunti da questo manuale, essendo presenti capitoli dedicati a questo argomento e riferimenti alla programmazione visto che, chi scrive questo documento, è sopratutto un programmatore.

La dispersione delle informazioni e la troppa documentazione non adatta alle mie conoscenze, a volte troppo evoluta e a volte troppo semplice, sono stati i motivi che mi hanno spinto a scrivere un documento completo dalla prima installazione alle ultime configurazioni cercando di realizzare una facile esposizione, facendo però l'importante assunzione che il lettore sia a conoscenza dei concetti base dell'informatica e di alcune basi della programmazione se il lettore è interessato a quella sezione.

Molti argomenti complessi, come la compilazione dei programmi dal codice sorgente, sono accennati a livello introduttivo e teorico, in modo che il lettore li possa comunque sperimentare, per poi eventualmente approfondire l'argomento per conto proprio in altri documenti più specifici. A volte si danno per scontate alcune nozioni, come per esempio la conoscenza di alcuni linguaggi di programmazione (come C, HTML, PHP, Perl e SQL) che chi scrive questo documento trova ovvie, mentre ad un lettore meno esperto potrebbero essere molto complicate ma questo non deve spaventare in quanto questo documento non è un manuale sulla programmazione e le nozioni richieste non sono fondamentali al fine di capire gli argomenti e gli esempi proposti servono solo per verificare il corretto funzionamento dei demoni installati.

Ho sempre cercato il tempo per scrivere e per correggere gli errori di grammatica e di battitura di cui questo documento è pieno, cerco anche di essere chiaro e non ripetitivo ma non sempre trovo il tempo e le energie per fare tutto e poi sistemare tutto, non avendo nessun scopo di guadagno mi auguro che il lettore comprenda che questa è un documento amatoriale e che non pretenda troppo da questo manuale, ovviamente le cose scritte sono (quasi) sempre verificate anche se ovviamente si possono trovare guide con maggiori dettagli.

Il documento è stato aggiornato dal 2006, visto che ogni due anni esce una versione nuova del sistema operativo Debian, questo mi porta a dover rivedere tutte le parti da zero per correggere e sistemare gli aggiornati e gli errori, per questo motivo è possibile trovare parti con datazioni diverse e versioni precedenti.

Spero di finire questo documento prima o poi.

Durante i miei anni di studi ho avuto la grande fortuna di essere costretto ad iniziare ad usare i sistemi GNU Linux, all'inizio del millennio le cose non erano così semplici: senza i motori di ricerca il metodo risolutivo dei problemi era molto più arduo e non essendoci linee veloci non esistevano mirror da cui scaricare aggiornamenti continui; informazioni e pacchetti si trovavano solo su riviste e libri ed è proprio stato questo che mi ha spinto a scrivere la prima versione di questo manuale, infatti le informazioni che avevo e che mi servivano erano sparse su varie riviste e sui libri ma non avevano un punto centrale dove raccogliere tutte le informazioni che io avevo trovato e che mi servivano.

Non voglio eseguire confronti con altri sistemi e le aziende che producono altri sistemi operativi perché non credo sia questa l'occasione per farlo, la filosofia principale del mondo GNU Linux è la condivisione delle proprie idee e delle proprie conoscenze, questo documento è scritto proprio con questo spirito.

Tecnicamente c'è molta di differenza tra un sistema operativo classico (come MS Windows e/o Apple Mac OS) e quello che viene comunemente chiamato Linux: siamo abituati a dire giustamente che MS Windows è un sistema operativo mentre il pacchetto MS Word compreso nel pacchetto MS Office è un programma, GNU Linux invece comprende entrambe le parti, esiste il cuore centrale di GNU Linux, chiamato KernelLinux che può essere definito come il sistema operativo (cioè l'insieme di tutti quei programmi essenziali al funzionamento del sistema base), nei sistemi GNU Linux sono compresi anche tutti i programmi di uso più comune, come quelli per l'ufficio, la navigazione web, giochi, grafica, ecc..., al termine di una installare di un sistema GNU Linux l'utente si ritrova installati tutti i programmi base e, dai DVD o dai Mirror presenti su internet, può scaricare altri programmi senza dover cercare su altri siti, questa filosofia di unire sistema operativo e programmi è stata molto rimarcata in questi anni, basti pensa che i Mirror Debian contengono oltre 50.000 pacchetti e circa 10.000 programmi diversi.

In un pc o in un notebook, è possibile installare GNU Linux anche se è già presente un sistema MS Windows senza creare grossi problemi e i due sistemi possono essere installati in parallelo, alcune distribuzioni permettono persino di installare i due sistemi nella stessa partizione di disco, ma io sconsiglio vivamente questo approccio nonostante la convivenza di più partizioni nello stesso sistemi è ormai una cosa stabile e ben funzionante. Nella appendice sarà scritta una guida di come eseguire l'installazione di Debian in un sistema dove è presente anche un altro sistema operativo, mentre gli altri capitoli del documenti prevedono una installazione pulita in un sistema dove non è presente nessun altro sistema operativo.

Le distribuzioni di GNU Linux sono community o aziende che preparano DVD oppure Mirror Web dove scaricare il sistema di installazione più velocemente, ogni distribuzione ha le proprie caratteristiche ma bisogna sempre ricordare che il cuore del sistema operativo (KernelLinux) è sempre lo stesso, l'elenco completo e la storia delle distribuzioni che si basano sul KernelLinux possono essere trovati su internet in qualsiasi sito specializzato. In questo documento si parla tipicamente solo della distribuzione Debian, ma leggendo questa guida potrete trovare spunti per qualsiasi distribuzione anche non derivata da Debian visto.

Per chiarezza di esposizione e per garantire anche precisione delle descrizioni, in tutto questo documento saranno adottate le convenzioni classiche usate in quasi tutti i documenti i siti disponibili sugli argomenti trattati:

  • Viene usato il carattere # per indicare un comando eseguito da un utente con privilegi di amministratore di sistema (il super utente root).
  • Viene usato il carattere $ per indicare un comando eseguito da un utente non amministratore (un utente non root per esempio quello creato in fase di installazione).
  • Viene usato lo stile macchina di scrivere per indicare messaggi mostrati a video dal sistema, tutti i caratteri inseriti da tastiera e i nomi dei file, facendo sempre attenzione alla distinzione fra lettere minuscole e maiuscole.
  • Viene usato lo stile Grassetto quando si indicano, per la prima volta, nomi di programmi o dei pacchetti di particolare importanza.
  • Viene usato lo stile corsivetto quando si vogliono evidenziare commenti personali.
  • Vengono usati dei riquadri oppure testo in rosso quando si vogliono inserire delle note importanti che meritano maggiore attenzione dall'utente.
  • Viene usato lo stile Nao Alberto quando viene nominato, per la prima volta, il nome di una persona di particolare importanza oppure quando viene segnalato una scritta di particolare importanza, come il testo di un bottone o la scritta di un link.

Dopo la scrittura di ogni comando è sottintesa la pressione del tasto invio (enter). Questi standard possono essere non convenzionali ad un utente alle prime armi ma scopriremo subito che i caratteri # e $ vengono usati dal sistema per distinguere la shell di utenti amministratori (root) e utenti normali.

Si da per scontato che il lettore abbia la possibilità di collegarsi a internet con una linea abbastanza veloce da poter scaricare i DVD di Debian e che possa scaricare aggiornamenti e pacchetti non compresi nei DVD (una linea ADSL anche base è perfetta e sufficiente per questo). Si assume anche che il lettore disponga di un masterizzatore DVD per masterizzare il DVD di installazione o che abbia già il DVD pronto oppure una chiavetta USB. Un utilizzatore di GNU Linux deve imparare fin da subito a prestare attenzione a come vengono scritti e inseriti nomi, perché i sistemi basatati su GNU Linux sono sempre case-sensitive, cioè fanno distinzione tra caratteri maiuscoli e minuscoli: durante la lettura di questo manuale bisogna sempre prestare attenzione alla differenza e fare sempre attenzione a cosa si digita con la tastiera.

Essendo un documento amatoriale ed essendo un testo scritto nei miei ritagli di tempo libero, mi auguro che il lettore non abbia la pretesa che questo manuale descriva con precisione il modo migliore per installare e configurare un sistema perfettamente funzionante. Questo manuale vuole essere una descrizione di passi per far funzionare il sistema base con alcune brevi spiegazioni sulle componenti più usate o più importanti, i passi descritti sono sempre verificati e controllati ma alcuni dettagli vengono tralasciati per evitare un documento troppo lungo o troppo dettagliato. Le sezioni riguardanti i demoni demoni e le configurazioni della rete sono dettagliate ma spesso non viene approfondita la sezione sulla sicurezza di rete alla quale forse in futuro dedicherò un capitolo dedicato.

Un ulteriore problema sorto in questi anni è che, col passare del tempo, il sistema GNU Linux e Debian si evolvono molto velocemente, infatti molti pacchetti e programmi cambiano: ogni due anni circa esce una nuova versione stabile e questo comporta dover revisionare tutto il documento correggendo le imprecisioni, per questo motivo sono già alla sesta edizione di questo documento. Con l'evoluzione della tecnologia e degli ambienti di sviluppo sono aggiunti nelle ultime edizioni di questo documento nuovi demoni (come PostgreSQL, MongoDB e i Docker) nel tentativo di rimanere aggiornato con le ultime tecnologie e per rendere questo documento il più utile e completo possibile.

Anche per quanto riguarda i programmi base dei desktop c'è il tentativo di tener aggiornato il documento con la speranza di rendere completo l'elenco delle applicazioni disponibili ed utilizzabili anche da utenti non programmatori. In particolare questo documento vuole essere compatibile con le ultime due versioni di Debian quindi potrebbero esserci alcune differenze che rendono questi articoli non precisi e completi.

In questo capitolo è descritta tutta la fase di installazione della versione 11 di Debian chiamata Bullseye. Il primo passo da eseguire sarà il download del primo DVD del sistema dal sito ufficiale, il passo successivo sarà l'avvio del programma di installazione, seguendo passo per passo le fasi di installazione. L'installazione di un sistema operativo è sicuramente una cosa non semplicissima e delicata, infatti si possono settare molti parametri del sistema ma non bisogna pensare che sia una cosa impossibile anche per chi ha poca esperienza in materia: seguendo i passi descritti in questo articolo l'installazione sarà un gioco da ragazzi.

Durante la fase di installazione, la fase più complicata sarà sicuramente il partizionamento del disco, in quanto c'è sempre il rischio di perdere tutti i dati già presenti, se possedete un computer nuovo (o uno vuoto) potete stare tranquilli, se invece è un sistema già usato in precedenza è sempre consigliabile eseguire un backup di tutti i dati prima di procedere con l’installazione di un nuovo sistema.

Prima di procedere con l'installazione bisogna controllare se il computer dove si vuole installare Debian dispone dei requisiti minimi, sicuramente un computer recente non avrà problemi, infatti questo sistema operativo necessita di meno risorse rispetto ad altri sistemi, bastano infatti pochi GB di Ram e un processore anche non recente. Ricordo che se disponete di sistemi a 64 Bit (AMD o Intel serie I3, I5 o I7) dovete scegliere la versione amd64 mentre se disponete di altri sistemi dovete controllare nel sito ufficiale la versione adatta al vostro sistema.

Tale guida è valida anche per le precedenti versioni di Debian e anche per le successive, infatti dalla mitica versione 3.1 di Debian, chiamata Sarge, il programma di installazione ha subito poche variazioni grafiche quindi risulta molto simile ai programmi di installazioni delle precedenti versioni: se qualcuno possiede una guida di installazione delle precedenti versioni o una vecchia versione di questo capitolo troverà pochissime di differenze.

Una guida ufficiale per l'installazione può essere trovata nel sito ufficiale di Debian, questo capitolo vuole esserne un riassunto semplice ma completo.

Molte distribuzioni di GNU Linux sono gratuite e possono essere scaricate direttamente da internet senza problemi, all'interno del sito ufficiale di Debian www.debian.org è possibile trovare tutte le immagini del DVD di installazione e tutte le informazioni sul sistema operativo; è possibile trovare i DVD di Debian anche pubblicati su riviste o manuali, l’ovvio vantaggio di usare un sito web è il costante aggiornamento dei pacchetti e il fatto che sarete sempre aggiornati all'ultima versione del sistema. Per scaricare il DVD per l’installazione basta andare nel sito, entrare nella sezione Getting Debian (in italiano "Ottenere debian") e cliccare su Download large installation images ("Scaricare un file immagine"), scegliendo poi la versione che cercate, se il sistema è recente è possibile scaricate la versione amd64, se invece il sistema è vecchio o a 32 bit, la versione da scegliere è la i386. Le immagini scaricate sono in formato ed estensione ISO, questi file possono essere portati su DVD da qualsiasi programma di masterizzazione compresi i programmi nativi di tutti i sistemi operativi.

Scaricare un DVD attraverso un browser può essere una operazione non semplice perché la maggior parte dei browser non da la possibilità di farlo per la dimensione dei file superiori ai 4Gb, il mio consiglio è di usare un sistema peer-to-peer come BTorrent (oppure KTorrent per chi usa già GNU Linux), con questi sistemi è possibile scaricare file di grandi dimensioni senza problemi, dal sito ufficiale di Debian potete scaricare i parametri per il download dell'immagine ISO dai sistemi torrent.

IMPORTANTE: Scaricare l'immagine ISO di Debian da un sistema Torrent (o da qualsiasi altro sistema di peer-to-peer) non è illegale in quanto Debian è free e coperto da licenza GNU che permette il download e l’uso delle immagini. Scaricare film, musica, software con piattaforme peer-to-peer può essere illegale se i contenuti scaricati sono coperti copyright e/o coperti da licenza proprietaria.

Potete tranquillamente selezionare l'immagine da 4 Gb anche se potrete selezionare una versione più light del sistema (di circa 180 Mb) che poi provvederà a scaricare da internet i componenti mancanti, io sconsiglio la versione più piccola perché rende molto lenta la fase di installazione allungando i tempi.

Nel sito ufficiale è possibile trovare e scaricare anche la versione dell'installer su chiavetta USB per quei pc moderni che sono sprovvisti di lettore CD/DVD.

Le versioni di Debian sono divise tra la categorie di stable, testing e unstable; come dice il nome stesso, sono le varie fasi dei vita pacchetti: un pacchetto prima viene inserito nella versione chiamata unstable, poi passa nella testing e, quando viene valutato stabile senza anomalie, un pacchetto viene inserito nella successiva versione stabile di Debian, solamente le versioni stabili vengono numerate mentre alla versione “testing” viene assegnato il numero e il nome della successiva versione stabile mentre la versione “unstabile” non ha un numero di versione.

Ad ogni versione viene assegnato anche un nome ispirato ai mitici personaggi del film Toys Story, la versione unstable porta sempre il nome Sid che era il nome del bambino che nel film si divertiva a rompere i giocatoli del protagonista. L’elenco delle versioni di Debian è disponibile nel sito ufficiale e riassunto in questa tabella.

Versione Nome Data rilascio
unstable Sid  
testing (12) Bookworm fine 2023 
11 Bullseye 20 Giugno 2021
10 Buster 9 Maggio 2019
9 Stretch 17 Giugno 2017
8 Jessie 26 Aprile 2015
7 Wheezy 5 Maggio 2013
6 Squeeze 6 Febbraio 2011
5 Lenny 14 Febbraio 2009
4 Etch 8 Aprile 2007
3.1 Sarge 6 Giugno 2005
3 Woody 19 Luglio 2002
2.2 Potato 15 Agosto 2000
2.1 Slink 9 Marzo 1999
2.0 Hamm 24 Luglio 1998
1.3 Bo 5 Giugno 1997
1.2 Rex 12 Dicembre 1996
1.1 Buzz 17 Giugno 1996
1.0 --- mai rilasciata

 

La maggior parte dei computer moderni, sopratutto portatili, non dispongono di un lettore DVD, per ovviare a questo problema è possibile procedere con l'installazione con una chiavetta USB auto-avviante, esattamente come si farebbe con un disco. La scelta è utilizzare le immagini ISO disponibili per i dischi e installarla in una chiavetta USB oppure è possibile scaricare la versione LIVE di Debian e usarla per la installazione.

Nel primo caso basta scaricare la immagine in formato ISO come descritto in precedenza e usare un programma di scrittura della immagine sulla chiavetta, su sistemi Linux basta lanciare il comando

$ dd bs=4M if=/path/debian-10.0.0-amd64-netinst.iso of=/dev/sdx status=progress oflag=sync

dove sdx è il dispositivo di destinazione, la lista delle memorie disponibili può essere recuperata con il comando

$ lsblk

bisogna sempre prestare attenzione su quale memoria si va a scrivere l'immagine.

Per chi dispone invece di un sistema di partenza MsWindows è possibile usare programmi specifici, io consiglio rufus scaricabile gratuitamente dal sito del progetto, con questo agile programma è possibile copiare l'immagine ISO in un dispositivo USB velocemente.

Per chi sceglie di usare la versione Live di Debian, nel menù di avvio sarà possibile scegliere se installare il sistema o caricare la versione Live, opzione disponibile all'interno del sistema grazie ad una icona nel desktop.

Quando si scrive una immagine in una chiavetta USB, tutti i dati presenti nel dispositivo USB vengono cancellati, quindi prestare attenzione ed eventualmente eseguire prima una copia di backup dei dati in un altro dispositivo. Se la memoria disponibile è maggiore della dimensione dell'immagine, lo spazio in eccesso verrà reso inutilizzabile di default, è possibile modificare la dimensione delle partizioni ma è una operazione sconsigliata.

Per far partire il programma di installazione bisogna avere un DVD auto-avviante oppure una chiavetta USB con all'interno le immagini scaricate dal sito, basta infatti inserire il DVD nel lettore e il programma di installazione verrà avviato automaticamente al successivo avvio (o riavvio) del sistema. I dischi auto-avvianti funzionano solamente se il sistema BIOS del PC è configurato correttamente: per questa configurazione bisogna entrare nella finestra di setup del BIOS, premendo un tasto all'avvio del sistema tipicamente indicato nella prima videata con una scritta del tipo “Press XX to enter in the setup”, all'interno del programma di setup del BIOS bisogna indicare il DVD come “main boot” (il termine da cercare è proprio il termine boot).

Una volta avviato il sistema con il DVD, compare una schermata che chiede a quale tipo di installazione eseguire, muovendosi con le frecce della testiera si dovrebbe scegliere la voce Graphical installation, altrimenti verrebbe avviato il programma di installazione da riga di comando senza nessun componente grafico, l'installatore Debian consiste di un numero di passi dedicati ad eseguire i passi dell'installazione, ogni componente esegue il proprio compito, ponendo domande all'utente per quanto necessario a svolgere il proprio lavoro, a queste domande sono date delle priorità e la priorità delle domande da porre è impostata all'avvio dell'installatore, quando si esegue un'installazione predefinita, solo le domande essenziali (ad alta priorità) saranno poste. Ne risulta un processo di installazione altamente automatizzato e con poca interazione da parte dell'utente e i componenti sono eseguiti automaticamente in sequenza; quali componenti siano eseguiti dipende principalmente dal metodo di installazione usato e dall'hardware ma vengono calcolati automaticamente senza che l’utente si accorga di nulla.

I primi passi che vi vengono proposti sono la scelta della lingua (dove inglese è sempre il valore di default) e il tipo di tastiera che avete (anche in questo caso la tastiera inglese è la scelta predefinita), ovviamente se disponete della classica tastiera italiana (con le lettere accentate vicino al tasto invio) dovete selezionare la tastiera italiana, queste scelte non sono vincolanti in quanto è possibile cambiare lingua e tastiera anche una volta terminata l’installazione ma ovviamente è più semplice e pratico selezionare la lingua corretta. Se si sceglie la tastiera sbagliata alcuni tasti potrebbero non corrispondere con quanto compare a video come i tasti di punteggiatura la cui posizione dipende dalla nazione della tastiera. Un volta superati i primi due passi compare una barra di avanzamento con il messaggio Copia del sistema base in corso, non bisogna fermare il processo aspettando i successivi passi dell’installazione.

Dopo aver selezionato la lingua nel primo step, il programma di installazione prevede step ulteriori dove è possibile configurare le componenti più importanti del sistema. Il primo componente da configurare è la scheda di rete: è possibile farsi guidare dal programma di installazione per le impostazioni di una rete domestica classica (router ADSL/Fibra con o senza una rete Wifi), per configurare una rete più complessa è possibile inserire server di rete DHCP e l’indirizzo del Gateway, per esempio una configurazione semplice può essere:

  • Indirizzo IP : 192.168.1.2
  • SubnetMask : 255.255.255.0
  • Gateway : 192.168.1.1

Dopo la configurazione delle rete, è previsto un passo dove bisogna inserire un nome del sistema, questo nome è puramente indicativo ed è usato solo nei servizi di rete ma comparirà spesso nelle videate quindi conviene mettere un nome parlante (il nome non deve avere spazi o caratteri di punteggiatura), se disponete di una rete domestica con più nodi (più computer o dispositivi collegati) il nome sarà usato per identificare il sistema dagli altri.

I passi successivi sono i passi più delicati di tutta la fase di installazione perchè prevedono la configurazione del disco fisso HardDisk per la creazione delle partizioni, questo può causare la perdita di dati se viene modificata la struttura delle partizioni. Per il sistema operativo bastano circa 30 Gb e poi è consigliata anche una seconda partizione chiamata di SWAP, per questa partizione bastano appena 8Gb anche se nei sistemi di ultima generazione con tanta memoria RAM questa partizione può anche non essere creata. In questo manuale non viene spiegata la teoria dei FileSystem ma i sistemi GNU Linux prevedono vari tipi di partizioni: è possibile utilizzare gli stessi tipi usati su Windows ed è indispensabile usare questo tipo se sul sistema ci sono più sistemi operativi, in questo caso l’utente dovrà seleziona NTFS; se invece nel sistema è presente solo una Debian, è conveniente creare le partizioni di tipo Ext4 che è il sistema più moderno usato da GNU Linux, la partizione SWAP ha il proprio tipo dedicato e quello non potrà essere cambiato. Il programma di installazione vi presenta una proposta di partizionamento che prevede solo le due partizioni necessarie e che si può confermare se nel sistema è presente solamente il sistema Debian, se volete modificare la struttura delle partizioni proposte, dovete farle indicando sempre il tipo e le dimensioni delle partizioni che volete creare; da notare che la partizione principale viene sempre indicata con il simbolo “/” chiamata root e indica la cartella madre di tutto il sistema. Per confermare le modifiche scelte basta selezionare la voce dedicata, il programma di installazione provvederà a scrivere le modifiche sul disco, la fase di scrittura su disco può durare parecchi minuti nei quali non bisogna interferire in nessuna maniera.

Attenzione: le operazione di creazione e modifica delle partizioni del vostro disco HardDisk potrebbe causare la perdita dei dati all'interno del vostro sistema, è sempre raccomandato eseguire una copia backup dei dati prima di eseguire l'installazione di Debian e la creazione delle partizioni dedicate.

Dopo aver creato e configurato le partizioni, il sistema vi chiederà la password dell’utente principale che anche questo viene chiamato root, questa password è molto importante visto che con questa utenza è possibile lanciare qualsiasi comando e modificare qualsiasi file, è importante non perderla. Dopo aver inserito la password di root due volte per conferma, il programma di installazione prevede la creazione di un utente, questo avrà una username e una password, queste credenziali saranno usate per accedere la prima volta, ovviamente in un secondo momento sarà possibile creare altri utenti o modificare quello creato durante la fase di installazione.

Dopo gli step di configurazione del sistema base, sono previste la scrittura delle partizioni e la copia del sistema base. Il programma di installazione poi procede con le fasi di censimento degli altri DVD se disponibili e dei mirror ufficiali: Debian infatti può configurare più DVD di installazione ed è possibile fin da questi passi configurare un sito dove il programma di installazione cerca automaticamente aggiornamenti e nuovi pacchetti. In fase di installazione sono configurati solo mirror ufficiali del ramo “stabile”, al termine del programma di installazione è possibile aggiungere mirror non ufficiali e anche di rami delle versioni “testing” di Debian. Se disponibili solo del primo DVD o una chiavetta USB non è necessaria nessuna altra operazione e il sistema automaticamente cercherà i mirror ufficiali in internet, durante questa fase l'unica scelta è quella della nazione del mirror, è possibile scegliere anche il mirror italiano che è sempre molto stabile e sempre disponibile.

Dopo la configurazione dei mirror, il programma di installazione permette di aggiungere alcune sezioni aggiuntive, il mio consiglio è quello di non installare nessun server/demone per velocizzare la fase di installazione del sistema base ma l’unica cosa davvero indispensabile è il server grafico: questo prevede di default il sistema GNOME, ma è già possibile installare anche altri desktop grafici come KDE, XFCE e LXTE, se disponibile sufficiente spazio nel disco è consigliato di installare tutti i desktop in modo da porterli provare e giudicare. Il passo successivo prevede l’adesione ad un programma per il raccoglimento delle informazioni dell’utente con l’invio automatico al sito ufficiale Debian di alcune statistiche dell’uso di Debian compresi bug ed errori dei programmi principali, se non volete aver problemi potete tranquillamente non aderire al programma senza aver nessuno svantaggio, al massimo potete riconfigurare l’adesione dopo la fine dell'installazione con il comando da riga di comando:

# dpkg-reconfigure popularity-contest

L'installazione prosegue con la copia dei pacchetti selezionati in precedenza e ovviamente questa fase non deve essere interrotta per nessun motivo.

L'ultima fase di installazione è la configurazione del programma di avviamento del sistema chiamato bootloader, nei sistemi Debian è prevista l’installazione di Grub, se disponete più sistemi operativi sul sistema questo programma vi permetterà di selezionare quale sistema operativo avviare quando accedente il PC mentre se avete installato solo del sistema Debian vi verrà solo visualizzata una schermata che vi avvisa del caricamento del sistema, in ogni caso GRUB è molto stabile e si configura automaticamente, durante la fase di installazione l’utente deve solo selezionare l’opzione

installare il bootloader nel MBR dell'hardDisk

per installare GRUB nel proprio sistema.

Il programma di installazione termina con l’installazione del bootloader e il riavvio del sistema, ora Debian è disponibile per l’utilizzo.

Al primo avvio la schermata di caricamento è quella del bootloader GRUB che è stata configurata nell'ultimo passo del programma di installazione, se presente un solo sistema operativo compare solo l’opzione di Debian ma se presenti più sistemi operativi compare la lista dei sistemi disponibili con la possibilità di scegliere quale avviare muovendovi nel menù con le frecce della tastiera. Se disponibili più versioni del Kernel Linux installate nel sistema Debian, compare la lista delle versioni con la possibilità di scelta della versione da avviare, questa opzione è molto utile si vuole utilizzare anche la versione testing.

Una volta avviata l’opzione sul sistema GRUB, il sistema operativo avvia tutto il Kernel Linux e i programmi di avvio, in una videata da riga di comando che, se dura pochi secondi in sistemi veloci e recenti, al termine compare la videata grafica di login, questa videata è chiamata GDM (Gnome Desktop manager) che è il componente che permette la login su un desktop: nella videata basta l’username e password dell’utente creato durante la fase di installazione e verrà caricato il desktop Gnome che di default viene installato e configurato, un utente alle prime armi deve avete la pazienza di aprire i menù di Gnome per famigliarizzare con il Desktop principale di Debian.

Nelle precedenti versioni di questo documento, come primo passo dopo la prima login, era quello di procedere con la configurazioni di mirror e siti per l'installazione di programmi non Debian (come browser, multimedia, ecc...), questa configurazione è stato spostata nelle sezioni dedicate ad ogni programma in modo da avere più ordine nel file di configurazione dei mirror. Il programma per gli aggiornamento e le installazioni dei pacchetti è Synaptic dove è possibile vedere l'elenco di tutti i pacchetti disponibili divisi per sezioni e per stato, tramite questo programma grafico è anche possibile tenere aggiornato il sistema scaricando le ultime versioni dei pacchetti dai mirror configurati nel sistema.

Terminata questa fase sarete pronti per usare GNU Linux e Debian.

Dopo aver completato tutti i passi del programma di installazione, il sistema è già quasi completo: di default nell'installazione base è compreso almeno un Desktop comprendente tutte le parti dell’ambiente grafico e sono compresi anche una serie di applicativi che possono essere trovati sul menù principale, in questo capitolo sono descritte le nozioni base che un utente deve avere per potere usare senza problemi una qualsiasi versione di GNU Linux, queste nozioni sono le più varie ma sono indispensabili: risulta impossibile usare GNU Linux senza avere qualche base sistemistica e un po’ di manualità su file e cartelle come la gestione i diritti di lettura e scrittura su file e cartelle. Un utente poco esperto potrebbe spaventarsi e demoralizzarsi di fronte alle nozioni base che sono poco familiari ma, con il tempo, si può prendere confidenza con la shell e i file di sistema così da poter eseguire tutte le configurazioni necessarie. La parte più importante di questo capitolo è sicuramente la sezione dedicata al “montaggio” delle partizioni, argomento fondamentale e centrale.


La prima nozione fondamentale che un utente di GNU Linux deve avere sempre presente è che tutto è un file, il Kernel Linux infatti vede e gestisce tutto come un file: le cartelle, le periferiche come le stampanti, memorie fisse e persino i processi in esecuzione sono interpretati come file che il FileSystem gestisce e amministra. A differenza di altri FileSystem, in GNU Linux le estensioni non sono rilevanti, spesso capiterà di trovare file con estensioni “strane” ad un utente non abituato a tale libertà: un esempio classico è il file sources.list che conterrà una lista di sorgenti come dice il nome e l'estensione: spesso infatti viene usata l’estensione per evidenziare se il file ha un contenuto specifico come liste o configurazioni. Esistono anche file senza estensione come il file fstab, per i sistemi basati su Unix e GNU Linux l’estensione di un file è solo una parte del nome. I file il cui nome inizia per . (punto) sono file nascosti, cioè tipicamente i file manager non vedono questi file a meno di comandi specifici, questi nomi vengono usati dai programmi per creare cartelle e file di configurazioni ma di non dare la possibilità all'utente di modificarli “per sbaglio”.

Altra nozione fondamentale è che in tutti i sistemi GNU Linux la differenza tra maiuscole e minuscole è rilevante: sia i comandi, sia i file è rilevante la presenza di caratteri maiuscoli e bisogna scrivere sempre con attenzione i nomi, tanto che sulla stessa cartella possono persino esistere file con lo stesso nome se scritti con lettere con maiuscole/minuscole diverse.

Lo standard per il file system usato in tutti i sistemi GNU Linux si chiama FSSTND, che impone delle direttive per l'organizzazione dell'albero delle directory nei sistemi: viene usato per la facilità del porting del software per GNU Linux e l'amministrare dei sistemi, dato che tutto si trova nel posto designato per qualsiasi distribuzione che usa questo stardard. Per essere precisi, non c'è nessuna autorità che impone di uniformarsi a questo schema, ma è molto raro trovare distribuzioni che non rispettano. Ulteriori informazioni sui singoli file possono essere trovate in altre parti di questo documento o nelle pagine man dei comandi.

L'albero delle directory completo è concepito in modo che possa essere diviso in parti più piccole, ciascuna sulla sua partizione o nel suo disco se necessario, per ottimizzare i dischi e ridurre le dimensioni delle partizioni. L'albero delle directory è stato strutturato in modo che funzioni bene in una rete di macchine Linux che condividano delle parti del filesystem su un dispositivo a sola lettura (ad esempio un CD-ROM), o sulla rete con NFS. La struttura del filesystem si basa su una radice che viene chiamata root e viene sempre indicata con il carattere

/

questa cartella è specifica per ciascun sistema e rappresenta l'intero sistema: contiene tutti i file necessari per avviare il sistema e per portarlo ad uno stato tale da poter gestire tutte le altre memorie e tutti i dispositivi. Si può affermare, anche se in maniera un po' superficiale, che la root sostituisce quello che nei sistemi MS Windows è il "Risorse del computer", infatti in Linux non potete trovare i dischi (C,D,E, ecc..) ma si possono trovare le principali sottodirectory:

  • /bin Contiene i programmi di sistema utilizzati sia dall'amministratore che dai normali utenti, come ad esempio: ls, cat, cp
  • /boot Contiene tutto quello che è necessario per eseguire il processo di boot del kernel (l'immagine vmlinux e la initrd), configurata in fase di installazione di GRUB
  • /dev Contiene i riferimenti a tutti i dispositivi e le periferiche (HarkDisk, CdRom, stampanti, rete, ecc...)
  • /etc Contiene i files di configurazione degli applicativi e i demoni presenti nel sistema
  • /home Contiene le home directory degli utenti, cioè le informazioni e i file di ogni utente
  • /lib Contiene le librerie necessarie al boot del sistema e all'esecuzione dei programmi
  • /mnt Inizialmente è vuota, come standard viene usata per effettuare il collegamento (mount) di tutte le unità di memoria presenti (HardDisk, cdrom, memorie usb, ecc.. ), talvolta è possibile trovare anche la cartella /media che tipicamente viene usata solo per i dispositivi rimovibili (CdRom, Floppy, USB Disk).
  • /opt Dovrebbe essere vuota inizialmente, in passato veniva usata per gli applicativi del sistema base, oggi viene usata da alcuni applicativi proprietari come google chrome oppure i programmi di AWS
  • /proc Contiene i riferimenti ai programmi in esecuzione (i processi in esecuzione vengono trattati come file)
  • /root La home directory dell'utente root
  • /sbin Contiene i programmi di sistema (system binaries) utilizzati dall'amministratore
  • /srv Contiene alcuni file di configurazione
  • /sys Contiene dei file di sistema
  • /tmp Cartella dei file temporanei (ogni volta che si spegne il pc questa cartella viene svuotata)
  • /usr Contiene le applicazioni (non di sistema) installate nel sistema
  • /var Contiene vari files di sistema come i log e le carelle della posta

Nei sistemi Unix e GNU Linux esistono tre tipi di diritti su un file: scrittura, lettura ed esecuzione rispettivamente identificati con la lettera r, w e x. Ogni file, quindi ogni cosa nel sistema, appartiene all'utente che ha creato quel file che ha sempre i tutti i diritti su quel file. Per ottenere i diritti su un file basta eseguire il comando sulla shell

$ ls -la

che elenca i diritti in una schermata simile a questa:

drwxr-xr-x 2 alnao alnao 4096 2 feb 14:09 DIR1
-rw------- 1 alnao alnao 2615 2 feb 16:28 file1
-rw-r--r-- 1 alnao alnao 1162966 2 feb 19:50 file2
-rwxr-xr-x 1 alnao alnao 1162966 2 feb 19:50 file3

la prima riga descrive una directory, la si può riconoscere dal fatto che la prima lettera è una d, i successivi tre caratteri sono indicati i diritti sull'utente che ha creato quel file, il secondo gruppo di tre si riferisce agli utenti dello stesso gruppo dell'utente creatore del file, mentre l'ultima tripletta descrive i diritti di tutti gli altri utenti. Se è presente la lettera significa che il diritto è attivo mentre se c'è il trattino vuol dire che il diritto che dovrebbe essere presente non è attivo. Da notare che l'utente root root ha sempre tutte le autorizzazioni quindi riuscirà sempre a leggere e a scrivere su tutti i file e su tutte le cartelle. Per cambiare i diritti su un file si può usare il comando chmod, nell'appendice vengono elencati tutti i parametri di questo comando. 

Da notare che il diritto x sostituisce l'estensione su altri sistemi, infatti le estensioni non hanno significato quindi per capire se un file è eseguibile o meno bisogna osservare questo diritto.

Alcune delle configurazioni base devono essere eseguite da riga di comando che in informatica viene comunemente chiamata shell e, più in particolare,  nei sistemi GNU Linux è disponibile il tipo chiamato bash, non bisogna fare confusione: con shell si intende una riga di comando mentre bash è l’interprete dei comandi, in questo manuale faremo sempre riferimento a bash e non verranno introdotte altre tipi di shell anche se in altri manuali potete trovare guide più complete di bash e di altri tipi di shell per GNU Linux. Tipicamente nelle architetture basate sul KernerLinux con la bash sono disponibili 8 “canali” detti anche tty (abbreviazione di TeleTYpewriter), nei sistemi basati su GNU Linux il primo canale è usato dal KernelLinux e in questo canale compaiono i messaggi del sistema mentre il server grafico tipicamente si trova nel settimo canale, dalla versione 10 di Debian il server grafico viene caricato sempre dal secondo canale mentre nel primo c'è una seconda versione del server grafico se si vuole utilizzare la funzionalità multiutente; è possibile passare da un canale ad un altro con la sequenza di tasti ALT + CTRL + F1 dove l’F1 è il numero del canale (ovviamente per il settimo canale si può usare F7).

Il server grafico viene chiamato X-WindowSystem o più semplicemente spesso indicato con X, gestisce l'interfaccia utente ma bisogna ricordare che non esiste un unico desktop: esistono diversi desktop che possono essere installati ed usati anche parallelamente, per passare da un desktop ad un altro basta selezionare il tipo nella schermata durante la fase di login all'avvio del sistema; tranne per qualche raro caso, tutte le applicazioni, possono essere eseguite da qualsiasi tipo di desktop perché tutte le applicazioni si basano sulle librerie del server grafico X (come le librerie Xlib, GTK e Qt), nel prossimo capitolo verranno elencate e descritte le più importanti e utili programmi per GNU Linux. 

Da dentro un desktop grafico è possibile accedere alla shell-bash con i programmi che tipicamente si trovano con il nome di terminal o console, come lxTerminal oppure Konsole per il desktop KDE.


I principali desktop per GNU Linux basati sul server grafico X sono: GNOME, KDE e XFCE mentre quelli leggeri e studiati per essere veloci sono MATE e LXDE, è consigliato di provarli tutti per un po’ di tempo per avere una scelta più accurata, è possibile anche provare i nuovi componenti grafici di Gnome chiamati Gnome Shell con il comando

$ gnome-shell --replace

oppure è possibile attivarle nel pannello di controllo di Gnome stesso.

Una delle esigenze primarie di ogni utente è quello di poter accedere ai propri dati che sono salvati nei vari dischi, gli utenti di altri sistemi operativi sono abituati a identificare le memorie fisiche con delle lettere come C, D, E, ecc... mentre nei sistemi GNU Linux la gestione delle partizioni e delle periferiche di memoria è completamente diversa: la gestione viene chiamata mounting (in Italiano spesso viene tradotto con montaggio), nome che deriva dal comando mount che viene utilizzato per eseguire le configurazioni, infatti le memorie vengono viste dal Kernel Linux come un normale file dentro alla cartella /dev/ e, attraverso il comando mount, si possono collegare ad una cartella per permettere l’accesso al contenuto della memoria.

I file che si trovano dentro alla cartella dev non rappresentano tutta la memoria fisica ma rappresentano una partizione, cioè se in una memoria ci sono più partizioni significa che sono presenti più file che devono essere montati separatamente. Tipicamente questi file hanno il nome del tipo hda1, hda2, hdb1, hdc1, hdd1 oppure sda1, sda2, sdb1; la prima lettera del nome rappresenta il tipo con h=EIDE s=SATA, la seconda lettera è sempre d che significa DISK mentre la terza lettera è un incrementale se ci sono più dispositivi dello stesso tipo (se ci sono due HardDisk il primo sarà “a” mentre il secondo sarà “b”), il numero finale rappresenta la partizione all'interno della stessa memoria fisica. Per poter sapere l’elenco delle partizioni e la struttura delle memorie si può usare il programma gparted dal desktop da installare oppure con il comando

# fdisk -l

Questi programmi presentano l’elenco di tutte le partizioni e, se possibile, anche il tipo, con gparted è anche possibile modificare. Nei desktop recenti, il mount risulta automatico, per esempio con un programma come Dolphin, l'elenco dei dispositivi fissi (come gli hardDisk interni) e i dispositivi mobili (come le chiavette USB) sono elencate nelle risorse ma a volte è necessario eseguire il mount manualmente. Per poter eseguire il mount manualmente, bisogna disporre di una cartella vuota che sarà la destinazione dell’operazione di montaggio, come default viene usata una sotto-cartella di /mnt . Per esempio si può creare una cartella a mano da un file manager oppure da riga di comando con le istruzioni

# mkdir /mnt/Dati
# chmod 666 /mnt/Dati

da notare il comando chmod assegna a tutti gli utenti la possibilità di accedere a tale cartella, questo è indispensabile altrimenti solo l’utente root potrebbe accedere alla memoria montata. Ora siete pronti per lanciare il vostro montaggio, con il comando dalla shell:

# mount -t auto /dev/sda2 /mnt/Dati

con questa istruzione viene montata la partizione hda2 sulla cartella Dati, come parametro mount ha bisogno anche di sapere il tipo di Filesystem della partizione (come ad esempio Fat32, Ext3, NTFS) ma esiste anche il parametro auto che ci semplifica la vita lasciando al sistema il compito di selezionare quello corretto. Il problema del comando mount è che, allo spegnimento o riavvio del sistema, il montaggio NON verrà rieseguito automaticamente, nella prossima sezione saranno configurati i mount in maniera permanente.

Il comando mount permette anche di montare dischi di rete sul sistema locale, la sintassi specifica è

# mount -t cifs //server/nomeCartellaCondivisa /mnt/Dati -o username=XX,password=YY

Eseguire manualmente il mount da riga di comando ogni volta che si avvia il sistema è palesemente una cosa noiosa e scomoda, esiste il modo per rendere queste operazioni automatiche: per rendere definitive queste impostazioni esistono vari modi ma tutti quanti modificano il file di configurazione

/etc/fstab

questo è un file storico dei sistemi GNU Linux e si trova sempre nello stesso posto fin delle prime versioni del sistema, da notare che questo file è sprovvisto di estensione e si trova nella cartella /etc, per modificare questo file da desktop si può avviare come utente root un editor con:

# gedit /etc/fstab

e si può vedere il contenuto del file che all'apparenza complicato ma basta sapere che ad ogni riga corrisponde una memoria montata, nel file infatti basta aggiungere una riga per ogni partizione, per esempio:

/dev/sdb3 /mnt/Dati ext4 user,suid,dev,rw,exec 0 0

dove nella riga sono elencati in ordine: il punto di mount (sorgente e destinazione), il tipo di partizione (con la possibilità di inserire il valore auto) e i vari parametri della partizione, nel nostro esempio umask=000 oppure rw indicano che la partizione è in scrittura e lettura. Per le partizioni di formato GNU Linux come ext non serve indicare l’umask.

Per le chiavette USB o memorie rimovibili si configura la riga:

/dev/sdd1 /mnt/Usb auto user,suid,dev,exec,umask=000,rw,noauto 0 0

con il parametro noauto si indica che il mount non deve essere eseguito automaticamente all'avvio del sistema ma deve essere caricato manualmente. Per rendere effettive le modifiche del file fstab bisogna riavviare il sistema.

Per definire le partizione nel file di configurazione è possibile mappare il riferimento dentro la cartella dev oppure è possibile usare il riferimento UUID, cioè il riferimento assoluto ID che il sistema assegna ad ogni partizione, per visualizzare i riferimenti nel proprio sistema si può usare il comando

# blkid

e poi è possibile modificare il file fstab con la riga:

UUID=1234-5678 /mnt/Dati tipo parametri 0 0 

 questo metodo è consigliato rispetto all'uso del DEV in quanto alcuni sistemi posso cambiare riferimenti alla risorse ogni riavvio del sistema.

Nelle ultime versioni di Debian questa operazione viene eseguita durante la fase di installazione e, una volta terminata l'installazione del sistema base, è possibile vedere il file già ben configurato con tutti i parametri. Da notare che i lettori DVD/CD vengono montate nella cartella media per separare le memorie fisse da quelle rimovibili tuttavia questo non è uno standard ma solo un dettaglio presente in Debian.

E' impossibile utilizzare un sistema Debian senza conoscere almeno le basi della gestione dei pacchetti: si tratta di un argomento fondamentale per chi vuole usare un sistema i pacchetti sono un insieme di file organizzati e compressi in directory in modo che possano essere installati nel sistema velocemente e con ordine; esistono molti modi di compilare e preparare i pacchetti, Debian ha imposto da anni un suo standard che è facilmente riconoscibile per i file di estensione deb mentre altre distribuzioni possono avere altri formati come rpm.

Debian è molto famosa per la gestione eccellente dei pacchetti perché pur contando oltre 25.000 pacchetti riesce a gestire le dipendenze in modo semplice e ordinato, in quanto ogni pacchetto ha una versione e una lista di dipendenze, cioè ogni pacchetto al suo interno ha l'informazione di quali pacchetti sono necessari e con i quali entra in conflitto, per esempio il pacchetto apache2-mpm-prefork dipende dal pacchetto apache2.2-common e entra in conflitto con il pacchetto apache2-mpm, tutto questo dipende anche delle versioni, cioè ogni pacchetto è segnato anche da una versione, per esempio nel mio sistema è installato il pacchetto apache2-mpm-prefork alla versione 2.2.8-3: questo vuol dire che il pacchetto è alla versione 2.2.8 ma è la terza compilazione del pacchetto. Per fortuna i programmi che andremo ad usare gestiscono automaticamente con ordine e precisione i pacchetti quindi l'utente non deve mai preoccuparsi di risolvere le dipendenze.

La gestione di Debian si basa su DPKG (che è l'abbreviazione di Debian PacKaGe), componente principale della distribuzione Debian: è usato per installare, disinstallare ed ottenere informazioni sul singolo pacchetto in formato standard deb. Questo è un tool di basso livello e viene sempre affiancato da APT (che è l'abbreviazione di Advanced Packaging Tool) che è il gestore standard di pacchetti software della distribuzione Debian. Con APT è possibile anche configurare diversi mirror-sorgenti di pacchetti (sorgenti remote in internet, cdrom, DVD).  Tutti i comandi dei due programmi sono:

  • # apt-get update aggiorna la lista dei pacchetti dopo la configurazione di un nuovo mirror
  • # apt-get install nomepacchetto installa il pacchetto nel sistema, scegliendo l'ultima versione disponibile ed risolvendo le dipendenze in maniera automatica (installando i pacchetti necessari e togliendo i pacchetti in conflitto)
  • # apt-get remove nomepacchetto rimuove il pacchetto e tutti i pacchetti che dipendono da esso
  • # apt-get --purge remove nomepacchetto rimuove il pacchetto e tutti i pacchetti che dipendono da esso compresi anche tutti i file di configurazione eventualmente presenti
  • # apt-get upgrade aggiorna tutti i pacchetti se sono disponibili aggiornamenti e verifica tutte le dipendenze delle nuove versioni
  • # apt-get clean cancella tuti i file temporanei di apt-get cioè i file deb scaricati e già installati
  • # apt-get install -f verifica che tutti i pacchetti siano installati e configurati correttamente, in caso di errori sistema automaticamente le dipendenze
  • # dkpg --configure -a come il precedente ma funziona anche in casi estremi e risolve tutti i problemi di conflitto tra i pacchetti
  • # dpkg-reconfigure pacchetto riconfigura un pacchetto già installato
  • # dpkg -i pacchetto installa un pacchetto da un file deb
  • # dpkg -r pacchetto rimuove un pacchetto
  • # dpkg --get-selections > nomefile.txt salva su un file l'elenco dei pacchetti installati
  • # dpkg --set-selections < nomefile.txt imposta i pacchetti presenti sul file
  • # apt-get moo regala all'utente un simpatico messaggio

La lista dei mirror-sorgenti è elencata nel file

/etc/apt/sources.list

e da tutti i file contenuti nella sotto-cartella

/etc/apt/sources.list.d

si possono creare dei file con estensione list per aggiungere altri mirror specifici. In questi file list, ad ogni riga corrisponde una sorgente che può essere un DVD, un mirror in internet oppure una cartella del sistema locale. Ogni riga di questi file è del tipo

deb http://host/debian distribuzione sezione1 sezione2 sezione3
deb-src http://host/debian distribuzione sezione1 sezione2 sezione3

La prima parola di ogni riga (deb o deb-src) indica il tipo di archivio: se contiene pacchetti binari (deb) oppure indica se l'archivio contiene i pacchetti sorgente (deb-src), la seconda parte della riga indica l'indirizzo della sorgente. Nel terzo parametro si indica la distribuzione: di solito si tratta di uno dei tre rami di sviluppo: stable, testing o unstable, oppure è possibile indicare esplicitamente il nome della versione come etch, sid o sarge).

L'elenco delle sezioni indicano quali parti della distribuzione dovranno essere gestite, tipicamente si trova main (i pacchetti completamente liberi) oppure non-free (cioè i pacchetti rilasciati sotto una licenza non libera) oppure contrib (pacchetti liberi che però dipendono da altri non liberi).
Al termine di ogni modifica del file è necessario lanciare il comando:

# apt-get update

In precedenti versioni di questo documento si indicava all'utente di modificare manualmente i file di list per inserire i mirror manualmente, questa operazione manuale è stata sostituita da operazioni più semplici che verranno introdotte man mano che sarà necessario installare pacchetti specifici non compresi nei mirror ufficiali di Debian che sono inseriti in automatico all'installazione del sistema base.

I gestire APT e DPKG non sono stati studiati per essere interfacciati graficamente, quindi sono stati sviluppati e sono presenti in Debian diversi strumenti grafici che permettono di gestire i pacchetti attraverso una interfaccia grafica che può risultare più intuitiva all'utente meno esperto: il più importante programma per desktop per la gestione dei pacchetti è Synaptic che spesso si può trovare nei menù anche con il nome di "Gestore pacchetti", la potenza di questo programma è la semplicità d'uso rispetto ad altri programmi simili come Aptitude e Adept che sono molto più poveri di funzioni. Con Synaptic è possibile vedere la lista dei pacchetti divisi in sezione per argomento (sistema, grafici, editor,...), per stato (installati, aggiornabili, non installati, corrotti), per origine (DVD, debian.org, ecc...) e la possibilità di cercare i pacchetti con una semplice ricerca testuale sui nomi e sulle descrizioni dei pacchetti stessi. La comodità principale di questo programma è la possibilità di gestire gli aggiornamenti del sistema con un semplice click su pulsante.

Nei sistemi Debian è possibile trovare diversi programmi che permettano la configurazione del sistema, nei vari menu dei desktop si possono trovare diverse voci all'interno della categoria Strumenti di sistema però per GNU Linux è stato sviluppato un potentissimo programma per il controllo generale: WebMin che prevedete moltissimi moduli al proprio interno e permette all'utente di amministrare tutti i componenti del sistema, uno dei grandi vantaggi di questo pacchetto è che si tratta di una applicazione web quindi viene usata tramite browser anche da remoto.

Rispetto alle precedenti versioni, WebMin non è più all'interno dei mirror ufficiali di Debian e quindi bisogna configurare una sorgente esterna con i comandi:

# apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl 
# apt-get install libpam-runtime libio-pty-perl apt-show-versions python apt-transport-https
# apt-get install wget net-tools ufw
# cd /etc/apt/sources.list.d/
# echo "deb http://download.webmin.com/download/repository sarge contrib" > webmin.list
# wget http://www.webmin.com/jcameron-key.asc
# apt-key add jcameron-key.asc 
# apt-get update 
# apt-get install webmin
# ufw allow 10000/tcp
# ufw reload
# ufw enable

con questi comandi abbiamo installato dei pacchetti propedeutici, abbiamo scaricato il file list del mirror e la sua chiave di sicurezza, poi con il comando di apt abbiamo aggiornato l'elenco dei pacchetti e installato il programma. Dopo l'installazione è possibile già vedere se è disponibile e funzionante con il comando:

# systemctl status webmin

Se non dovesse essere avviato è possibile lanciare lo start con il comando:

# systemctl start webmin

Per poter accedere al pannello di controllo basta lanciare da un browser l'url:

https://localhost:10000/

nei comandi indicati c'è anche la configurazione del firewall ufw che bloccherebbe l'applicazione trattandisi di una applicazione di rete sulla porta 10000.

All'interno delle ultime versioni di Webmin, c'è la possibilità di collegarsi alla console shell con l'icona >_ presente nel menù di sinistra al tab "dashbord" questo permette di usare il terminale da remoto anche se io lo ritengo molto scomodo.

WebMin è uno strumento molto potente ma anche troppo! Bisogna sempre prestare attenzione alle configurazioni eseguite e controllare più volte le operazioni potenzialmente distruttive per il sistema.

Il programma di installazione prevede la creazione di un primo utente che viene utilizzato al primo accesso, attraverso i vari tool di controllo disponibili è possibile creare e configurare altri utenti se necessario con la possibilità di raggrupparli e gestire l'accesso. Il gestore della login che compare all'avvio del sistema grafico si chiamata GDM (abbreviazione di Gnome Desktop Manager) esistono anche altri gestori ma è sconsigliato l'utilizzo per utente non esperti.

La definizione base che un utente deve sempre aver a mente è che tutto è un file, sorprenderà molto gli utenti meno esperti ma anche i processi e i programmi in esecuzione sono visti come file, potete vederli e "toccarli" accedendo nella cartella /proc/: il sistema di permessi del KernerLinux permette ad un utente di vedere solo i processi da lui lanciati mentre l'utente root può vedere tutti i processi in esecuzione. Ogni processo è rappresentato da un file che contiene un numero identificativo (ID) che può essere usato dai vari comandi della shell per gestire o interrompere il processo tramite i comandi term oppure kill, per chi usa un desktop è possibile terminare un singolo programma con i vari gestori dei processi presenti nei menù dei desktop con il nome di Monitor di sistema mentre se è utilizzata la shell è consigliato l'uso del programma top che di fatto è un piccolo task manager semplice ed efficiente.

In GNU Linux tutte le interfacce di rete sono amministrate da due componenti del Kernel chiamate netfilter e iptables e possono configurate dalla shell oppure da programmi grafici compreso WebMin, dalla shell potete usare i comandi

# ifconfig

e

# route

per avere delle informazioni sulle configurazioni base però nei vari menù dei desktop potete trovare i programmi di gestione come Net configuration. Per le reti WiFi, i componenti base si chiamano wireless-tools e wicd (iwconfig) ma i due programmi principali per la gestione sono incompatibili e bisogna decidere quale dei due usare, io consiglio il primo che viene installato di default assieme ad iptables ma potete decidere per il secondo per installarlo vi basterà installare i pacchetti :

# apt-get install wireless-tools network-manager-gnome

oppure per il secondo

# apt-get install wicd

e lanciando il comando

# iwlist scan

potete visualizzare tutte le reti wireless che il vostro dispositivo riesce a trovare. Dovete però prima ricordarvi di configurare correttamente la vostra interfaccia WiFi (scheda interna o penna USB), l'elenco dei dispositivi compatibili è disponibile all'indirizzo web debian.org.

Uno degli errori più comuni degli utenti comuni è pensare che esistono applicazioni per il normale utilizzo di un computer, la verità è che esistono migliaia di applicazioni che rendono i sistemi GNU Linux completi e perfettamente utilizzabili senza alcun problema. Basta infatti aprire il programma di gestione dei pacchetti Synaptic e usare la funzionalità di raggruppamento per categoria per rendersi conto delle migliaia di applicazioni disponibili nei repository Debian: oltre alla numerosità delle applicazioni, grazie a Synaptic, è possibile sfruttare la gestione dei pacchetti di Debian per evitare il problema delle dipendenze quindi un utente non deve preoccuparsi di nulla e non deve nemmeno preoccuparsi del desktop utilizzando: tutte le applicazioni sono compatibili con tutti i desktop disponibili (KDE, Gnome, Xfce, Lxde, ecc...) e sarà possibile passare da un desktop ad un altro utilizzando le stesse applicazioni senza notare differenze, tutto questo perché le librerie grafiche si basano sul demone grafico X e non sul singolo desktop.

Tutti i pacchetti disponibili sui server mirror di Debian sono totalmente gratuiti e scaricabili dai mirror internet, su altri mirror non ufficiali è possibile scaricare altri programmi gratuitamente, per esempio il mirror di Google permette il download e l'installazione del browser Chrome, mentre se un utente vuole acquistare e installare un programma a pagamento deve installarlo manualmente, per fortuna i produttori creano dei pacchetti Debian pre-generati già installabili. Purtroppo non esiste un elenco completo ed ufficiale di tutti i programmi disponibili, questo perché i programmi vengono creati quotidianamente e certi progetti chiudono per l’insuccesso di una applicazione o la sua scarsa utilità, un elenco molto completo e mia personale fonte di ispirazione per questo capitolo è la pagina disponibile al sito debianizzati con tutti i link alle varie pagine di dettaglio.

In aggiunta al repository ufficiale Debian e ai repository proprietari, come quello di Google, è possibile usare anche il gestore snapd, un servizio web che mette a disposizione pacchetti scaricabili e funzionanti. Il consiglio è di usare questo servizio solo per quelle applicazioni o quei pacchetti che non si trovano nei repository ufficiali Debian ed è quello che verrà fatto in seguito. Per installare Snapd basta installare il pacchetto snapd, da non confondere con il pacchetto snap che invece riguarda una applicazione scientifica. Una volta installato il pacchetto è possibile vedere l'elenco dei pacchetti installati sul sistema con Snapd con il comando:

$ snap list

correttamente senza la lettere d finale in quanto il pacchetto ha la lettere finale per indicare che si tratta di un demone mentre il comando è senza la finale. Per installare un programma con questo servizio basta usare il comando:

$ snap install nomeprogramma

l'elenco di tutte le migliaia di programmi disponibili si trova nel sito ufficiale snapcraft.io.

Gli utenti di GNU Linux devono aver confidenza con i file di testo per modificare alcuni vari file di configurazione, anche se può sembrare antiquato agli utenti meno esperti, in realtà è molto più semplice e veloce di quanto possa sembrare.

Sui sistemi basati su Debian è possibile trovare facilmente alcuni editor di testo più o meno complicati a seconda delle esigenze: per la shell da riga di comando esistono i famosi (e storici) programmi vim e emacs, forse troppo complicati per utenti poco esperti, i programmi più semplici da usare sono pico e nano che risulta molto semplice da usare visto che con la pressione del tasto CTRL è possibile cambiare dalla modalità editor a menù e viceversa.

Per gli ambienti grafici desktop sono disponibili vari programmi nei menù, tipicamente ogni desktop ha il proprio programma di default ma nessuno vieta di usare altri programmi anche di altri desktop, per esempio il programma di default di KDE è kEdit ma è possibile usare anche i programmi di GNOME come gEdit oppure mousepad. Tuttavia il programma più completo è Kate che, oltre ad essere un semplice editor di testo, può essere usato per programmare grazie al suo plugin di riconoscimento dei linguaggi di programmazione oppure può essere usato per la scrittura di documenti. 

Come già visto più volte, i file possono avere nomi ed estensioni ad apparenza ``strani'' e molti file di testo non hanno estensione il classico ``txt'' che di solito si trova su altri sistemi operativi, dobbiamo sempre tenere a mente che sui sistemi basati su GNU Linux le estensioni non hanno molto valore se non per pura naming-convention o estetica: molti file hanno estensione conf e tipicamente si trovano nella cartella /etc o una sottodirectory ma alcuni file hanno nomi non parlanti o posso essere senza estensione come il file fstab

Da snapd è possibile scaricare il famoso Notepad++ oppure nei repository ufficiali è possibile selezionare jEdit, questi due programmi sono i più famosi e potenti programmi per la modifica di file dei testo.

Per esplorare e navigare tra le varie cartelle del sistema, oltre che alla riga di commando, è possibile utilizzare i tanti programmi file manager, tipicamente ogni Desktop ha il proprio file manager di default e spesso in un desktop è possibile trovarne anche più di uno, il programma predefinito sul Desktop KDE è Konqueror e può essere usato anche in altri desktop, anche se è un programma molto vecchio è ancora usatissimo come file exploper ed è stato migliorato molto tanto da diventare uno dei miglioro programmi per muoversi tra le varie cartelle del sistema.La potenzialità maggiore è quella di poter visualizzare l’albero delle cartelle, inoltre nelle versioni più recenti sono stati integrati anche un visualizzatore di immagini, un piccolo editor di testo e il sistema veloce per gestire i file archivi (come zip e tar), un semplice visualizzatore di file PDF è stato integrato proprio di recente anche se non è molto pratico da usare, nelle impostazioni del programma nel menù Settings è possibile trovare e gestire tutti i vari plug-in. Grazie a Konqueror è possibile anche gestire i più comuni protocolli di rete, per collegarsi ad un altro computer tramite il protocollo Samba basta inserire il comando:

smb://nomeserversamba

per collegarsi ad un altro computer di rete. Oppure si può usare il classico:

ftp://ftp.debian.org

per collegarsi ad un server attraverso il protocollo ftp, oppure:

sftp://ssh.sito.org

per collegarsi attraverso il protocollo ssh/stp ad un server.

Altra applicazione da provare è dolphin che presenta una interfaccia molto semplice e veloce, pur non disponendo di plugin, rimane il più intuitivo programma per navigare tra le cartelle, anche in questo programma sono disponibili i plugin per visualizzare l'albero delle cartelle, ovviamente questo è compatibile con tutti i Desktop e permette anche di avere una shell in basso alla finestra che segue l'utente nella navigazione dell'utente nelle cartelle.

Ovviamente un utente può benissimo usare un qualsiasi altro programma disponibile sui Desktop oppure basta aprire Synaptic per installarne decine, lo storico commander può essere trovato con il nome di Midnight Commander oppure Gnome Commander.

Gli standard di compressione del mondo GNU Linux si chiamano tar, gz e bz), ma possono essere usati anche altri formati come i più famosi zip e rar, per riconoscere in quale formato è compresso un file basta guardare l’estensione del file, da notare che le estensioni possono essere composte: per esempio un file può avere estensione nomefile.tar.gz oppure il semplice nomefile.zip. Visto che il formato rar è un algoritmo proprietario e non free, per poterlo usare è necessario installare i pacchetti rar, rar-2.80, unar e unace-nonfree che potete trovare nei repository "non free" nel mirror.

Per usare lo standard TAR da riga di comando, i principali comandi sono:

  • $ tar -cf namefiletar.tar file1 file2 ... per creare un file non compresso nel formato tar
  • $ tar -xf namefiletar.tar per estrarre un file non compresso nel formato tar
  • $ tar -czf namefiletar.tar.gz file1 file2 ...  per creare un file compresso nel formato tar e gzip
  • $ tar -xzf namefiletar.tar.gz per estrarre un file compresso nel formato tar e gzip

I principali parametri del comando tar sono:

  • c per creare
  • x per estrarre
  • v per vedere la lista dei file contenuti in un TAR
  • z per creare/estrarre un file compresso con gzip
  • j per creare/estrarre un file compresso con bzip2
  • Z per creare/estrarre un file compresso con compress

Per chi usa invece un desktop ci sono varie possibilità, il migliore programma che avete a disposizione è un programma chiamato Gestore di archivi che potete trovare sul menù Accessori di tutti i desktop (potete trovarlo anche con il nome file-roller), con questo semplice programma potete creare, comprimere e decomprimere file compressi in tutti i formati. Se invece usate Konqueror o Dolphin, potete usare il sistema integrato per la gestione dei sistemi di compressione chiamato ark che deve essere installato dal gestore dei pacchetti Synaptic e vi permetterà di gestire tutti i formati con pochi click: basta cliccare con il tasto destro del mouse su file o directory per avere la funzionalità "Comprimi" o su un singolo file compresso per avere la funzionalità di decompressione.

Nel mondo GNU Linux e Debian potete trovare moltissimi programmi per la navigazione internet e la gestione delle mail, il browser più famoso in assoluto per GNU Linux è Firefox ma sui sistemi Debian, per questioni di policy sul software libero, è possibile trovarlo anche con il nome di IceWeasel. E' consigliato di installare da Synaptic anche il pacchetto flashplayer-mozilla se necessario avere il plugin per l’esecuzione dei flash e di installare il pacchetto totem-mozilla per la visualizzazione di video e filmati direttamente sul browser. Sui sistemi GNU Linux potete usare anche altri programmi come Amaya, Konqueror ed Epiphany.

Per installare il browser Opera è necessario aggiungere il repository proprietario e poi installare il pacchetto con i comandi:

# wget -qO- https://deb.opera.com/archive.key | sudo apt-key add -
# add-apt-repository "deb [arch=i386,amd64] https://deb.opera.com/opera-stable/ stable non-free"
# apt install opera-stable

Per il browser Google Chrome è consigliato scaricare e installare la versione attuale:

# wget -qO - https://dl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmor -o /usr/share/keyrings/googlechrome-linux-keyring.gpg
# echo "deb [arch=amd64 signed-by=/usr/share/keyrings/googlechrome-linux-keyring.gpg] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list
# sudo apt update
# sudo apt install -y google-chrome-stable

da notare che questa installazione va automaticamente ad aggiungere il repository per i successivi aggiornamenti.

Nei repository ufficiali di Debian è disponibile anche Chromium: un web browser open source da cui deriva Google Chrome, inizialmente l'idea di Google era quella di mantenere un solo progetto ma alla fine si sono creati due progetti paralleli che hanno sviluppi simili ma non uguali tanto che i browser hanno comportamenti non uguali.

Per quanto riguarda i programmi per gestire le mail potete usare il programma di Firefox che potete trovare con il nome di Thunderbind Mail oppure con il nome IceDove, però potete usare anche altri programmi nativi come Evolution, Balsa, Gnus e Pine.

I migliori programmi per le chat e l’instant messaging per GNU Linux sono Pidgin (ex Gaim), kMess e aMSN, per installare il programma Skype nel sistema basta scaricare e installare il pacchetto con i comandi:

# wget https://go.skype.com/skypeforlinux-64.deb
# wget apt install skypeforlinux-64.deb

però è possibile usare anche altri VoIP-client come Ekiga, WengoPhone e Asterisk.

Per Discord basta scaricare il pacchetto dal sito ufficiale, con i comandi:

# wget "https://discordapp.com/api/download?platform=linux\&format=deb" -O discord.deb
# dpkg -i discord.deb

Anche per quanto riguarda la multimedialità nei sistemi GNU Linux sono presenti moltissimi programmi, non solo per la visualizzazione dei video ma anche per l'editing video e sono disponibili plugin per tutti i formati; inoltre in tutte le distribuzioni sono presenti i programmi e i driver per vedere la TV con il computer, ovviamente questo è possibile se, nel proprio pc, è presente un dispositivo di acquisizione TV come le chiavette USB.

Prima di tutto bisogna scaricare ed installare i Codec, cioè le librerie necessarie per poter codificare i vari formati, per questa installazione basta usare Synaptic e controllare che i seguenti pacchetti siano già installati nel vostro sistema:

  • libavcodec57
  • libavdevice57
  • libdvdnav4
  • libdvdread4
  • mpeglib (se presente)
  • libavformat57
  • libxvidcore4

La base del sistema audio è il sottosistema ALSA, responsabile di tutti i suoni prodotti dal sistema, ad oggi non ci sono più problemi per la compatibilità con le varie schede audio delle tante marche di computer quindi automaticamente il sistema installerà ALSA e vi installerà anche una serie di pacchetti per l'uso della stessa scheda, compreso il programma per gestire i volumi e la riproduzione dei suoni base, è possibile trovare la lista dei programmi nella categoria Multimedia.

Per la visualizzazione dei video c'è l'imbarazzo della scelta: il più famoso è Totem, lettore molto semplice e comodo, in tutti i desktop è il programma di default. La lista dei player di file multimediali è lunghissima ed eviterò di annoiare il lettore (come sempre ho cercato di fare in questo documento), sono elencati solo i programmi degni di nota:

  • VLC famoso player gratuito disponibile anche su altre piattaforme
  • Codeine programma molto semplice e con le scalette di produzione
  • KPlayer simile a Totem anche se incompleto in alcuni punti
  • Amarok programma per ascoltare musica avendo la possibilità di creare una playlist
  • Kaffeine buon programma per ascoltare musica
  • MPlayer player di video
  • Noatun player di video

Per poter visualizzare i filmati nel formato di RealPlayer bisogna scaricare e installare il pacchetto disponibile sul sito RealPlayer, esistevano delle librerie che permettevano la visione dei file RealPlayer anche su Totem e su tutti i player di Linux ma sono stati rimossi perché non rispecchiamo le linee guida di Debian.

Chi dispone di una scheda di acquisizione TV di tipo DDT (digitale terrestre) può tranquillamente vedere i canali: Debian contiene dei programmi per guardare la tv e registrare i propri programmi preferiti, una lista parziale dei programmi a disposizione:

  • kradio per ascoltare la radio
  • kdetv il più semplice programma funzionante per vedere la tv
  • XawTV semplice anche con qualche bug
  • XdTV programma non ufficiale di Debian
  • KPlayer normale player che riesce anche a sfruttare una scheda tv riproducendo i canali
  • Zapping semplice programma per vedere la tv
  • MythTV è certamente il più famoso ed il più usato

Per GNU Linux esistono anche una lunga lista di programmi per la manipolazione e l'editing audio e video che si basano tutti sui comandi da riga di comando convert, i quattro programmi principali sono Sweep, Kwave, Audacity e Avidemux, i primi tre sono utili per modificare file audio come mp3, il quarto è un semplice programma che serve per modificare, concatenare i file video, in particolare Avidemux è un programma molto utile anche perché è compatibile con tutti i formati se i codec sono installati nel sistema.

Per Debian è disponibile anche il famoso programma OBS, questo permette di eseguire registrazioni video e di eseguire streaming su alcune piattaforme come Twitch. Il programma è disponibile nel repository ufficiale di Debian con il nome di obs-studio.

Per chi volesse creare il proprio DVD può provare ad usare il programma mandvd, questo programma permette di aggiungere i tuoi video al progetto del DVD, assegnare un immagine per creare il tasto di selezione di ciascun video, creare dei video slideshow delle tue foto (con o senza musica di sottofondo); alla fine del progetto, si converte il tutto nella classica struttura DVD, e si sceglie se masterizzare il progetto con K3B oppure creare un immagine ISO, scelta utile in caso ci sia la necessita di fare più copie. Per chi volesse invece rippare un DVD può usare dvdriv, un piccolo programma di utilità che permette la copia di DVD su Linux.

Per chi volesse installare ed usare spotify può configurare la versione pronta per l'uso disponibile su snap oppure può scaricare la versione dal mirror proprietario di spotify e installare il player con le istruzioni:

# add-apt-repository "deb [arch=i386,amd64] http://repository.spotify.com stable non-free"
# apt-get update
# apt-get install spotify

Su Synaptic potete trovare un elenco completo di tutte le applicazioni disponibili su Debian per la visualizzazione e l'editing di immagini e foto, dovete tenere presente anche che ogni desktop manager ha il proprio programma di visualizzazione delle immagini, è consigliato provare tutti i programmi già disponibili prima di scegliere un uno specifico. Per prima cosa dovete sapere che lo standard di GNU Linux per le immagini è il png anche se potete trovare e usare tranquillamente i formati jpg o gif.

Tra i programmi per la modifica delle immagini è disponibile il famoso programma GIMP (GNU Image Manipulation Program), che è il più famoso programma di GNU Linux per la modifica delle immagini e uno dei più usati al mondo visto che è disponibile su tutte le piattaforme ed è completamente gratuito, le ultime versioni sono veramente all'altezza dei rivali.

Per la grafica 3D è disponibile il famoso Blender anche se, in questo caso, conviene usare la versione su Snapd in quanto è una versione più recente; mentre è possibile usare Dia che permette di creare diagrammi di flusso, circuiti elettrici, grafici UML, diagrammi di rete, diagrammi E-R ed altri ancora.

Per la gestione dello scanner sono disponibili i programmi sane e xSane ma è possibile usare anche lo stesso GIMP.

In questa sezione sono elencate tutte quelle applicazioni molto utili che non rientrano in nessun altra categoria già presentata ma che meritano di essere brevemente descritte e provate. All'interno dei desktop manager principali è possibile trovare installati automaticamente dei PDF reader però si possono installare programmi evoluti come kPDF e pdfedit, questo secondo permette di modificare file in formato PDF. Senza alcun dubbio K3B è la migliore applicazione per GNU Linux per la masterizzazione di CD-ROM e DVD, sorprende sempre la velocità e la semplicità d'uso di questa applicazione anche se per masterizzare è possibile scegliere anche altri programmi come GnomeBaker, Nero for GNU Linux, oppure i comandi da riga di comando cdrecord e growisofs mentre per creare dischi-video potete provare VCDImager.

Per i servizi dropbox esiste il pacchetto dedicato ufficiale, purtroppo non è nei repository ufficiali è necessario scaricare il pacchetto manualmente perché non esiste repository dedicato, per l'installazione veloce basta eseguire i comandi

# apt install nautilus-dropbox 
$ wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
$ ./.dropbox-dist/dropboxd 

al termine dell'installazione dovrebbe aprirsi automaticamente un browser per la autenticazione e la configurazione della cartella base del sistema di dropbox, al termine bisogna comunque riavviare. Se si usa il browser GNOME è necessario installare la estensione topicons plus e il pacchetto libclouldproviders0 per visualizzare l'icona di dropbox nella barra del sistema.

Per il controllo remoto dei sistemi è possibile usare i vari programmi e protocolli: con i sistemi GNU Linux si usa il protocollo specifico RDC con i vari programmi di gestione come KRDC, è possibile usare anche i protocolli di Microsoft per collegarsi a sistemi Windows sempre con il programma KRDC oppure è possibile installare ed usare teamviewer, bisogna però scaricare il pacchetto deb dal sito ufficiale ed installarlo manualmente con i comandi

# apt-get install qml-module-qtquick-controls qml-module-qtquick-layouts
# apt-get install qml-module-qtquick-dialogs qml-module-qtquick-controls 
# apt --fix-broken install
# dpkg -i teamviewer_15.3.2682_amd64.deb

A differenza di quello che si pensa, GNU Linux ha una grandissima varietà di giochi ed è ormai superfluo dire che questi giochi possono funzionare indipendentemente dal desktop usato, questa lista comprende passatempi, come solitari e arcade, oppure giochi più complicati, come gare d'auto e sparatutto, non poteva mancare anche una versione di Mame, il famoso emulatore di ROM di giochi delle vecchie console, ricordando che è illegare giocare con ROM se non si possiede il gioco originale.

Una lista completa di tutti i giochi disponibili è disponibile nel sito ufficiale e una lista dei migliori:

  • SuperTux: versione di SuperMario con un pinguino (simbolo di GNU Linux) come protagonista
  • SupertuxKart: semplice gare d'auto sempre con pinguini come protagonisti
  • KMines: versione di Minesweeper detto anche campo minato o fiorito
  • FreeCiv: versione (molto semplice) di Civilization
  • Flight Gear: simulatore di volo
  • Wormux: versione semplice di Worms
  • Torcs: gioco di gare d'auto 3D
  • Nequiz versione di Quake
  • Urban terror gioco sparatutto, simile a Unreal Tournament, non disponibile sui mirror ufficiali
  • KSirk: versione di Tetris
  • Mame: motore per l'emulazione dei giochi-ROM arcade

Alcuni di questi giochi necessitano della accelerazione grafica quindi è necessario installare i driver della scheda video (come ATI o NVIDIA), nella sezione dedicata è spiegato come installare questi driver.

Il gioco Minecraft è disponibile per GNU LINUX: dal sito ufficiale è possibile scaricare che risulta molto veloce, una volta scaricata la versione basta lanciare il jar auto-installante per avere il gioco disponibile nel proprio sistema. Il pacchetto di Minecraft è disponibile per l'installazione anche da Snapd.

Cedega è stato un progetto per far funzionare giochi e programmi compilati per Microsoft Windows sui sistemi GNU Linux, il progetto era a pagamento acquistabile direttamente dal sito ufficiale, purtroppo da qualche anno il progetto è stato abbandonato e non è più consigliato usare tale programma.

Per i sistemi GNU Linux e Debian è disponibile l'installer di Steam direttamente nei mirror ufficiali, purtroppo però disponibile solo per le architeture i386 e non per i sistemi a 64bit come i più recenti, per installare il pacchetto infatti basta aggiungere l'architettura per poi toglierla se necessario:

# dpkg --add-architecture i386
# apt-get update 
# apt-get install steam
# dpkg --remove-architecture i386

E' possibile installare anche il programma di EpicGames per l'installazione di giochi, prima di iniziare però è necessario installare il famoso tool di wine con i pacchetti

# apt-get install wine e wine-tools

e poi bisogna configurare il repository

# echo "deb http://download.opensuse.org/repositories/home:/strycore/Debian_10/ ./" | sudo tee /etc/apt/sources.list.d/lutris.list
# wget -q https://download.opensuse.org/repositories/home:/strycore/Debian_10/Release.key -O- | sudo apt-key add -
# sudo apt-get update
# sudo apt-get install lutris 

poi basta scaricare il programma installer dal sito ufficiale di Epic e installarlo con il "Apri con" di wine.  All'interno di Lutrus bisogna cercare Epic Games Store e procedere con la installazione indicando la home dell'utente. Alla fine di questo processo basta lanciare l'icona disponibile nel menù per avviare il programma di Epic che poi permette di scaricare e installare i giochi nel sistema. L'installer di Epic potrebbe avere dei problemi perchè wine presenta dei bug che impediscono il corretto funzionamento su alcuni sistemi.

In informatica non esiste uno standard che definisca esattamente cosa è un server e cosa è un servizio, la differenza spesso non è così evidente e i termini vengono spesso confusi anche a causa di traduzioni non precisissime, in questo documento non sono presenti definizioni o trattati tecnici a riguardo e verrà usato il termine demoni (deamon in inglese), termine usato quasi sempre nel mondo GNU LINUX.

Con le dovute cautele prendiamo per vera la definizione più usata cioè che un demone è un processo in esecuzione in background sempre attivo, senza il bisogno di un gestione diretta dell'utente e che risponde quando viene invocato, un esempio classico è il demone CUPS che gestisce le stampe, questo rimane attivo in background e resta in ascolto finché qualcuno non lo invoca lanciando una stampa. GNU Linux e Debian forniscono una numerosa proposta di demoni e anche di programmi per l'iterazione con i quelli attivi sul sistema, per esempio il programma netstat permette di monitorare l'interfaccia di rete e di elencare tutte le informazioni utili (socket aperti, routing tables, processi, ecc...) visto la maggior parte dei demoni è disponibile via rete con i protocolli TCP/IP, per ottenere l'elenco completo di tutti i processi attivi in un sistema basta lanciare il comando:

# netstat -l | grep tcp

Per avere un quadro completo della situazione, bisogna anche guardare il file:

/etc/services

dove sono indicate tutte le porte numeriche ad una descrizione del servizio associato.

Una caratteristica base di tutti i sistemi operativi derivati da Unix (tra i quali appunto GNU Linux e Debian) è che qualsiasi elemento del sistema viene visto come se fosse un file, anche i demoni sono dei file anche se un bel po' speciali e si possono osservare in maniera dettagliata: lo strumento principe per questo scopo è lsof (LS Open Files), per esempio se con netstat abbiamo visto che netbios è arrivo sul nostro sistema, basta lanciare il comando:

# lsof -i 

per avere in risposta l'elenco dettagliato di tutti i demoni in esecuzione con tutte le informazioni, per esempio:

smbd 4089 root 21u IPv4 8082 TCP *:netbios-ssn (LISTEN)

E' anche possibile lanciare il comando:

# lsof -i | grep www

per vedere se il demone Apache è attivo nel sistema.

Da notare che in GNU Linux quasi tutto è un demone, il sistema di stampa e la condivisione di file in rete sono gli esempi più semplici e in questo capitolo vedremo come installare i più semplici e utili demoni disponibili nella nostra distribuzione, notare che quando abbiamo installato il sistema base, abbiamo già installato alcuni demoni tra qui il demone grafico X (con i desktop) e il sistema della shell che usiamo per lanciare i comandi.

Per quanto riguarda i demoni specifici di web-server e database vengono presentati nella sezione dedicata alla programmazione, in questa sezione sono presentati solo i demoni utili per l'utilizzo generico in modo da permettere ad un lettore di poter saltare il capitolo della programmazione se non interessato all'argomento.

In GNU Linux la gestione dei servizi per stampare e la gestione delle stampanti come periferiche viene gestito dal progetto CUPS che mette a disposizione un insieme di demoni e programmi per stampare, il problema principale è che non tutte le case produttrici di stampanti sviluppano driver per i sistemi GNU Linux, la situazione è molto migliorata nell'ultimo decennio e ormai tutte le stampanti di ultima generazione hanno driver disponibili automaticamente su Debian oppure è possibile usare un driver generico che funziona su tutti i modelli di una generazione. Il demone CUPS (acronimo di Common UNIX Printing System) è semplice come installare tutte le applicazioni che abbiamo già visto: con Synaptic bisogna installare i pacchetti cups, apsfilters e foomatic-db senza il pacchetto lpr che è un sostituto molto vecchio di CPL.

Una volta installato il tutto, basta aprire un browser e andare all'indirizzo:

http:\\localhost:631\

per accedere al programma web di gestione del server di stampa. Da questa comoda interfaccia si possono gestire le stampanti (installarle, cancellarle, fermarle) e si possono anche gestire i processi di stampa. Oltre all'interfaccia web di CUPS, i vari Desktop manager mettono a disposizione vari programmi per la configurazione le stampanti ancora velocemente.

Per condividere una stampante locale in rete basta installare anche SAMBA e dal condivisione potrà essere configurata direttamente dal pannello di amministrazione.

Il servizio per la condivisione di file, cartelle periferiche in una rete LAN è compreso nel KernelLinux e non deve essere installato nessun pacchetto supplementare: il protocollo SSL è disponibile grazie ai pacchetti openssh-server e openssh-client. Per collegare due o più nodi con i sistemi GNU Linux basta collegarsi usando il protocollo ssh o sftp, standard ormai usato in tutti i sistemi. Se nella rete invece sono presenti nodi con altri sistemi operativi è necessario usare il servizio di rete Samba che permette di condividere file e stampanti tra i vari sistemi operativi, per attivarlo vi basta installare il pacchetto Samba: il demone della condivisione con il protocollo NetBios usato dal sistema operativo MsWindows e anche dai sistemi operativi di Apple. La configurazione del demone può essere fatta nel file specifico:

/etc/samba/smb.conf

modificando il file manualmente si possono aggiornare le sezione già presenti oppure aggiungere le righe mancanti, la sezione global permette di configurare il server base, per esempio:

[global]
workgroup = nomeRete
server string = Linux Samba Server \%v
netbios name = nomeComputer
security = user
dns proxy = no
server signing = auto
encrypt passwords = yes

alla riga workgroup è indicato il nome della rete o del dominio, in server-string una breve descrizione della rete che verrà visualizzata nella rete, netbios-name è il nome con cui gli altri punti raggiungeranno quest, le altre configurazioni devono essere copiate così come indicate. Per aggiungere una cartella condivisa basta aggiungere il blocco di configurazioni alla fine del file:

[Dati]
comment = Dati condivisa
path = /mnt/Dati/
writeable = yes
browseable = yes
guest ok = no
read only = no
create mask = 0666
directory mask = 0777
#guest ok = yes
#valid users = singoloUtente
#valid users = @gruppoUtenti

dove il nome tra parentesi quadre sarà il nome visualizzato sugli altri computer così come il commento, su path si deve indicare la cartella locale, gli alti parametri sono molto auto-parlanti, notare che le righe che iniziano con il carattere # sono tutti commenti e non sono attivi, sono presenti in questo esempio per elencarvele; è possibile inserire più condivisione inserendo più blocchi di questo tipo.

Per le condivisioni delle stampanti basta aggiungere il blocco di configurazioni oppure modificare quello già presente:

[printers]
comment = All Printers
path = /usr/spool/samba
browseable = no
guest ok = yes
writeable = yes
printable = yes

Fino alle versione 8 di Debian era presente anche un software web per la configurazione di Samba ma swat è stato tolto dai repository quindi vi sconsiglio di installarlo perché non più aggiornato. Dopo ogni modifica del file di configurazione bisogna però riavviare il server con il comando

# systemctl restart smbd

Tipicamente il firewall di GNU Linux è configurato di default per bloccare tutte le connessioni "sconosciute", comprese le connessioni generate dalla rete nella LAN, quindi una volta configurate le condivisioni SAMBA è consigliato di controllare il firewall: per abilitare la rete basta verificare che i nodi della rete (gli indirizzi IP) non vengano bloccati, in tal caso dovete abilitare gli indirizzi IP ad accedere al vostro sistema, potete usare il programma e inserire l'IP del vostro sistema nella sezione Trust per abilitare le condivisioni. L'alternativa è permettere a tutti di accedere al servizio Samba, aprendo il firewall a tutte le connessioni con i comandi:

# ufw allow 139
# ufw allow 445

Da notare che l'accesso è limitato agli utenti del computer in cui è in esecuzione il demone, quindi si dovrà fare l'autenticazione con username e password, anche se si è all'interno di un dominio di rete. Se non si è all'interno di un dominio gestito bisogna, per ogni utente abilitato alla connessione, settare la password di accesso via Samba con il comando:

# smbpasswd -a <nomeUtente>

così sarà possibile accedere via Explorer inserendo nella barra degli indirizzi l'indirizzo IP preceduto da due parre oppure eseguendo il mount con il comando dalla console dei comandi di MsWindows:

net use L: \\myserver\myshare /u:myuser mypassword

Un runlevel è uno stato logico del sistema in cui è possibile eseguire un insieme di operazioni, nei sistemi basati su Debian si usa lo standard SysV ed esistono 7 livelli, tutti i livelli sono basati su script eseguiti come link e contenuti in una cartella predefinita

/etc/init.d

questi script vengono usati anche per controllare i demoni: avviare un demone all'avvio del sistema e poi spegnere il demone prima dello spegnimento del sistema, nel dettaglio per esaminare come è composta questa sezione basta osservare il contenuto della cartella

# ls -la /etc/init.d/

questi script devono prevedere almeno uno dei tre parametri: start, stop e restart, eventualmente possono avere anche reload, stats e status; per esempio per avviare il demone apache basta lanciare lo script corrispondente con il parametro "start". Tutti questi script sono collegato con un link in alcune directory dedicare al singolo demone, questo per differenziare i vari comandi e permettere le esecuzioni degli script in maniera automatica al momento giusto.

I livelli dei demoni sono :

  • 0 = Quando il sistema si trova in questo in questo stato, vengono arrestati tutti i demoni, smontate le periferiche e viene preparato per lo spegnimento.
  • 1 = In questo stato, è consentito l'accesso ad un utente solo, e gran parte dei servizi non vengono avviati; è usato prevalentemente per la manutenzione straordinaria del sistema.
  • da 2 a 5 = Modalità Normali: In Debian non esistono distinzioni tra gli stati 2, 3, 4 e 5 e viene lasciata all'utente la possibilità di modificarli. Di default viene utilizzato il 2.
  • 6 = Quando il sistema si trova questo stato, viene preparato per un riavvio; avvengono tutte le cose indicate per il runlevel zero, ma viene inviato un segnale di reboot invece che di shutdown.
  • S = Runlevel speciale, che viene eseguito sempre al boot della macchina, prima di passare al runlevel di default.

Nelle precedenti versioni di Debian i runlevel erano configurabili tramite un sistema chiamato inittab e le configurazioni del sistema erano indicate nel file

/etc/inittab

dove venivano definiti i comportamenti principali del sistema e per ogni riga del file:

id:runlevel:azione:comando

venivano definire le informazioni:

  • id = identificativo di rappresenta di una voce specifica dell'inittab
  • runlevel = quali runlevel deve essere analizzata l'istruzione, con uno o più runlevel
  • azione = l'azione da compiere (per es. "wait" per attende il termine dell'esecuzione del comando, "respawn"

il comando indicato viene eseguito ciclicamente ogni volta che esso termina, "boot" il comando viene eseguito durante il boot e il contenuto di runlevel viene ignorato); si inittab erano presenti gli script /etc/init.d/rcS con la funzione di invocare tutti gli script "S*" (cioè file che iniziano per S maiuscola) contenuti nella cartella /etc/rcS.d/ in ordine numerico/alfabetico; lo script /etc/init.d/rc si occupa di lanciare, in ordine numerico/alfabetico, gli script presenti in /etc/rcX.d/ partendo per quelli "K*" per passare a quelli "S*" e accetta come parametro il numero del runlevel.

Il nuovo sistema di gestione introdotto con la versione 8, si chiama Systemd e sostituisce inittab, questo nuovo demone per la gestione centralizzata del sistema definisce alcuni comandi molto utili:

  • $ systemctl la lista di tutti i demoni disponibili
  • $ systemctl status mostra lo stato del sistema generale
  • $ systemctl status apache2 mostra lo stato di un particolare demone
  • # systemctl start apache2 lancia l'avvio di un demone
  • # systemctl stop apache2 ferma immediatamente un demone in esecuzione
  • # systemctl restart apache2 ferma e poi avvia un demone in esecuzione

per maggiori informazioni sul questo sistema di gestione dei demoni è disponibile la pagina ufficiale.

Anche se è considerato deprecato dalla versione di Systemd, è ancora possibile usare il file

/etc/rc.local

che contiene tutti i comandi eseguiti all'avvio del sistema, è sempre sconsigliato modificare questo per evitare di compromettere l'avvio del sistema e il corretto funzionamento del sistema ma se necessario è possibile aggiungere righe con istruzioni da eseguire all'avvio dei demoni prima della riga "exit 0", per esempio è possibile aggiungere la cancellazione di tutti i file dentro alle cartelle del cestino, questo è possibile inserendo la riga

#rm -r /home/alnao/.local/share/Trash/files/*

Per amministrare al meglio questi componenti potete modificare i file e gli script a mano oppure io consiglio di usare il pannello webmin dove è disponibile tutta una sezione per la gestione e la modifica dei componenti dei runlevel, nell'ambiente grafico è possibile trovare l'applicazione rcconf disponibile sui repository Debian e quindi installabili tramite Synaptic.

Un demone base di tutti i sistemi GNU Linux si chiama crontab e permette la schedulazione e l'esecuzione di comando ad un orario e/o frequenze prefissati, tale demone viene lanciato in backgrouond all'avvio del sistema e si basa sul file di configurazione

/etc/crontab

per le voci di sistema (chiamate entry) e i file contenuti nelle cartelle:

/etc/cron.d/
/var/spool/cron/crontabs

in questa ultima cartella si trova un file per ogni utente dove sono contenute le schedulazioni personalizzate dall'utente visto che di default tutti gli utenti su Debian possono eseguire il comando crontab e possono schedulare script o programmi a meno che non siano censiti nel file /etc/cron.deny, tutti i job di ciascun file sono caricati in memoria e rimangono finché non il demone crontab non viene spento o riavviato.

Ci sono alcune cartelle di Cron molto importanti:

  • /etc/cron.hourly: in questa directory sono contenuti gli script da eseguire ogni ora
  • /etc/cron.daily: in questa directory sono contenuti gli script da eseguire ogni giorno
  • /etc/cron.weekly: in questa directory sono contenuti gli script da eseguire ogni settimana
  • /etc/cron.monthly: in questa directory sono contenuti gli script da eseguire ogni mese

La data/ora in cui vengono eseguiti gli script contenuti in queste directory è quella specificata nel file

/etc/crontab

In questi file ogni riga corrisponde ad un comando da eseguire e devono seguire il seguente schema:

* * * * * comando

dove in questo schema ogni carattere * corrisponde ad una "colonna" di schedulazione:

  • la prima colonna sono i minuti (indicata con m) con il range 0-59
  • la seconda colonna sono le ore (indicata con h) con il range 0-23
  • la terza colonna è il giorno del mese (indicato con dom) con il range 1-31
  • la quarta colonna è il mese (indicato con mon) con il range 1-12
  • la quinta colonna è il il giorno della settimana (indicato con dow) con il range 0-6 dove 0 è la domenica

per esempio la riga

12 * * * * /mnt/Dati/daEseguire.sh

esegue il comando tutti i giorni, a tutte le ore al minuto 12, oppure

30 * 7 * * /mnt/Dati/daEseguire.sh

esegue il comando il settimo giorno del mese a qualsiasi ora ma al minuto 30.

Si possono anche mettere combinazioni di numeri, per esempio un range indicando "1-10" si indica tutti i minuti da 1 al 10; un elenco per esempio "1,12,31" avvia ai minuti 1,21 e 31; indicare la frequenza per esempio "*/2" indica da eseguire ogni due minuti, un esempio pratico è:

6-12 */2 1,3,6,10 * * /comando/da/eseguire 

dove vengono indicati tutti i minuti da 6 a 12, ogni due ore, nei giorni 1,3,6,10 del mese, di tutti i mesi. Altro esempio

*/30 13,20 * 1-7,9-12 1-5 /comando/da/eseguire

il comando verrà eseguito nei giorni feriali (da lunedì a venerdì) di tutti i mesi tranne agosto, alle 13,00 - 13,30 - 20,00 - 20,30. Quando si scrivono questi comandi bisogna ricordarsi di analizzare anche dove vengono eseguiti: di default vengono eseguiti in background e un utente eventualmente collegato al sistema non si accorge di nulla, per esempio se si vuole visualizzare la finestra ad una certa ora questa non verrà visualizzata sul desktop se non si indicano i giusti parametri nel comando cron: prima del comando bisogna indicare "DISPLAY=:0.0 " che indica al cron di eseguire il comando indicato nel desktop attivo e non in background, in questo caso un esempio è:

23 21 * * 1 DISPLAY=:0.0 /home/alnao/messaggio.exe

Bisogna sempre tenere conto che cron esegue gli script al momento indicato solo se il sistema è acceso e il server crontab è avviato, se il sistema è spento o se il demone crontab viene arrestato, il comando non viene eseguito nemmeno quando crontab viene avviato successivamente.

Come indicato per altri demoni, anche questo demone può essere facilmente configurato da WebMin senza la necessità di modificare il file a mano ma basta utilizzare l'interfaccia web per configurare il demone della schedulazione.

Per il controllo da remoto dei sistemi potete usare rdesktop che è compatibile con quello di MsWindows e potete provare il programma TeamViwever che permette di controllare da remoto in maniera indipendente.

Uno dei programmi più usati è VNC, per installare VNC dovete installare i pacchetti

x11vnc vnc-java

impostare la password con il comando:

# x11vnc -storepasswd

poi dovete controllare sul vostro eventuale firewall se avete "aperte" le porte 5800 e 5900, per avviare il server nella sessione corrente basta lanciare il comando

$ x11vnc -forever -usepw

per avviare il server vnc all'avvio del sistema bisogna modificare il file:

/etc/gdm3/Init/Default

e aggiungere la seguente riga prima del comando exit 0 (senza l'andata a capo):

x11vnc -noxdamage -noxfixes -noxdamage -passwd PASSWORD -display :0 -forever -o /var/log/x11vnc.log -bg -rfbport 5900

Il pacchetto xrdp è una implementazione per GNU Linux del protocollo RDP sviluppato da Microsoft, grazie a questo demone è possibile utilizzare un sistema GNU Linux come server RDP quindi una postazione di un sistema di desktop remoto, dando la possibilità ad un sistema Windows di collegarsi con il suo client di Remote-Desktop. Per funzionare correttamente, il sistema xrdp necessita del server grafico X e di un desktop manager configurato. Da notare che il collegamento con questo sistema non usa la stessa sessione, come con VNC, ma con Xrdp si crea una nuova sessione sfruttando la tecnica del multi-utente oltre all'ovvio multi-tasking.

Dopo la installazione del demone bisogna attivare la sicurezza, perché il pacchetto base non imposta alcuna sicurezza e chiunque può collegarsi al sistema, per impostare la sicurezza basta modificare il file

#nano /etc/xrdp/xrdp.ini

e bisogna aggiungere la riga

encrypt_level=high

Tipicamente la porta usata dal server è la 3389, che nei sistemi GNU Linux è bloccata, per sbloccarla basta modificare il file

/etc/polkit-1/localauthority.conf.d/02-allow-colord.conf

aggiungendo la riga

ufw allow 3389/tcp

Come client è possibile utilizzare il programma Remmina, grazie al quale è possibile utilizzare il protocollo RDP.

In questa sezione sono brevemente elencati i più comuni demoni che possono essere installati e configurati su un sistema GNU Linux, un lettore interessato a questi demoni può cercare maggiori informazioni nelle varie documentazioni ufficiali.

Se si vuole installare un demone FTP, la scelta più semplice è ProFTPD che si installa semplicemente scegliendo il pacchetto proftpd-basic da Synaptic (oppure da riga di comando tramite apt), l'installazione del pacchetto il sistema configurerà automaticamente tutto con dei valori di default che permettono già di usare il protocollo, grazie alle configurazioni base ogni utente di sistema può accedere con un client FTP alla home directory degli utenti (/home/username) con le credenziali del sistema. Se volete approfondire e configurare il server manualmente, il file principale delle configurazioni è

/etc/proftpd/proftpd.conf

ma vi consiglio di usare WebMin per le varie configurazioni avanzate.

Se si necessita di un Proxy per la vostra rete LAN, i sistemi GNU Linux dispongono di un server molto potente di nome Squid, ma vi sconsiglio di installarlo se non ne avete bisogno in quanto il server potrebbe rallentare il sistema anche se non lo utilizzate, questo demone ha una vasta varietà di usi: rendere più veloce un demone web usando una cache per richieste ripetute e fornisce un servizio di ottimizzazione per la cache di rete anche per l'uso di risorse condivise all'interno della rete e, infine, filtri sul traffico permesso o bloccato.

Per quanto riguarda i sistemi di protocolli cifrati, Linux dispone di SSH (Secure SHell) che permette di stabilire una sessione remota cifrata ad interfaccia a linea di comando con un altro host. Il client SSH ha una interfaccia a linea di comando simile a quella di telnet e rlogin, ma l'intera comunicazione (ovvero sia l'autenticazione che la sessione di lavoro) avviene in maniera cifrata, per questo motivo, SSH è diventato uno standard di fatto per l'amministrazione remota di sistemi Unix e GNU Linux e di dispositivi di rete. SSH è sempre installato di default all'installazione del sistema base e potete usarlo (da rete), per attivare SSH su Apache (per attivare l'https) bisogna andare nella cartella

/etc/apache2/mods/ 

e lanciare

# a2enmod ssl

e generare il cerficato ssl

# apache2-ssl-certificate

oppure

# apache-modconf apache-ssl

(dovrebbe creare due file nella cartella /etc/apache2/ssl/) per gestire tali certificati conviene usare WebMin.

Postfix è un demone mail e potete installarlo dal pacchetto omonimo e per le configurazioni conviene sempre usare WebMin oppure cercare i vari file di configurazioni a mano, per i servizi pop e imap è necessario installare e configurare courier sempre tutto tramite WebMin, è consigliato anche provare PostfixAdminm: una applicazione web per la gestione del demone mail ma solamente se è veramente usato, altrimenti è sconsigliata l'installazione di un demone così pesante se inutile.

Il famoso demone Mono è il progetto di lunga data per far funzionare codice e programmi scritti con linguaggio Microsoft.NET negli ambienti GNU Linux, per installarlo consiglio di riferirsi alla documentazione ufficiale in quanto è un progetto in continua evoluzione e presenta molto frequentemente aggiornamenti anche corposi, anche in questo caso è sconsigliata l'installazione se non usato.

In questo capitolo non sono esposte le varie teorie sulla programmazione e non è nemmeno una guida ai vari linguaggi di programmazione ma vengono presentati e introdotti gli strumenti e i comandi che un programmatore ha a disposizione per lavorare e divertirsi (perché dovrebbe essere anche un divertimento oltre che un lavoro) e sono presenti anche semplici esempi di codice nei vari linguaggi di programmazione solo per le verifiche base.

La base della programmazione è la scelta del compilatore e dell'editor e del SDK: anche i più semplici editor testuali come Gedit e Mousepad mettono a disposizione la formattazione automatica dei vari linguaggi di programmazione riconoscendo dal tipo di file il tipo di linguaggio mentre per la compilazione la riga di comando è sempre disponibile. Vengono introdotti alcuni SDK per velocizzare tutta la fase di sviluppo come Eclipse o MsCode.

Bisogna sempre ricordare che i linguaggi nativi con cui è scritto GNU Linux e la maggior parte dei programmi sono il C e il C++, tanto che la maggior parte delle API del sistema operativo sono scritte in questi linguaggi ed è possibile trovare molta documentazione a riguardo in internet, tuttavia negli ultimi anni, con la diffusione dei nuovi linguaggi di programmazione, è possibile lavorare in Java, in Perl o in Python con la massima compatibilità delle API del sistema operativo.

Oltre ai tradizionali linguaggi di programmazione possiamo scrivere semplici script per la shell in un linguaggio unico nel suo genere: sh che risulta il più importante linguaggio di scripting, verranno esposti alcuni semplici esempi.

Nei sistemi operativi GNU Linux è possibile creare semplici ed efficaci script in un linguaggio chiamato sh, basta infatti creare un file con estensione sh e renderlo eseguibile con il comando chmod:

# chmod a+x file.sh

Spesso questi script vengono usati per creare funzioni di installazione, oppure per semplificare la vita ad un utente creando dei veri e propri piccoli programmi per la gestione del sistema (per esempio gli script per l’avvio e l’arresto di un demone o di un singolo programma). I file di script si possono riconoscere semplicemente perché iniziano per con:

#!

che indica al kernel che lo script è direttamente eseguibile, e lo si fa immediatamente seguire a quel simbolo il nome della shell o del programma da eseguire, per esempio il più usato è sh e tutti gli script iniziano con la prima riga

#!/bin/sh

In questo tipo di script, oltre a tutti i comandi della shell, è possibile usare le variabili utilizzando il suffisso $ e con i simboli $# si indicano i parametri arrivati da riga di comando oppure $- indicano le opzioni della shell oppure $$ indicano il pid del processo, per l'elenco completo delle variabili disponibili è possibile cercare nelle varie guide on-line. Per interagire da riga di comando l'utente si può utilizzare il comando read per permettere all'utente di inserire dei valori da tastiera, per esempio un semplice programma:

#!/bin/sh
echo "Inserisci una frase \c"
read param
echo param=$param

C'è anche la possibilità di creare funzioni con lo standard

nomeFunzione () { comando1; comando2; }}

e c'è anche la possibilità di utilizzare la programmazione strutturata con i comandi standard della programmazione, IF, CASE, FOR, WHILE, ecc..., riporto qui un elenco dei comandi più comuni:

#!/bin/sh
if [ $# -ge 2 ]
then
echo $2
elif [ $# -eq 1 ]; then
echo $1
else
echo Nessun input
fi
case $1 in
a|ab) echo A;;
b) echo B;;
c*) echo C;;
*) echo D;;
esac
for file in *.old
do
newf=`basename $file .old`
cp $file $newf.new
done
while [ $# -gt 0 ]
do
echo $1
shift
done

Un piccolo esempio di script che io uso per eseguire il backup del mio sistema è

#!/bin/sh
#backup.sh script di AlNao
FileDest="/mnt/Dati/backup/"`eval date +%Y%m%d`""
echo "Informazioni sul sistema:"
echo -e "hostname: $HOSTNAME"
echo -e "hardware: $HOSTTYPE"
echo -e "OS: $OSTYPE"
echo "Informazioni sull'utente:"
echo -e "logname: $LOGNAME"
echo -e "homedir: $HOME"
echo -e "shell: $SHELL"
echo -e "path: $PATH"
echo "Backup totale nella cartella ${FileDest}"
mkdir $FileDest
du -H -m -d1 /home/alnao/ > $FileDest"/homeAlnao.txt"
df -a > $FileDest"/situazioneDischi.txt"
cp -R /home/alnao/.thunderbird/ $FileDest"/thunderbird"
echo "IceDove-thunderbird FATTO "
cp /etc/apache2/apache2.conf $FileDest
cp /etc/fstab $FileDest
cp /etc/rc.local $FileDest
cp /mnt/Dati/backup.sh $FileDest
cp /home/alnao/.bashrc $FileDest"/bashrc.txt"
cp /mnt/Dati/akane.sh $FileDest"/akane.sh"
echo "File di Sistema FATTO "
cp -R /mnt/Dati/AlNaoDebianHandBook $FileDest"/AlNaoDebianHandBook/"
echo "AlNaoDebianHandBook FATTO "
mysqldump -u root -p'A.1234qaz' --opt MyDb > $FileDest"/MyDb.sql"
mysqldump -u root -p'A.1234qaz' --opt AlNaoWordpress > $FileDest"/AlNaoWordpress.sql"
chmod 777 -R $FileDest"/"
echo "Permessi impostati su 777 su tutta la cartella"
echo "Finito"}

I linguaggi C e il C++ sono i due linguaggi base di tutto il mondo GNU Linux, chiunque voglia scrivere e/o modificare programmi deve conoscere un po' di questi linguaggi. Il compilatore principale e più usato è g++ (g plus plus), che si trovare anche con il nome di gpp nell'elenco pacchetti. Il compilatore viene sempre installato in automatico nell'installazione del sistema base e non può essere tolto perché serve a moltissime applicazioni e risulta spesso indispensabile per il funzionamento del sistema base.

Esistono due metodi principali per eseguire la compilazione di un file C/C++: via terminale oppure utilizzare un ambiente di sviluppo integrato, per poter compilare dei sorgenti è consigliabile installare il pacchetto build-essential infatti, dopo averlo installato, potete tranquillamente scrivere il vostro codice in un editor di testo qualunque, come Gedit, poi salvarlo con estensione .cpp per poi eseguire i comandi:

$ g++ nomef.cpp

comando che lancia la compilazione del file .cpp e, se la compilazione non da errori, genera un file chiamato a.out che è il nostro eseguibile, per lanciarlo basta eseguire

$ ./a.out

ed ecco il nostro programma in esecuzione nel terminale.

Essendo C e C++ molto usati in GNU Linux, esistono moltissimi ambienti di sviluppo grafici (IDE o SDK) che permetto all'utente di scrivere progetti, anche di grandi dimensioni, e di compilare senza dover usare la riga di comando, alcuni presentano anche dei correttori automatici, auto-complete (nel caso del C++) ed altre funzionalità molto utili, i più famosi sono Anjuta, Kdevelop, Geany e BlueFish anche se in realtà è consigliato utilizzare Eclipse con l'estensione per C/C++ scaricabile dal sito ufficiale oppure Visual studio Code introdotto in uno dei prossimi articoli.

LAMP è un acronimo che indica una piattaforma per lo sviluppo di applicazioni web che prende il nome dalle iniziali dei componenti software con cui è realizzata:

  • Linux: il sistema operativo
  • Apache: il Web server
  • MySQL: il database management system
  • Php e/o Perl: i linguaggi di scripting

Anche se i primi tre componenti sono demoni vengono posizionati in questo capitolo in quanto è impossibile dividere i demoni Apache e Mysql dal linguaggio Php (o Perl). Per l'installazione di tutta l'architettura bisogna installare in sequenza i componenti del demone web Apache e del demone database MySql assieme alle librerie per il linguaggio Php, la configurazione è molto più complicata di come è descritta di seguito e lo scopo di questo documento è solamente quello di mostrare una installazione funzionante con le configurazioni base, se vengono usati questi demoni in aziende per scopi commerciali è necessario approfondire l'argomento affidandovi anche alla guida ufficiale di Apache e di Mysql nei rispettivi siti web, se invece un lettore non fosse interessato ad usare un demone web/database può benissimo saltare questa sezione perché l'installazione e l'uso del server Apache è una cosa indipendente dal resto del manuale. Secondo alcuni articoli in internet : il vero matrimonio del secolo è tra Apache-PHP-MySQL.

Per l'installazione basta installare i pacchetti:

# apt-get install apache2 mariadb-client mariadb-server php7.4 php7.4-mysql libapache2-mod-php7.4

A questo punto abbiamo già terminato l'installazione in quanto i pacchetti sono già auto-configurati per funzionare dopo l'installazione ed è possibile verificare il funzionamento del demone web, andando all'indirizzo in un browser:

http://localhost/

e dovrebbe comparire la pagina di benvenuto di apache dal titolo Apache2 Debian Default Page.

Se un programmatore vuole configurare Apache inserendo una nuova cartella web deve andare a modificare i file di configurazione del server Apache, purtroppo non ho ancora trovato una applicazione in grado di farlo in maniera efficiente e completa questo perché questi file sono molto complicati. Per attivare una nuova applicazione web è necessario modificare il file di configurazione di Apache

/etc/apache2/apache2.conf

controllando che nel file siano presenti le seguenti righe:

ServerName localhost
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

e, se si vuole configurare la cartella per ogni utente

UserDir public_html
<Directory /home/*/pubblic_html>
Options Indexes SymLinksIfOwnerMatch IncludesNoExec
</Directory>

notare che alcune righe potrebbero essere già presenti ma precedute dal simbolo # che è il simbolo per commentare una riga, in questo caso basta cancellare il carattere cancelletto.

Con l'ultimo blocco è stato configurato una cartella web per ogni utente configurato nel sistema, cioè basterà andare sulla home di un utente, creare una cartella con il nome public_html e questo sarà accessibile dal web all'indirizzo:

http://localhost/~nomeutente/

A questo punto, per rendere effettive le modifiche fatte sul file, dobbiamo riavviare il server con l'istruzione:

# systemctl restart apache2 

La cartella web virtuale di default è la cartella /var/www/ ma è consigliato non utilizzarla in fase di sviluppo ed è possibile configurare sottocartelle: per creare una propria cartella web basta modificare il file di configurazione aggiungendo:

Alias "/Php/" "/mnt/Dati/Php/"
<Directory "/mnt/Dati/Php/">
Options Indexes FollowSymLinks Includes
AllowOverride All
Order deny,allow
Allow from all
Require all granted
</Directory>

dove è stata creata una cartella web virtuale con il nome Php e che punta alla cartella /mnt/Dati/Php (bisogna sempre ricordarsi di prestare la massima attenzione alla differenza maiuscole/minuscole!). Dopo aver riavviato il server si può accedere alla nuova cartella web all'indirizzo

http://localhost/Php/

Dopo aver configurare Apache si può configurare anche il demone database MySql, che è disponibile sui repository con il nome di MariaDB per questioni di tipo legali e copyright, abbiamo già installato i pacchetti principali (mariadb-client e mariadb-server) quindi ci basta accedere per la prima volta alla console di mysql dalla shell con il comando

$ mysql_secure_installation

oppure impostando a mano le password di root con i comandi dalla console mysql

$ mysql
use mysql;
UPDATE user SET password=PASSWORD('password') where User='root';
GRANT ALL ON *.* TO 'alnao'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
quit;

poi bisogna riavviare il demone database con il comando

# systemctl restart mariadb

per rendere effettive le modifiche alla password di root. Altro piccolo script da eseguire per prova sul database è:

$ mysql
USE test;
SHOW TABLES;
CREATE TABLE prova (Nome char(120), Sito char(120));
INSERT INTO prova (Nome,Sito) VALUES ('Alberto Nao','www.alnao.it');
SELECT * FROM prova;

e il risultato dovrebbe essere una tabella. Con questi comandi abbiamo creato una piccola tabella nel database test, è stata inserita una riga sulla tabella e l'ultima query visualizza la riga appena inserita, in questo modo sono state eseguite tutte le istruzioni base del demone MySql.

Per quanto riguarda l'applicazione-sito PhpMyAdmin, dalla versione 10 di Debian, non è più disponibile nei Repository ufficiali e deve essere scaricato manualmente dal sito ufficiale e posizionato in una cartella per poi lanciare i comandi di configurazione (per la configurazione dei permessi e del apache.conf).

Al posto dell'ormai obsoleto PhpMyAdmin è consigliabile usare programmi più evoluti per la gestione del database come MySql-Workbench, per installarlo basta lanciare i comandi (tramite snap):

apt-get install spap
snap install mysql-workbench-community

Per quanto riguarda la programmazione Web con i linguaggi di scripting Php o gli altri linguaggi, ci sono moltissimi programmi grafici che permettono lo sviluppo, alcuni esempi sono: screem, BlueFish, QuantaPlus anche se è consigliato l'utilizzo di Eclipse o Visual Studio Code.

Il rapporto tra GNU Linux e Java è sempre stato un po' travagliato e in certe distribuzioni non si può installare le versioni ufficiali del compilatore e della JVM, questo perchè la Sun e Oracle, che hanno da anni i diritti sul linguaggio e sui compilatori, non hanno mai rilasciato versioni free ma solamente versioni proprietarie e alcune a pagamento, questo portò molte distribuzioni a togliere le versioni ufficiali java e comprendere alcune JVM (Java Virtual Machine) alternative e libere (come Cacao, Javacc, Gcj). Fortunatamente, Oracle ha deciso di rendere libero delle ultime versioni della JVM, rilasciando alcuni componenti che sono stati aggiunti nelle liste ufficiali dei pacchetti Debian, questi pacchetti portano il nome sun-java oppure oracle-java e comprendono anche del codice sorgente di esempio e un semplice kit di development.

L'ambiente Java runtime in Debian, cioè il famoso JRE, si può trovare nei pacchetti openjdk-11-jre oppure le versioni precedenti a seconda della versione richiesta, la versione 11 dovrebbe essere istallato in automatico all'installazione iniziale del sistema base mentre il pacchetto per il plugin per browser era icedtea-8-plugin ma oggi è considerato obsoleto.

Se è presente LAMP nel sistema è possibile aggiungere il demone Tomcat per utilizzare le vostre applicazioni web che usano servlet e applicazioni in Java o semplici JSP. Per l'installazione i passi da seguire sono veloci: Debian mette a disposizione dei pacchetti già preconfigurati con delle impostazioni base adatte a chi vuole programmare in locale, è ovvio che Tomcat necessita di configurazioni avanzate se il server deve essere usato come server di produzione ma, se lo scopo è usarlo come server di sviluppo, è possibile sfruttare le configurazioni base che Debian vi mette a disposizione; dopo aver verificato di aver installato il LAMP correttamente, vi basta installare tutti i pacchetti che iniziano con il nome tomcat9 e l'installazione è terminata, poi dovete modificare il file:

/etc/tomcat9/tomcat-users.xml

dove vengono censiti gli utenti che possono accedere alla console di amministrazione di Tomcat, per esempio dovete aggiugnere la riga:

<role rolename="manager-gui" />
<role rolename="admin-gui" />
<user username="root" password="mypassword" roles="manager-gui,admin-gui"/>

ovviamente all'interno del root-tag <tomcat-users>, fatto questo dovete riavviare Tomcat con il comando:

# systemctl restart tomcat9

e provare ad accedere alla console all'indirizzo web

http://localhost:8080/manager/html

potete installare le vostre applicazioni web sotto forma di file WAR (Web Application aRrchives) oppure nel formato EAR (Enterprise ARchives) oppure all'indirizzo

http://localhost:8080/docs/manager-howto.html

è possibile trovare una piccola documentazione su Tomcat.

Se usate Eclipse per lo sviluppo di applicazioni Java J2EE, potete collegare il vostro ambiente di sviluppo con il server web per gestire il demone direttamente dalla vista Server di Eclipse, bisogna infatti configurare il server nelle preferenze ma, per praticità e semplicità, è consigliato creare un duplicato del server installato: in questo modo ci saranno due demoni Tomcat attivi nel sistema: quello del sistema già auto-configurato automaticamente e quello gestito da Eclipse in parallelo per lo sviluppo, per configurare questa logica basta creare una cartella di link virtuali da di comando:

mkdir /usr/share/tomcat9
cd /usr/share/tomcat9
ln -s /var/lib/tomcat9/conf conf
ln -s /etc/tomcat9/policy.d/03catalina.policy conf/catalina.policy
ln -s /var/log/tomcat9 log
ln -s /var/lib/tomcat9/common common
ln -s /var/lib/tomcat9/server server
ln -s /var/lib/tomcat9/shared shared
chmod -R 777 /usr/share/tomcat9/conf

e bisogna poi impostare nelle preferenze di Eclipse un server di tipo "Tomcat 9" nella cartella

/usr/share/tomcat9/

successivamente nel workspace viene creato da Eclipse in automatico un progetto Servers con alcuni file di configurazione del demone, in questo progetto è presente un file server.xml dove è indispensabile impostare le porte HTTP diverse da quelle di default perché sono già occupate dal demone del sistema, per esempio basta cambiare 8080 in 8081 (per le applicazioni) e 8005 in 8082 (per la parte amministrativa del demone).

Se si vuole installare la versione di maven specifica è possibile installare il pacchetto omonimo oppure scaricare direttamente l'installer e seguire i vari passi dalla guida ufficiale

# wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz -P /tmp
# sudo tar xf /tmp/apache-maven-*.tar.gz -C /opt
# mv apache-maven-3.8.4/ maven/
# nano /etc/profile.d/maven.sh
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export M2_HOME=/opt/maven
export MAVEN_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}
# chmod +x /etc/profile.d/maven.sh
# source /etc/profile.d/maven.sh
$ mvn -version

Python è un linguaggio di scripting universale, molte applicazioni lo usano per tutte le operazioni di scripting, per esempio WebMin è basato su questo linguaggio e il pacchetto principale è indispensabile ed è già installato. Per installare il pacchetto di enviroment basta lanciare

apt-get install python3-venv

e poi si può testare l'ambiente di sviluppo con i comandi che creano un semplice file e lo eseguono:

$ pico ciao.py
import random
print ( random.choice(["Sasso","Forbice","Carta"]) )
$ python3 -m venv venv
$ python3 ciao.py

Come ambiente di sviluppo è possibile usare Eclipse o MsCode ma è consigliato l'uso di Atom nativo proprio per Python, questo è disponibile su snap e installabile con il comando

# snap install atom --classic

oppure è possibile configurare il repository apt dedicato di ATOM

# wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -
# sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list'
# apt-get update
# apt-get install atom

e poi comunque è suggerito aggiungere sul file .bashrc un alias

alias py='python3.9'

così sarà possibile usare l'abbreviazione py da riga di comando.

Per gli sviluppi delle nuove tecnologie web i moduli più utilizzati sono NodeJs e NPM che sono indispensabili per sviluppare con tecnologie come Angular e React, per l'installazione può essere fatta con i pacchetti ufficiali con i comandi

# apt-get install nodejs npm curl
# curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
# apt-get install -y nodejs
# node --version
# nodejs --version
# npm install -g @angular/cli

Per testare il funzionamento di angular basta creare il progetto vuoto con:

$ ng new prova
$ cd prova
$ ng serve

e poi andare all'indirizzo della applicazione web locale:

http://localhost:4200/

Per testare il funzionamento di react basta creare il progetto vuoto con

$ npx create-react-app prova
$ cd prova
$ npm start

e poi andare all'indirizzo della applicazione web locale:

http://localhost:3000/

nei prossimi articoli sarà usato NPM per installare pacchetti non legati alla programmazione come AWS-SLS.

Un Software Development Kit, o SDK, è un insieme di strumenti che consente lo sviluppo di software o firmware per una specifica piattaforma, i due programmi gratuiti più usati al mondo sono Visual Studio Code di Microsoft ed Eclipse, chi scrive questi articoli li usa entrambi, tipicamente il primo per tutti i linguaggi tranne Java con il quale è conveniente usare il secondo.

Visual Studio Code, programma rilasciato da Microsoft gratuitamente anche per la piattaforma GNU Linux, può essere usato per quasi tutti i linguaggi, ad oggi è il miglior programma gratuito e può essere facilmente scaricato dal sito di microsoft, le istruzione per l'installazione variano spesso quindi bisogna sempre controllare alla pagina ufficiale la sezione dedicata a Debian. Ad oggi esistono più modi di configurare il repository e installare il programma, per esempio:

# apt-get install software-properties-common apt-transport-https curl
# curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
# add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
# apt-get update
# apt-get install code

Poi infatti basta lanciare il comando dal menù del desktop. Da notare che questo programma ha integrato il plug-in per usare GIT e una console integrata per il lancio dei server NPM e NG per React e Angular. Come per gli altri sistemi operativo anche su GNU Linux è possibile scaricare i plug-in disponibili per tutti i linguaggi come Java o C.

Eclipse, essendo bastato su Java, ha sempre avuto un rapporto di amore-odio con il mondo GNU Linux, in particolare con le distribuzioni Debian. Nonostante sia presente nei repository ufficiali, è consigliato scaricarlo dal sito ufficiale visto che non necessita di nessuna installazione oppure è possibile scaricarlo da snap con il comando:

$ snap install eclipse

e poi è possibile scaricare dal marketplace all'interno del programma i plugin più usati come:

  • Eclipse enterprise java and web dev tools 3.16 (o più recenti)
  • Eclise JST server adapters
  • Eclipse Web developer tools 3.16 (o più recenti)
  • maven 1.2.0 (o più recenti)
  • PhP development tools 7.0 (o più recenti)
  • spring tools 3.9.13 (o più recenti)

Per quanto riguarda la programmazione in Python è consigliato l'uso di Atom già presentato nella sezione dedicata.

Per gli ambienti GNU Linux sono disponibili molti diversi DBMS, oltre al MySql che già è stato indicato nella sezione dedicata è possibile usare facilmente altri tipi basi di dato. Per quanto riguarda il PostgreSQL sono disponibili i pacchetti pronti, infatti basta installare i pacchetti

# apt-get install postgresql-13 postgresql-all ufw

e poi bisogna modificare il file di configurazione

# pico /etc/postgresql/11/main/postgresql.conf

verificando che siano presenti le righe non commentate (senza il cancelletto iniziale)

listen_addresses='localhost'
port = 5432

da notare che di default è permesso solo l'accesso da locale, è possibile modificare questa impostazione valorizzando con asterisco per l'apertura a tutto il mondo. Successivamente bisogna aprire le porte di rete e configurare le utenze

# ss -tunelp | grep 5432
/sbin/ufw allow 5432/tcp
systemctl restart postgresql
su - postgres
$$ psql -c "alter user postgres with password 'parolaSegreta'"
$$ createuser prova
$$ createdb testdb -O dbuser1
$$ psql
=# \c prova
=# alter user dbuser1 with password 'DBPassword';
=# create table testtable ( id int,firstname text, lastname text );
=# insert into testtable (id,firstname,lastname) values (1,'Alberto','Nao');
=# select * from testtable;
# systemctl restart postgresql

con questi semplici comandi si crea un utente , un database e una tabella, infatti poi basta lanciare la query per vedere i dati disponibili. 

Per collegarsi al database PostgreSQL è possibile usare qualunque programma come Beekeeper ma è consigliato installare PgAdmin4, scaricabile da un repository dedicato con i comandi:

# curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
# sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list'
# apt-get update
# apt-get install pgadmin4 pgadmin4-desktop pgadmin4-web
# /usr/pgadmin4/bin/setup-web.sh

con l'ultimo comandi si è abilitato l'accesso via web dall'indirizzo localhost/pgadmin4.

Per quanto riguarda il MongoDB l'installazione è un attimo più complicata perché si deve scaricare da un repository proprietario e non da quelli ufficiali di Debian.

# apt-get install dirmngr gnupg apt-transport-https software-properties-common ca-certificates 
# curl -fsSL https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
# add-apt-repository 'deb https://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main'
# apt-get update
# apt-get install mongodb-org
# systemctl enable mongod --now
# mongo --eval 'db.runCommand({ connectionStatus: 1 })'}

poi bisogna subito configurare la rete per permettere l'accesso, il file di configurazione è

/etc/mongod.conf

e bisogna controllare le configurazioni

bindip = 127.0.0.1,indirizziIpCheUsanoMongo
#port = 27017
#auth=true

e poi riavviare il server con il comando

# systemctl restart mongod

poi si accede alle collezioni di mongo con i comandi

$ mongo
> use collectiondemo
> db.elenco.insert({nome:"Alberto"})
> db.elenco.find()}

e il risultato deve essere l'oggetto inserito come Alberto.

Un tool grafico per poter usare mongo è Robomongo che purtroppo non è disponibile nei pacchetti pronti per debiam ma deve essere scaricato un file installer in formato tar.gz dal sito ufficiale 

https://robomongo.org/download

dove è possibile trovare la guida per l'installazione e la configurazione del tool.

Anche per Postman non esiste il pacchetto Debian ufficiale e per poterlo installare esistono due possiblità: scaricarlo dai server di snap con un semplice click oppure scaricare l'installer in formato tar.gz dal sito ufficiale:

https://dl.pstmn.io/download/latest/linux

e poi installare il programma con i comandi:

# tar -xzf Postman-linux-x64-7.32.0.tar.gz
# sudo rm -rf /opt/Postman
# sudo mv Postman /opt/Postman
# sudo ln -s /opt/Postman/Postman /usr/bin/postman
$ cat > ~/.local/share/applications/postman.desktop <<EOF
[Desktop Entry]
Encoding=UTF-8
Name=Postman
Exec=postman
Icon=/opt/Postman/app/resources/app/assets/icon.png
Terminal=false
Type=Application
Categories=Development;
EOF

con l'ultimo comando si è creata la voce di menù da cui è possibile accedere al programma velocemente, poi gli aggiornamenti vengono scaricati automaticamente dal programma stesso.

Per la installazione del demone dei Docker basta installare i pacchetti omonimi: docker e docker-compose presenti nei repository ufficiali e poi possono i vari comandi dei docker per gestire il demone:

# systemctl status docker
# systemctl start docker

e poi si può analizzare il contenuto del demone con il comando:

# docker ps

se si dispone di un file YML o YAML con la configurazione del docker basta lanciare i comandi

# docker-compose up -d

per scaricare e avviare il demone dei contenitori, per esempio usare pgAdmin4 su un docker basta:

# mkdir ~/dockerPadmin4
# cd ~/dockerPadmin4
# docker pull dpage/pgadmin4
# docker run -p 5050:80 -e "PGADMIN_DEFAULT_EMAIL=postgres" \
-e "PGADMIN_DEFAULT_PASSWORD=password"  -d dpage/pgadmin4
# docker-compose up -d
# docker ps

in questa sequenza di comandi si è scaricato e attivato il docker PgAdmin4 sul demone locale con la configurazione delle porte, ovviamente bisogna prestare attenzione che non siano già occupate da altri server, in particolare potrebbe essere necessario aprire le porte del firewall locale per le porte con i comandi:

# /usr/sbin/iptables -I INPUT 1 -i eth0 -p tcp --dport 5432 -j ACCEPT
# /usr/sbin/service iptables save
# /usr/sbin/iptables --list

e sul server PostgreSql è necessario aggiungere la riga

listen_addresses = '*'

se non presente nel file di configurazione

/etc/postgresql/11/main/postgresql.conf

e aggiungere la porta

host all all 0.0.0.0/0 md5

nel file di configurazione

/etc/postgresql/11/main/pg_hba.conf

e poi riavviare il server con

# /etc/init.d/postgresql restart

alla fine è possibile collegarsi al PgAdmin4 via web all'indirizzo

http://localhost:5050/browser/

e nella login bisogna inserire username e password indicati in creazione del docker, per collegarsi al PostgreSql bisogna configurare l'indirizzo IP (il valore localhost non sempre funziona) e selezionando la voce "SSL Compression". Per fermare il docker bisogna lanciare il comando

# docker stop NUMERO

dove il NUMERO è il valore ritornato dal comando ps che mostra l'elenco di tutti i docker attivi nel demone.

Il sistema GIT è il programma per il controllo delle versioni di software e distribuzione più usato al mondo, inizialmente proprio creato per la gestione degli sviluppi del KernelLinux, ad oggi è usato in tutto il mondo anche delle grandi aziende per i progetti di grandissimi progetti. Il sistema può essere installato con l'omonimo pacchetto e per la configurazione basta lanciare i comandi

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

per poi usare GIT per scaricare e inviare file basta lanciare i comandi:

git clone https://gitlab.com/name/name.git
cd alnaowordpress
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

è possibile anche usare il plugin dedicato di Eclipse o Visual Studio Code per la gestione dei repository e la gestione dei commit/push. Inoltre esistono dei piccoli grandi tool grafici come git-cola o gitg, sono sicuramente da provare ed è da notare anche la simpatica descrizione del gitCola in Synaptic.

Guide complete di GIT sono disponibili nelle pagine dedicate a JavaEE con Eclipse e Angular.

Per chi usa AWS è indispensabile usare i comandi da riga di comando Command Line interface AWS-CLI e AWS-SAM, entrambi sono facilmente configurabili in pochi istanti grazie ai tool messi a disposizione direttamente da AWS.

L'installazione della CLI è facilissima e basta seguire i passi descritti nella documentazione ufficiale:

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
# ./aws/install
$ aws --version 

In caso di errore di questo ultimo passaggio basta aggiungere al file .bashrc il path /usr/local/bin/ dove viene installato il CLI di AWS. Per configurare il profilo bisogna prima creare un utente di tipo programmatico con la key nel servizio IAM di AWS, poi basta lanciare il comando:

$ aws configuration --profile nomeUtente

per configurare un profilo, in questi passi saranno richieste le due chiavi dell'utente, la zona di default (come eu-west-1) e il formato delle risposte (come json). Una volta configurato la CLI, per provare il corretto funzionamento e collegamento basta lanciare il comando:

$ aws s3 ls

per visualizzare l'elenco dei bucket presenti nel servizio S3 nella region impostata di default in fase di configurazione. L'elenco dei comandi specifici della CLI è disponibile negli articoli dedicati al servizio AWS.

Per quanto riguarda SAM, la versione CLI di servlerss, i passi da seguire per l'installazione sono:

# wget https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip
# unzip aws-sam-cli-linux-x86\_64.zip -d sam-installation
# ./sam-installation/install
$ sam --version

Una guida completa di SAM può essere trovata al sito ufficiale mentre esempi di utilizzo di questo mando si possono trovare nella sezione di AWS del sito alnao.it.

L'installazione di sls (detto anche serverless) si basa su NPM e bisogna lanciare il comando di installazione del pacchetto dedicato:

$ npm install -g serverless

e poi bisogna configurare le credenziali programmatiche di accesso con il comando:

$ serverless config credentials --provider aws --key <key> --secret <secret> --profile serverless-admin

Per verificare che sia tutto configurato correttamente basta lanciare il comando:

$ servless

oppure:

$ sls

Alcuni esempi di utilizzo di SLS sono disponibili sulla pagina di AWS oppure al git di alnao.

Essendo GNU Linux una piattaforma molto usata negli ambienti universitari e nei centri di ricerca, nel tempo si sono sviluppate tantissime applicazioni scientifiche anche molto complesse, nel tempo questi programmi si sono arricchiti e sono diventati veramente molto potenti e complicati. Per la didattica elenco alcune applicazioni usatissime nelle scuole e nelle università di tutto il mondo, sfortunatamente poco in Italia:

  • Chemtool: Programma per il disegno di molecole organiche
  • Ghemical: Software di chimica computazionale
  • GPeriodic: Tavola periodica degli elementi
  • KStars: Planetario stellare
  • KTurtle: Interprete del linguaggio LOGO per l'ambiente grafico KDE
  • Octave: Ambiente per il calcolo numerico mod
  • Oregano: Disegno e simulazione di circuiti elettronici mod
  • Stellarium: Simulazione di volte celesti

Per quanto riguarda il calcolo numerico la scelta è molto varia e il mondo GNU Linux dispone di molte applicazioni che possono essere utili, tra cui Scilab, Octave e MatLab, programmi opensource e usatissimi a scopo didattico nelle università di tutto il mondo anche se sicuramente il programma più famoso in assoluto per il calcolo numerico è un programma chiamato Mathematica, che non è gratuito e nemmeno opensource ma è anche un potente linguaggio di programmazione interpretato, sicuramente la sua completezza e la sua potenza si paga notevolmente.

Per chi vuole utilizzare il famosissimo linguaggio LaTeX per creare documenti, ci sono alcuni programmi che lo aiuteranno notevolmente alla gestione dei documenti, per prima cosa bisogna andare ad installare tutti i pacchetti necessari: bisogna installare i pacchetti che iniziano per LaTeX evitando di selezionare le estensioni per le lingue orientali se non servono, poi si può lanciare la compilazione da riga di comando oppure usare un ambiente grafico che esegua la compilazione con un semplice click su un bottone. Per la compilazione a mano, dopo aver scritto il documento con un semplice editor di testo (come kEdit o gEdit), la compilazione è lanciata con il comando:

$ latex miodocumento.tex

Il risultato saranno alcuni file (con estensione .aux, .log, .idx) e viene generato anche un file con estensione e formato DVI, questo file può essere letto direttamente tramite il programma di visualizzazione documenti oppure può essere aperto grazie all'interprete di Konqueror, se si desidera invece ottenere un file PostScript, bisogna, dopo aver prodotto il DVI, lanciare il comando

$ dvips -t -o miodocumento.ps miodocumento.dvi

che permette di ottenere il file PostScript con estensione ps ma bisogna tener presente che è necessario aver installato un interprete PostScript come GhostScript. Per ottenere un documento in formato PDF bisogna processare il file sorgente con il comando

$ pdflatex miodocumento.tex

Un'altra opzione è quella di usare l'utilissimo programma Kile: il miglior programma per GNU Linux per scrivere documenti in linguaggio LaTeX: consigliato e indispensabile per chi vuole scrivere documenti di grandi dimensioni, da usare anche la possibilità di creare dei progetti in modo tale da dividere i documenti in file più piccoli e più semplici da gestire, notare anche che con la seconda barra in alto si evita di dover andare a scrivere i comandi sulla shell ma basta fare un click con il mouse.

La versione PDF di questo documento è scritta in LaTeX utilizzando l'editor Kile.

Un utente che usa GNU Linux tutti i giorni si può ritrovare ad alcuni problemi di configurazioni dei vari pacchetti e del sistema, al giorno d'oggi la comunità mondiale GNU Linux ha risolto praticamente tutte le problematiche che un utente può avere e le informazioni possono essere trovate grazie ad una semplice ricerca sui più comuni motori di ricerca; la difficoltà maggiore di questo periodo è diventata riuscire a trovare le informazioni di cui si ha bisogno tra i troppi siti e forum che parlano di GNU Linux e di Debian: spesso infatti si trovano documenti troppo dettagliati oppure siti che parlano di argomenti in maniera troppo superficiale.

Questo capitolo cerca di colmare almeno alcuni buchi e trattare argomenti non trattati negli altri capitoli perchè le configurazioni particolari non rientrano in nessun tema già visto in precedente.

Durante l'installazione al passo Copia del sistema base e impostazioni finali è stato installato nel proprio sistema il sistema Grub, questo è il componente della piattaforma GNU Linux che avvia il sistema operativo all'accensione del sistema: dopo l'accensione infatti compare con una schermata che permette di avviare il sistema GNU Linux in diverse modalità ed eventualmente sistemi operativi diversi se sono installate diverse versioni del KernelLinux o altri sistemi operativi, un utente non esperto deve evitare di eseguire modifiche lasciando i valori di default ma un utente più esperto potrà avviare il sistema ottimizzato a seconda delle proprie esigenze. Questo pacchetto è importante perché permette di installare più sistemi operativi nello stesso sistema e poi scegliere quale avviare al momento dell'accensione (chiamata appunto boot del sistema oppure bootloader), in tutti gli altri sistemi operativi (come MS Windows e MacOX) questo componente non è presente per questo un utente non abituato a GRUB non riesce a capirne l'utilità, è persino possibile installare più versioni di Debian o diverse distribuzioni nel sistema e poi gestirne l'avvio di sistemi operativi con GRUB .

Per gli utenti Debian di oggi, Grub viene installato durante la fase di installazione del sistema base e viene auto-configurato quindi l'utente non deve inserire nessuna configurazione: l'auto-configurazione rileva la presenza di altri sistemi operativi e li inserisce nell'elenco di quelli che GRUB può avviare, ovviamente se il sistema operativo è stato installato dopo l'installazione di Grub bisogna rilanciarne la configurazione.

Il menù di avvio viene regolato dal file

/boot/grub/grub.cfg

ma non bisogna MAI modificarlo a mano visto che ci sono una serie di comandi che permettono di modificare le configurazioni, come per esempio lo sfondo e il carattere usato infatti di default viene usato uno sfondo semplice e un tema base.

Per maggiori dettagli sulla configurazione del bootloader vi rimando al sito ufficiale
http://www.gnu.org/software/grub/grub.html
oppure ad una guida italiana
http://guide.debianizzati.org/index.php/Guida_a_GRUB_2

Il problema principale di GRUB è che, se si cambiano i componenti del sistema come gli HardDisk, può succedere che GRUB rimanga disallineato rispetto all'effettiva architettura del sistema, per ripristinare il bootloader bisogna seguire una guida molto chiara all'indirizzo

https://help.ubuntu.com/community/Grub2/Installing#Fixing_a_Broken_System

dove sono spiegati tutti i passi per il ripristino e la riattivazione, in particolare il comando

# grub-install --root-directory=/mnt /dev/sdX

ripristina la versione di GRUB2 nel sistema, ovviamente mnt e sdX devono essere modificati con la configurazione del sistema.

Come già detto nei precedenti capitoli, l'ambiente grafico e i desktop vengono gestiti da un demone chiamato X Window System, spesso chiamato semplicemente X, da molti anni è diventato il demone principale su tutti i sistemi GNU Linux e ovviamente anche su Debian, si parla sempre di demone in quanto un utente esperto può notare la famosa struttura client-server dove il server X mette a disposizione l'interfaccia e delle librerie per lo sviluppo di applicazioni come le GTK+; come tutti i demoni di GNU Linux, anche X necessita sempre di una buona configurazione per funzionare correttamente e permettere agli ambienti desktop di caricarsi correttamente, negli anni i tool di configurazione sono stati evoluti molto e oggi il server grafico si auto-configura da solo ad ogni avvio e l'utente non deve fare nessuna configurazione, nelle versioni passate del sistema la configurazione doveva essere fatta manualmente sul file di configurazione

/etc/X11/xorg.conf

oppure, per configurare X, basta lanciare uno dei vari tool di configurazione:

# Xorg -configure

oppure con il comando:

# dpkg-reconfigure --priority=low xserver-xorg

Nelle vecchie versioni, ad ogni modifica dei file di configurazione, bisognava sempre ricordarsi di fermare e far ripartire il demone grafico lanciando i comandi

# /etc/init.d/gdm3 stop
# /etc/init.d/gdm3 start

dove GDM è il Gnome Desktop Manager che gestire il "dialogo" tra il demone X e i desktop che di default è installato su Debian anche se usate KDE o XFCE.

Nelle ultime versioni, se il file xorg.conf non è presente, il demone esamina l'hardware ad ogni avvio e si auto-configura da solo quindi tale file non è più presente nei sistemi nelle ultime versioni, per maggiori informazioni rimando alle guide ufficiali su debian.org.

Per la gestione dei sistemi con più monitor basta utilizzare i programmi di configurazione nei vari desktop, per esempio sui sistemi Gnome basta cliccare sul desktop e selezionare Display settings per accedere al programma che permette la configurazione dei monitor e la disposizione delle applicazioni. Per la configurazione da shell si può usare il comando xrandr, per esempio la configurazione di default si ottiene con:

# xrandr --auto

mentre altri esempi di configurazione con due monitor può essere

# xrandr --output HDMI-1 --right-of VGA-1 --rotate normal,inverted,left,right
# xrandr --output HDMI-1 --right-of VGA-1 --rotate right

Trattandosi di un sistema client-server e disponendo di una rete (abbastanza veloce) ci si può collegare da un sistema X ad un altro sistema dove è installato il demone X attraverso il protocollo SSH con il comando

$ ssh -q -X nomelogin@hostremoto

ovviamente per poter usare questo comando bisogna lanciarlo da un sistema GNU Linux con demone grafico X verso un altro sistema GNU Linux con demone grafico X in ascolto.

Il demone grafico X è stato scritto con i driver base delle schede video e quasi mai il demone gestisce automaticamente le accelerazioni grafiche previste da alcune marche di schede video, infatti serve installare i driver specifici per ogni tipo di scheda video, le maggiori tre case di schede video sono Nvidia, Ati e Intel, per le prime due si possono trovare dei driver ben funzionanti mentre per le schede Intel il demone grafico X dovrebbe funzionare in maniera ottimale automaticamente. Per capire la marca e il modello della propria scheda video si può lanciare il comando

$ lspci -nn | grep VGA

se avete una scheda NVidia comparire una riga con il nome e il modello, per esempio:

NVIDIA Corporation G80 [GeForce 8800 GTS]

mentre se avete una Intel compare la riga:

Intel Corporation Haswell Integrated Graphics Controller

Per quanto riguarda le schede Nvidia si possono installare i driver direttamente da Synaptic (o apt) dopo aver aggiunto nel proprio file sources.list la riga

deb http://httpredir.debian.org/debian/ stretch main contrib non-free

e poi si devono installare i pacchetti

# install linux-headers-$(uname -r| sed 's/[^{ }-]*-[^{ }-]*-//') nvidia-driver nvidia-glx nvidia-kernel-dkms nvidia-kernel-common 

dove il comando uname serve per installare l'headers della corretta versione del KernelLinux installata, poi forse bisogna lanciare il comando

# nvidia-xconfig

per creare il famoso file di configurazione del demone grafico X, una volta creato bisogna riavviare il server grafico per rendere effettive le modifiche, per maggiori informazioni vi rimando alla guida wiki su nvidia.

Per le schede di marca AMD/ATI, dopo aver aggiunto nel proprio file sources.list la riga

deb http://http.debian.net/debian/ stretch main contrib non-free

e poi bisogna installare i paccchetti

# apt-get install linux-headers-$(uname -r| sed 's/[^{ }-]*-[^{ }-]*-//') fglrx-driver  xserver-xorg-video-ati

e poi lanciare il comando

# aticonfig --initial

per maggiori informazioni vi rimando alla pagina Wiki di ATI.

Qualsiasi uso si faccia di un sistema informatico è sempre importante disporre di un sistema di backup ed eventualmente il restore dei dati, grazie ai tanti cloud come Dropbox o Google-Drive è possibile fare tutto tramite internet in maniera veloce, nel mondo GNU Linux esistono molti strumenti che servono proprio per eseguire i backup dei sistema, una lista incompleta di strumenti disponibili su Debian:

  • amanda: Advanced Maryland Automatic Network Disk Archiver cioè un sistema di archiviazione dei dischi
  • backupninja: sistema di meta-backup leggero ed estensibile
  • bacula: backup, ripristino e verifica in rete
  • duplicity: backup automatici incrementali
  • dump: lo storico programma per eseguire backup e dump dei dischi
  • xfsdump: programma per eseguire backup e dump dei dischi

E' possibile anche costruire un mini script personalizzato, scritto in linguaggio sh, per la copia di backup dei file base, questo script più essere utile per salvare solamente le configurazioni e non tutto il sistema. Per prima cosa per un backup delle configurazione bisogna salvare i file di sistema che possono essere modificati come visto nei precedenti capitoli:

/etc/apache2/apache2.conf
/etc/cups/cupsd.conf
/etc/samba/smb.conf
/etc/apt/source.list
/etc/fstab
/etc/rc.local

questi file possono essere salvati e sovrascritti in caso di emergenza. Poi ovviamente serve salvare i dati base delle utenze:

  • La configurazione del browser Iceweasel se usato (come segnalibri, cronologia, password e cookies) nella cartella /home/nomeutente/.mozilla/firefox/
  • La posta di Icedove se usata: tutte le mail e tutte le impostazioni nella cartella /home/nomeutente/.mozilla-thunderbird/
  • La cartella di Chrome se usato, se il sistema di sincronizzazione con google-drive è attivo questa cartella può non essere compresa in un eventuale backup, nella cartella /home/nomeutente/.config/google-chrome
  • Tutta la cartella home di ogni utente se ci sono dati interessanti

Se si usa il MySql/MariaDb come demone per lo sviluppo non bisogna dimenticarsi di comprendere nel proprio backup anche i database usati, l'esportazione dei dati viene eseguita con il comando:

$ mysqldump --database nomedatabase > nomefile.sql -u root -p password

(dove poi bisogna inserire la password di root o dell'utente indicato), viene eseguito in salvataggio nel file sql di tutto il db compresa la struttura e gli indici. Per eseguire il ripristino si può usare il comando da riga di comando oppure si può usare più comodamente un tool per l'importazione dello script di backup.

Esistono molti programmi per la gestione dell'intero sistema e che permettono di monitorare le risorse e lo stato del proprio sistema, soprattutto se state usando Debian come server: nella shell potete usare il programma top, utilissimo programma che permette di monitorare tutti processi attivi sul sistema, l'elenco delle funzionalità viene elencata semplicemente premendo il tasto "h". Se utilizzate un desktop, potete provare a configurare i vari widget di controllo sulla barra delle applicazioni e potete provare il programma Monitor di sistema che trovate sul menù Sistema, tramite questo programma potete monitorare memoria e processore, avete anche la possibilità di vedere ed eventualmente uccidere i vari processi e programmi in esecuzione nel vostro sistema.

Il primo programma particolare è Ntop, un bellissimo ma complicatissimo programma web di statistiche sul traffico di rete, utilissimo per un demone di rete e per chi vuole controllare il traffico internet, per usarlo basta installare il pacchetto Ntop e poi accedere, tramite browser, all'indirizzo

http://localhost:3000/

Il secondo programma consigliato è PhpSysInfo, per usarlo serve aver installato il demone web Apache e dopo aver installato l'omonimo pacchetto, basta accedere, tramite browser, all'indirizzo:

http://localhost/phpsysinfo/

tramite queste viste di tipo web, avete la possibilità di scoprire tutte le informazioni utili sul vostro sistema, dalle periferiche al processore, dalla ram agli harddisk e vedere i livelli di utilizzo.
Se avete una rete di computer con molti sistemi GNU Linux installati e potete tenere sotto controllo tutta la rete, creando un server di rete e utilizzare il programma Nagios, le sue potenzialità sono elevate ma permette solo una visione della situazione dei nodi della rete per il monitoraggio senza poter modificare le impostazioni base del sistema mentre con WebMin potete monitorare il sistema ma anche modificare le varie configurazioni e amministrare i vari demoni.

La gestione del cestino viene gestita dai vari Desktop (GNOME, KDE o XFCE), e come per altri sistemi, anche in Debian il cestino in realtà è una semplice cartella particolare dove vengono parcheggiati temporaneamente i file in attesa di una cancellazione definitiva, in realtà il Kernel di GNU Linux non gestisce nativamente il cestino, infatti se un utente usa i comandi

$ rm

oppure

$ rmdir

la cancellazione di file o delle cartelle è definitiva e il file non viene spostato in nessun cestino temporaneo quindi bisogna sempre prestare attenzione quando si usano questi comandi.

Bisogna sempre tenere conto che il cestino dei Desktop può lasciare della sporcizia nei sistemi, cioè il cestino potrebbe non essere svuotato oppure capita che alcuni desktop non eseguano la cancellazione definitiva ma postano i file in un altra cartella nascosta nonostante il lancio della funzione di svuota il cestino, questa sporcizia può essere lasciata in una cartella specifica che potete trovare al path

/home/nomeutente/.local/share/Trash/file/

che dovrebbe essere controllata e svuotata periodicamente con il comando

$ rm -rf ~/.local/share/Trash/files/*

per esempio è possibile inserire questo comandi nello script rc.local per svuotare il cestino (in maniera definitiva) ad ogni avvio del sistema. Se avete dei dischi montati con il comando mount, i vari desktop manager e i programmi di gestione dei file come Dolphin creano delle directory Trash (cestino) all'interno dei volumi montati, per esempio

/mnt/Dati/.Trash-1000/files

e anche in questo caso basta pulire queste cartelle a mano oppure semplicemente svuotare il cestino dal desktop.

Il comando sudo consente agli utenti senza privilegi di amministratore, di eseguire i comandi come super-utente senza dover effettuare la login come super-utente e senza conoscere la password dell'utente amministratore, in alcune distribuzioni derivate da Debian come Knoppix o Ubuntu questo comando è impostato di default perché non viene usato l'utente root mentre per chi usa Debian o altre distribuzioni GNU Linux questo comando è sconsigliato ma è possibile configurare il comando sudo, di default questo comando non viene installato durante la fase di installazione del sistema base e per averlo a disposizione basta installare il pacchetto sudo, con il comando

# apt-get install sudo

per poi lanciare il comando

# visudo

e inserire alla fine del file la riga

nomeutente ALL=(ALL:ALL) ALL

dove ovviamente nomeutente è l'username dell'utente da abilitare per questo comando, questo comando va a scrivere un file sudoers che contiene le impostazioni del comando.

Ogni volta che viene lanciato il comando sudo viene chiesta una password, che non è la password dell'utente root, ma è la password dell'utente, l'uso di sudo in Debian può diventare utile per chi vuole scrivere script (in sh per esempio) utilizzando comandi che solo il superutente può lanciare, un esempio classico è la modifica veloce del file fstab, usando invece un semplice script in sh la cosa si fa molto più veloce e interessante, infatti basta creare un file, dandogli estensione sh (solo per comodità perché come sempre visto le estensioni non sono significative) e scrivere al suo interno le righe:

#!/bin/sh
sudo kwrite /etc/fstab

purtroppo questo non funziona al meglio perché richiede la password dell'utente che lancia lo script, per risolvere il problema dell'inserimento della password basta inserire il comando echo che simula la digitazione di caratteri nel sistema:

#!/bin/sh
echo password | sudo -S kwrite /etc/fstab

e lo script digiterà automaticamente la password al posto dell'utente, in questo modo si ha a disposizione uno script per eseguire il comando sudo che digita automaticamente la password.

Se la installazione del sistema Debian viene avviata dalla versione live, il comando sudo viene installato di default e non viene impostata la password dell'utenza root, per impostarla basta lanciare il comando

$ sudo passwd root <nuovapassword>

questo perché in quasi tutte le live il comando sudo viene usato al posto dell'utenza root e questo viene ereditato nelle installazioni che vengono avviate da sistemi live.

Tramite la configurazione delle quote sui sistemi basati sui Kernel GNU Linux, è possibile imporre dei limiti all'uso delle memorie e delle stampanti agli utenti che usano un sistema, questo può essere molto utile quando un pc viene usato da molti utenti diversi magari in una rete LAN e si rischia di vedere lo spazio nei dischi ridursi sempre più velocemente a causa dei troppi file creati e salvati dagli utenti, uno dei requisiti indispensabili per il sistema di quote è che, durante la fase di installazione, sia stata creata una partizione dedicata per la cartella home e quindi, nel file fstab, sia presente una riga che indica quale partizione viene montata sulla cartella home, in alternativa è possibile impostare il sistema delle quote su una partizione diversa, per esempio la partizione che viene montata sulla cartella root, anche se questo è assolutamente sconsigliato.

Prima di tutto bisogna installare il pacchetto quota e poi modificare la riga del file fstab corrispondente alla partizione da limitare, aggiungendo nelle proprietà e i parametri della partizione i parametri:

,usrquota,grpquota

e poi basta lanciare il comando:

$ quote

per verificare la situazione delle quote, oppure un amministratore può avere lo schema di tutti gli utenti con il comando:

# repquota -a

Per impostare una quota da un utente o ad un gruppo si usa il programma edquota che permette l'impostazione di quote in maniera iterattiva mentre il comando setquota permette di impostare il sistema quote da riga di comando senza sistema iterattivo, per esempio:

# setquota -u utente 3000 4000 0 0 /home/disco

dove i vari parametri sono spiegati nella pagina man del comando setquota. Il sistema quote prevede anche un periodo in cui l'utente possa sforare i limiti, questa parametrizzazione è configurabile con il comando:

# edquota -t

oppure con:

# setquota -t

In alternativa è possibile usare il programma quotatool sempre da riga di comando oppure uno dei (pochi) programmi disponibili sui desktop per la gestione delle quote. Con i comandi quotaon e quotaoff si può abilitare e disabilitare la gestione delle quote sui filesystem precedentemente configurati:

# quotaon -v --all
# quotaoff -v --all

da notare che il sistema quote è un normale demone quindi può essere fermato anche a mano con lo script init:

# /etc/init.d/quota stop

Una guida più completa del sistema quote può essere trovata nella documentazione ufficiale Debian.

Modificare lo schema delle partizioni è sempre una cosa non semplice e ad alto rischio di perdita di dati, perché la modifica delle partizioni potrebbe modificare anche altre partizioni su un disco fisico con possibili perdite di dati; la mia esperienza mi ha portato a non modificare mai le partizioni dei dischi se su questo è installato il sistema operativo e, quando si deve modificare una qualsiasi partizione contenente dati, conviene sempre eseguire una copia di backup di tutte le partizioni comprese quelle non modificate. Le cose si complicano ancora di più quando nello stesso disco ci sono più partizioni di tipo diverso come quelle di MsWindows (con filesystem di tipo NTFS o FAT32) e partizioni GNU Linux (con filesystem di tipo le Ext3 o Ext4), questo perché i programmi di partizionamento di un sistema operativo difficilmente trattano al meglio le partizioni degli altri sistemi con l'ovvio rischio di perdere partizioni che un programma non riconosce, per evitare questi contrasti fra sistemi operativi si possono usare programmi specializzati che cercano di gestire al meglio le partizioni di tutti i tipi, il più storico programma è Partition Magic che purtroppo è stato abbandonato dal produttore già dal 2009 ma ancora usato perché il migliore del suo tipo.

Se invece avete un solo sistema operativo nel vostro sistema e questo è di tipo GNU Linux come Debian, potete tranquillamente usare il programma di installazione per partizionare il disco come già visto all'inizio di questa guida senza aver nessun tipo di problemi, dopo l'installazione potete comunque modificare lo schema delle partizioni con i programmi

  • fdisk storico programma da riga di comando per il partizionamento di GNU Linux
  • partman strumento di partizionamento raccomandato da Debian, permette di gestire, modificare, creare e montare le varie partizioni
  • gparted programma per desktop grafici che permette di fare (più o meno) tutto con pochi click

Esiste anche una versione live di GNU Linux chiamata GParted LiveCD che permette di usare il programma da una versione live, questo permette di salvare dati e partizioni in caso il sistema operativo base si sia danneggiato e non risulti funzionante. E' possibile anche usare le versioni live di Debian che all'interno contengono già il programma di partizione oppure si può facilmente installare con il comando apt.

Per GNU Linux esistono diversi modi per virtualizzare un sistema operativo, lo storico sistema nativo è chiamato Qemu/Kdm la cui interfaccia utente è la Virsh ed esistono moltissime guide anche nelle versioni precedenti di questo testo. Tuttavia la configurazione e creazione con Qemu è considerata obsoleta in quanto nelle ultime versioni di Debian 10 non si usa praticamente mai questo tipo di configurazione.

Per quanto riguarda il programma VMware è possibile scaricarlo dal sito ufficiale, il file scaricato ha un formato bundle, come già visto più volte l'estensione è solo una descrizione, infatti questo è uno script auto-installante, prima però di lanciare l'installazione bisogna verificare l'installazione di alcuni pacchetti:

# apt-get install gcc-6-locales gcc-6-cross-base linux-headers-X.Y.Z-A-amd64 build-essential

e poi procedere con l'installazione vera e propria con i comandi

# chmod +x VMware-Player*.bundle
# ./VMware-Player*.bundle

poi basta lanciare il programma nel menù, se mancano pacchetti nella installazione compare un messaggio di avviso all'avvio del programma che indica il pacchetto da installare come per esempio il pacchetto linux-headers alla versione richiesta da VmWare.

Per quanto riguarda il programma VirtualBox non esiste un repository aggiornato per Debian 11 ma solo per la versione per Debian 10 considerata obsoleta. Il programma comunque può essere scaricato dalla versione per tutte le distribuzioni GNU Linux ed installata facilmente con pochi click:

# apt install build-essential linux-headers-amd64
# wget https://download.virtualbox.org/virtualbox/6.1.22/VirtualBox-6.1.22-144080-Linux_amd64.run
# chmod +x VirtualBox*
# ./VirtualBox*

Da notare che il pacchetto è costantemente in aggiornamento quindi bisogna sempre controllare l'ultima versione disponibile dal sito ufficiale di VirtualBox per rimanere sempre aggiornati.

In questo capitolo sono raggruppati i tantissimi comandi per i sistemi GNU Linux, comprendendo non solo i comandi della shell previsti dal KernelLinux base ma alcuni particolari comandi di altri ambienti e specifici per Debian o di alcuni programmi che possono risultare molto utili, questa lista non è assolutamente completa perché non basterebbe una vita per elencare e spiegare tutti i comandi per Debian ma sono elencati i più utili, più usati e più interessanti. Bisogna sempre ricordare che l'uso di certi comandi è concesso solo all'utente root mentre altri possono essere eseguiti da tutti gli utenti, questa non è un dettaglio da sottovalutare, soprattutto se si usa GNU Linux come personal computer con un singolo utente, potrebbe essere scomodo dover sempre passare dall'utente normale al super-utente, però è possibile configurare il comando sudo per concedere agli utenti non amministratori di lanciare qualsiasi comando.

Una delle cose più utili nelle Shell di GNU Linux è il famoso sistema di auto-completamento (autocomplete) della console, cioè se si scrivono le prime lettere di un comando e poi si preme il tasto TAB, il sistema vi presenterà la lista di tutti i possibili comandi a disposizione e se è rimasto solo una scelta farà il completamento automatico senza necessità di inserire altri caratteri, questo sistema funziona anche con il nome dei file e delle directory.

Seconda cosa da tenere sempre in considerazione quando si usa la Shell di GNU Linux: c'è sempre differenza tra minuscole e maiuscole, visto che il KernelLinux è di tipo Case Sensitive: sempre prestare attenzione a come viene scritto un comando o il nome di un file.

Terza cosa da tenere sempre a mente è che il carattere / rappresenta la cartella radice del sistema chiamata root, però bisogna fare attenzione a non fare confusione tra l'utente root, la cartella root e la cartella home dell'utente root che si trova nella cartella /root/, da tenere sempre a mente che la cartella / rappresenta la cartella madre di tutto il sistema e non esiste un livello superiore alla root-directory, mentre la cartella /root/ contiene solo i file dell'utenza root.

La shell bash mette a disposizione una serie di scorciatoie che è possibile usare da riga di comando:
tasto TAB espande il nome di un file o di un comando
!! ri-esegue l'ultimo comando eseguito
!n riesegue l'ennesimo comando presente nella storia, dove 'n' e' il numero del comando da rieseguire
!stringa riesegue l'ultimo comando che inizia con i caratteri specificati in stringa
!stringa:p visualizza l'ultimo comando che inizia con i caratteri specificati in stringa
!?comando? ricerca il comando specificato tra punti interrogativi
history visualizza l'elenco di tutti i comandi eseguiti
CTRL-U cancella tutta la riga dalla posizione del cursore all'inizio della riga
CTRL-K cancella tutta la riga dalla posizione del cursore alla fine della riga
CTRL-W cancella una parola dalla posizione del cursore all'inizio della riga
ALT-D cancella una parola dalla posizione del cursore alla fine della riga
CTRL-A sposta il cursore all'inizio della riga
CTRL-E sposta il cursore alla fine della riga
ALT-F sposta il cursore alla fine della parola successiva (F sta per forward)
CTRL-B sposta il cursore all'inizio della parola precedente (B sta per backward)
CTRL-T inverte gli ultimi due caratteri a sinistra del cursore (T sta per transpose)
ALT-T inverte le ultime due parole a sinistra del cursore
ALT-U trasforma in maiuscolo la parola su cui si trova il cursore (U sta per uppercase)
ALT-L trasforma in minuscolo la parola su cui si trova il cursore (L sta per lowercase)

Nei sistemi basati su GNU Linux, tutte le shell hanno un path base utilizzato per abbreviare i comandi ed evitare all'utente di dover inserire il path dei comandi base ogni volta che esegue un comando. Per esempio cp, utilizzato per copiare files o cartelle, si trova quasi sempre nella cartella /bin/ e, per evitare che l'utente inserisca il path ogni volta, viene impostato nel path base la cartella bin così la shell cerca i comandi inseriti dall'utente anche in quella cartella. In poche parole il path base è l'elenco delle cartelle dove la shell deve cercare un comando inserito dall'utente, questo elenco è modificabile e personalizzabile: un utente può aggiungere e togliere cartelle da questo elenco visto che questo valore è salvato in una variabile d'ambiente chiamata

$PATH

e il cuo contenuto può essere visualizzato con il comando

$ echo $PATH

e si visualizza l'elenco delle cartelle in sequenza con il separatore due-punti, per esempio:

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Se si vuole aggiungere all'elenco una cartella basta lanciare il comando

$ export PATH=$PATH:/cartella/da/aggiungere

ma eseguendo questo comando la modifica sarebbe solo temporanea fino al successivo riavvio del sistema, per rendere definitiva la modifica al path base bisogna modificare il file

~/.bashrc

aggiungendo lo stesso comando, in questo modo verrà eseguito ad ogni login dell'utente.

Gli alias sono dei comandi personalizzati che la shell bash permette di creare, questo può essere una chiamata ad un comando standard GNU Linux o ad un comando eseguibile (come uno script sh). Un semplice esempio è creare un nuovo alias che cancella i file di una determinata cartella basta lanciare il comando:

alias cancella="rm -fr /mnt/Dati/toDel/*"

poi nella bash basta lanciare il comando cancella per eseguire l'alias che eseguirà il comando indicato. La definizione di alias viene però persa al riavvio del sistema e/o alla logout dell'utente, per rendere permanente un comando occorre modificare il file:

~/.baschrc

che si trova dentro la cartella home dell'utente (~), quindi capite che ogni utente può avere i propri alias compreso l'utente root, si può aggiungere in questo file una riga per ogni alias (meglio alla fine del file), per esempio (se non esistono già) si possono aggiungere queste righe:

alias ls='ls --color=auto'
alias cancella="rm -fr /tmp/* "

dopo aver salvato il file, basterà che scriviate sul terminale il nuovo alias affinché venga eseguito il comando, si può utilizzare questa semplice procedura potete crearvi tutti i comandi che vi servono, comprese alias che richiamino script sh oppure programmi eseguibili non standard della shell bash.

Per la gestione e il monitoraggio dei processi in esecuzione su un sistema GNU Linux esiste una lunghissima lista di comandi, l'elenco di tutti i processi attivi ed in esecuzione è visualizzabile con il comando ps ma viene quasi sempre usato con il parametro aux che filtra tutti i processi attualmente attivi sul proprio sistema, quindi basta lanciare il comando

$ ps aux

Per avere un taskmanager sulla shell basta si può usare il programma top che mostra visione in tempo reale del sistema compreso l'utilizzo delle risorse come la CPU e la memoria, il comando service permette di gestire i vari demoni attivi, come il sendmail o apache, per lo stato basta lanciare il comando

# service nomedemone status

mentre per le varie operazioni basta usare il parametro "stop" oppure "start" per fermare o far partire un servizio.

Il comando kill vi consente di bloccare l'esecuzione di un processo conoscendo il numero PID del processo da fermare mentre killall permette di bloccare l'esecuzione di un processo utilizzando il suo nome e non attraverso il suo PID, per chi usa un desktop manager può usare il comando xkill che permette di uccidere un programma "visuale" in esecuzione sul server X facendo click sulla finestra del programma con il puntatore del mouse che assume la forma di un teschio simile al classico Jolly Roger dei pirati.

Per la gestione della memoria RAM, è possibile usare il comando free per avere una visione completa della situazione e che offre inoltre dettagli sulla memoria libera nella partizione di swap, utilizzata come supplemento alla memoria RAM disponibile sul sistema, suggerisco di usarlo con i parametri "-l" che mostra lo stato della memoria e "-k" che mostra l'output in KByte oppure "-m" che mostra l'outout in MByte.

Per la gestione dei dischi esiste il comando df che permette di eseguire un'operazione simile a free ma sui dispositivi di archiviazione: il suo scopo è infatti quelli di fornire informazioni sullo stato dell'hard disk del computer in uso e di ogni altro file system montato (pen drive, hard disk esterni e qualsiasi altra periferica esterna montata). Il comando df può essere eseguito sia senza alcun dispositivo target che seguito dal percorso di determinati file system: nel primo caso mostra lo spazio libero su ogni file system montato, nel secondo invece si limita a quelli selezionati manualmente. Consiglio l'uso del parametro "-h" che mostra un output più semplice da leggere, con valori in KiloByte, MegaByte o GigaByte e "-T" che mostra anche il tipo di file system montato.

Esistono diversi tool per configurare del demone di rete: editare i singoli file di configurazione, usare comandi shell come ifconfig, usare gli strumenti con interfaccia grafica oppure l'uso di web webmin: GNU Linux e Debian mettono a disposizione moltissimi comandi per la gestione della rete, in particolare si può fare qualsiasi cosa anche senza ambiente grafico o Desktop, ovviamente bisogna ben sapere cosa fare e quindi conoscere tutte le teorie sulla rete, i protocolli (IP/TCP) e le impostazioni di sicurezza. In questo documento elenco solo alcuni comandi base che possono essere utili a tutti gli usi, i principali file di configurazione del demone di rete sono:

  • /etc/sysconfig/network contiene le principali configurazioni per il Networking
  • /etc/hosts contiene il mapping fra indirizzi e hostname ed alias. Segue un esempio
  • /etc/services contiene il mapping tra i numeri di porta e i nomi dei servizi

Mentre i principali comandi comandi lanciabili della shell sono:

  • ip addr visualizza tutte le interfacce di rete attive e le relative impostazioni
  • ifconfig eth2 192.168.0.56 netmask 255.255.255.0 configura l'interfaccia di rete eth2 con indirizzo ip indicato
  • route -n visualizza informazioni di routing evitando di risolvere gli ip
  • route add -net 0.0.0.0/0 gw 192.168.0.1 imposta 192.168.0.1 come default gateway
  • /etc/init.d/network start script di avvio del demone networking

per il firewall viene usato il demone IPTables: si tratta di uno dei migliori firewall attualmente disponibili non solo per ambienti GNU Linux, interamente configurabile tramite riga di comando, l’elenco delle policy presenti è disponibile tramite:

# iptables -L 

Mentre per modificare le configurazioni del firewall si usano dei parametri particolari del comando:

# iptables -A INPUT -p [PROTOCOLLO] --dport [PORTA] -j ACCEPT

dove PROTOCOLLO è il tipo di protocollo da abilitare (udp oppure tcp). Volendo,è possibile anche aprire alcune porte solo a determinati IP, tramite il passaggio di un apposito parametro seguito dall’IP o dal range di IP, in questo modo:

# iptables -A INPUT -p [PROTOCOLLO] --dport [PORTA] -s 192.168.1.0/24 -j ACCEPT

in questo modo verrà abilitato il traffico proveniente dagli IP del tipo 192.168.1.X sulla porta selezionata mentre per abilitare un solo IP è necessario inserirlo per intero (al posto dello zero).

Per monitorare una eventuale rete wireless c'è a disposizione il comando wavemon che mostra la banda, la qualità del segnale, statistiche e le informazioni base, programma molto utile se si deve monitorare la rete senza fili da riga di mando. Non i dilungo molto in questi discorsi visto che non è il mio campo e conviene sempre avere sottomano webmin o i tool grafici dei vari desktop che risultano sempre più comodi, come firestarter per la configurazione del firewall.

Può inoltre capitare di dover impostare un limite all'uso della rete, cioè impostare che un sistema utilizzi al massimo un valore costante di banda in download o upload, per questo si può usare il comando wondershaper installabile dal gestore dei pacchetti e poi da riga di comando basta lanciare il comando

$ wondershaper -a nomeInterfaccia -d limiteDowlonad -u limiteUpload

per esempio:

$ wondershaper -a enp3s0 -d 10000 -u 6500

da notare che i limiti sono in Kbps. Per sapere la configurazione di un sistema basta lanciare il comando

$ wondershaper -sa enp3s0

se non c'è nessuna configurazione attiva compare un messaggio del tipo:

Wondershaper queues have been cleared.

Può essere necessario rinominare un gruppo di file dentro una cartella specifica, per farlo è possibile con uno semplice script per la shell Bash per evitare di dover ripetere l'operazione per ogni file, per esempio per modificare l’estensione di tutti i file si può usare

$ for i in *.from; do mv $i $(basename $i .from).to; done

oppure scrivere lo script

for file in *.from; do
mv $file ${file%.from}.to
done

In alternativa allo script in bash, esiste un comando molto più veloce e sicuro, mmv (Multiple Move) che serve a spostare o copiare file multipli e che possano essere raggruppati con un carattere jolly, questa azione viene effettuata in modo sicuro, ovvero non ci sono cancellazioni di file inaspettate dovute a collisioni dei nomi dei file di destinazione con nomi di file già esistenti, inoltre non ci sono problemi nel caso in cui i nomi dei file contengano spazi. Un esempio di utilizzo è:

$ mmv 'aaa*bbb?' 'pinco#1pallino#2'

e con questo comando vengono rinominati tutti i file contenenti le stringe "aaa" e "bbb" e terminanti con un carattere e verrà dato il nome "pinco" + ciò che trova l'asterisco + "pallino" + ciò che trova il punto di domanda. Un esempio più semplice:

$ mmv '*.ps' '#1.eps'

per rinominare tutti i file da .ps a .eps, per maggiori informazioni e una guida completa potete vedere il comando man di mmv.

Il metodo più semplice rimangono i programmi di gestione file del desktop che tutti quanti usano mmv ma basta un semplice click per eseguire il comando, è possibile provare in Dolphin, Konqueror, Total Commander o qualsiasi altro filemanager presente nel sistema Debian.

I comandi per il demone Mysql sono indispensabili se si vuole usarlo e configurarlo come base dati per sviluppi o applicazioni in esercizio, in particolar modo agli sviluppatori sviluppatori è utile avere conoscere i comandi base, per esempio per avviare o fermare il demone:

# /etc/init.d/mysqld start | stop | restart

per controllare lo stato del server basta lanciare il comando:

# service mysqld status

che dovrebbe rispondere con una frase simile a mysqld is running, per verificare che il server stia correttamente sulla porta prescelta si può utilizzare il comando

# netstat -nlp | grep 3306

che dovrebbe rispondere con

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2879/mysqld

Per accedere alla console interattiva di mysql basta lanciare il comando

$ mysql -u root -p 

oppure

$ mysql --user=user_name --password=my_password my_db

mentre per uscire dalla console basta lanciare uno di questi comandi: exit oppure bye.

Quando ci si trova dentro la console di mysql, nella console non compare il classico simbolo $ oppure il # (che identifica l'utente della shell), ma compare il "suffisso"

mysql>

per esempio, per sapere lo stato del server dall'interno della console, si può lanciare il comando

mysql> status;

Bisogna sempre ricordarsi che, se ci si trova all'interno della console di mysql, bisogna sempre terminare i comandi con il simbolo del ; (puntovirgola).

Un elenco dei più comuni comandi di mysql che si possono usare nella console:

  • mysql> show databases; Mostra l'elenco di tutti i database disponibili
  • mysql> connect mysql; Riconnettersi al database (se si è persa la sessione)
  • mysql> use database_name; Selezionare un database per i prossimi comandi
  • mysql> CREATE DATABASE new_db ; Creare un nuovo database dal terminale interattivo
  • mysql> DROP DATABASE my_db; Cancellare un database
  • mysql> show tables; Visualizzare l'elenco delle tabelle (bisogna aver selezionato un database)
  • mysql> describe tables; Mostra la struttura di una tabella
  • mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password' creare un utente

Nelle varie guide ufficiali potete trovare l'elenco completo di tutti i comandi per definire i vari permessi sulle tabelle e manipolare gli utenti legando gli utenti alle varie tabelle.

Per effettuare il backup di un database non si usa la console ma si usa un altro programma scritto proprio per fare backup e restore dei dati, per fare il backup di un database basta lanciare il comando

# mysqldump -u user -p password nomeDatabaseSorgente > file.sql

dove il backup viene eseguito in un file con estensione sql, per eseguire il restore (dallo stesso file sql) basta lanciare il comando

# mysql -u user -p password nomeDatabaseDestinazione < file.sql

poi il comando mysqldump permette anche di mettere in collegamento due server MySql e far in modo che i dati vengano trasferiti da uno all'altro, per questo vi rimando alla documentazione ufficiale MySql.

Per eseguire delle query sulle varie tabelle nei database del server si può usare la console e, dopo aver selezionato un database, si può scrivere la query:

mysql> SELECT tb.rownum1, tb.Name, tb.Section, tb.NameDescription 
FROM products as tb
limit 10
;

da notare che è possibile scriverla anche su più righe, andando a capo con il tasto "Invio" ma la query non verrà eseguita finché non viene inserito il carattere ; (punto e virgola).

Negli ambienti GNU Linux sono a disposizione alcuni comandi da riga di comando per la manipolazione di gruppi di immagini e file video, questi risultano molti utili quando è necessario modificare un elenco di file molto numeroso e sarebbe una perdita di tempo dover aprire tutti i file con GIMP o altri editor per eseguire le modifiche specifiche su ogni file. Per modificare le immagini è possibile usare il comando mogrify che permette di ridimensionare i file immagine, per esempio per impostare una larghezza dell'immagine a 640 px orizzontali basta usare il comando:

$ mogrify -resize '640' immagine.jpg

per dimezzarne le dimensioni si usa il comando:

$ mogrify -resize 50% rose.jpg

per cambiare il formato ad un file:

$ mogrify -format jpg *.png

è possibile anche ruotare, tagliare, unire e molto altro: una guida completa delle azioni possibili è disponibili a imagemagick.

Per la manipolazione video è possibile usare i comandi ffmeg e mencoder, per esempio per estrapolare un pezzo di video si può usare il comando:

$ ffmpeg -i input.avi -ss 00:00:00 -t 00:03:00 -acodec copy -vcodec copy output.avi

dove i parametri indicano input, inizio, fine, codec auto, codec video e il file di destinazione; per fare la stessa operazione è possibile usare anche mencoder con la sintassi simile:

$ mencoder -i input.avi -ss 00:00:00 -endpos 00:03:00 -acodec copy -vcodec copy -o output.avi

Il modo più semplice per unire file video è quello di usare FFmpeg con il filtro concat e passando l'elenco dei file da concatenare in un file di testo, in questo file bisogna indicare l'elenco degli spezzoni deve essere nel seguente formato:

$ file 'video1.avi' 
file 'video2.avi'

poi concatenarli con il comando:

$ ffmpeg -f concat -i list.txt -c copy output.avi

dove l'opzione -f indica il filtro da usare (concat). Se invece si vuole ridurre le dimensioni di un video scalando i frame si può usare il comando:

$ ffmpeg -i input.mkv -vf "scale=iw/2:ih/2" halfFrameSize.mkv

dove l'opzione iw/2:ih/2 indica di quanto scalare le immagini, in questo esempio tutti i frame vengono dimezzati sia in altezza (h) sia in larghezza (w). Guide complete dei comandi si possono trovare in tante pagine internet.

Esistono molti comandi per la manipolazione di file PDF, infatti può capitare di dover modificare un file e si possono usare i vari tool, gratuiti o a pagamento. Un file PDF con moltissime pagine può risultare anche molto grande come dimensioni in Mb: tipicamente si ha 1 Mb ogni pagina quindi file di 500 pagine possono arrivare anche a mezzo Gb se le pagine hanno tante immagini, è possibile con ghostscript ridurre la dimensione del file con un inevitabile diminuzione della qualità delle immagini. Per fare questo, dopo aver installato il pacchetto ghostscript, basta usare il comando:

$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 
-dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH
-sOutputFile=FileDestinazione.pdf FileSorgente.pdf

Si possono ottenere diversi livelli di compressione modificando il parametro "-dPDFSETTINGS" con i valori :

  • -dPDFSETTINGS=/screen qualità per lo schermo, immagini convertite a 72 dpi
  • -dPDFSETTINGS=/ebook bassa qualità, immagini convertite a 150 dpi
  • -dPDFSETTINGS=/printer alta qualità, immagini convertite a 300 dpi
  • -dPDFSETTINGS=/prepress alta qualità preservando il colore, immagini convertite a 300 dpi

Se si vogliono unire più file PDF creando un nuovo PDF, è possibile usare il programma pdfsam e il comando pdftk, per esempio con il comando da riga di comando:

$ pdftk File1.pdf File2.pdf File3.pdf cat output FileSomma123.pdf

per modificare un file PDF ed eliminare alcune pagine è possibile usare il programma con interfaccia grafica PDF-Shuffler oppure il comando pdftk da riga di comando indicando le pagine da tenere e portare nella versione del file:

$ pdftk FileSorgente.pdf cat 3 10-20 25 28 32 45-end output FileDestinazione.pdf

E' talvolta necessario modificare solo le pagine pari o solo le dispari di un file, per fare questo è possibile usare il comando:

$ pdftk FileDispari.pdf burst output %04d_A.pdf
$ pdftk FilePari.pdf burst output %04d_B.pdf

per poi poterle unire per creare un unico file ordinato con il comando:

$ pdftk *.pdf cat output FileDestinazione.pdf

Se vi è la necessità di creare una versione PDF per la stampa in formato opuscolo (booklet in inglese), c'è la possibilità di trasformare il documenti in ps, usare i comandi dedicati ps e poi riconvertire tutto in pdf:

$ pdftops documento.pdf output.ps
$ psbook output.ps tmp.ps
$ psnup -pA4 -2 tmp.ps booklet.ps
$ rm output.ps tmp.ps
$ ps2pdf booklet.ps
$ rm booklet.ps

Per ridimensionare o ritagliare le dimensioni delle pagine è possibile usare i programmi grafici oppure usare una sequenza di comandi un po' macchinosa:

$ pdftops documento.pdf output.ps
$ pstops "1:0@0.7" output.ps scalato.ps
$ psresize -w 21cm -h 29.7cm -W 14.85cm -H 21cm scalato.ps ridimensionato.ps
$ ps2pdf ridimensionato.ps
$ rm output.ps scalato.ps ridimensionato.ps

Per estrarre tutto il testo da un PDF è possibile usare il comando

$ pdftotxt documento.pdf

e per estrarre le immagini da un PDF è possibile usare il comando

$ pdfimages documento.pdf estratta

Per estrarre la quinta pagina da un file pdf è possibile usare il comando

$pdftk sorgente.pdf cat 5 output destinazione.pdf

Operazioni più specifiche come la modifica dei metadati, l'estrazione dei font o delle immagini è possibile tramite i vari comandi già citati oppure i vari programmi grafici.

In questa sezione è possibile trovare un elenco dei più comuni comandi divisi per categorie

cd dir entrare nella sottodirectory dir della cartella corrente
cd /home entrare nella directory /home
cd .. risalire di un livello
cd ../.. risalire di due livelli
cd ~ vai alla home directory dell'utente corrente
cd - vai alla directory precedente
pwd visualizzare il path della directory di lavoro
ls visualizzare file e directory
ls -F visualizzare file e directory separandoli
ls -l visualizzare i dettagli di file e directory
ls -a visualizzare anche i file nascosti
ls *a* visualizzare file e cartelle il cui nome contiene il carattere a
ls -lSr |more visualizzare la dimensione dei file ordinandoli per dimensione
tree visualizzare file e directory in un albero a partire da root
mkdir dir1 creare la directory dir1
mkdir dir1 dir2 creare due directory contemporaneamente
mkdir -p /tmp/dir1/dir2 creare un'albero di directory
rm -f file1 eliminare il file file1
rmdir dir1 eliminare la directory dir1
rm -rf dir1 eliminare ricorsivamente la directory dir1 e sul contenuto
mv dir1 new_dir rinominare/muovere una directory o file
cp file1 file2 copiare un file da file1 a file2
cp dir/* . copiare tutti i file di una directory dentro la directory di lavoro corrente
cp -a /tmp/dir1 . copiare una directory dentro la directory di lavoro corrente
cp -a dir1 dir2 copiare una directory
ln -s file1 lnk1 creare un link simbolico al file(o directory) file1 chiamato lnk1
ln file1 lnk1 creare un link fisico al file(o directory) file1 chiamato lnk1
find / -name file1 cercare un file partendo dalla radice /
find / -user user1 cercare tutti i file appartenenti all'utente user1
find /usr/bin -type f -atime +100 cercare tutti i file non utilizzati negli ultimi 100 giorni
find /usr/bin -type f -mtime -10 cercare tutti i file creati o modificati entro 10 giorni
locate \*.ps cercare tutti i file con una determinata estensione
cat file1 visualizzare il contenuto di un file partendo dalla prima riga
tac file1 visualizzare il contenuto di un file partendo dall'ultima riga
more file1 visualizzare il contenuto di un file lungo
less file1 visualizza il file permettendo di scorrere il file sia in avanti che indietro
head -2 file1 visualizzare le prime due righe di un file
tail -2 file1 visualizzare le ultime due righe di un file
tail -f /var/log/messages visualizzare in tempo reale ciò che viene aggiunto ad un file
dos2unix filedos.txt fileunix.txt convertire un file di testo MSDOS in formato UNIX
unix2dos fileunix.txt filedos.txt convertire un file di testo UNIX in formato MSDOS
recode HTML page.txt page.html convertire un file di testo in formato html
cat file1 \textbar comando > result.txt elaborare il testo di un file e scrivere il risultato su un nuovo file
cat file1 \textbar comando >> result.txt elaborare il testo di un file ed appendere su un file esistente
grep Aug /dir/file cercare la parola Aug all'interno del file
grep ^Aug /dir/file cercare le parole che cominciano con Aug del file
grep [0-9] /dir/file selezionare tutte le righe che contengono numeri
grep Aug -R /var/log/* estendere la ricerca della stringa Aug dentro la directory /var/log
sed 's/stringa1/stringa2/g' file.txt rimpiazzare stringa1 con stringa2 nel file
echo 'abcd' | tr '[:lower:]' '[:upper:]' convertire da minuscolo in maiuscolo
sed -e '1d' result.txt elimina la prima riga dal file example.txt
sed -n '/stringa1/p' visualizza solo righe che contengono stringa1
sed -e 's/ *$//' example.txt rimuovi i caratteri vuoti alla fine di ogni riga
sed -e 's/stringa1//g' example.txt cancella solo la parola stringa1 da tutte le righe
sed -n '1,5p;5q' example.txt stampare a video dalla riga 1 alla 5
sed -n '5p;5q' example.txt stampare a video la riga numero 5
sed -e 's/00*/0/g' example.txt sostituire più zeri con un solo zero
cat -n file1 numerare le righe di un file
cat example.txt | awk 'NR%2==1' rimuove tutte le righe pari da example.txt
echo a b c | awk '{print $1}' stampare a video la prima colonna di una riga
echo a b c | awk '{print $1, $3}' stampare la prima e la terza colonna di una riga
paste file1 file2 fondere il contenuto di due file per colonne
paste  -d  '+' file1 file2 fondere il contenuto di due file per colonne con il delimitatore +
sort file1 file2 ordinare i contenuti di due file
sort file1 file2 | uniq ordinare omettendo le linee ripetute
sort file1 file2 | uniq -u ordinare stampando solo le line univoche
sort file1 file2 | uniq -d ordinare stampando solo le line duplicate
comm -1 file1 file2 comparare i contenuti di due file sopprimendo le righe univoche del file1
comm -2 file1 file2 comparare i contenuti di due file sopprimendo le righe univoche del file2
comm -3 file1 file2 comparare i contenuti di due file sopprimendo le righe che appaiono su entrambi i file
shutdown -h now arresto del sistema
init 0 arresto del sistema
telinit 0 arresto del sistema
shutdown -h ore:minuti arresto programmato del sistema
shutdown -c cancellare un arresto programmato del sistema
shutdown -r now riavvio del sistema
reboot riavvio del sistema
logout per abbandonare la sessione
top visualizza i processi di sistema che utilizzano più cpu
ps -eafw visualizza i processi di sistema
ps -e -o pid,args --forest visualizza i processi sistema in maniera gerarchica
pstree mostra un albero dei processi sistema
kill -9 IDProcesso forzare la chiusura del processo e terminarlo
kill -1 IDProcesso forzare il processo a ricaricare la configurazione
lsof -p $$ visualizza la lista dei file aperti dai processi
lsof /home/user1 la lista dei file aperti in una determinato path di sistema
strace -c ls >/dev/null mostra le chiamate di sistema fatte e ricevute da un processo
strace -f -e open ls >/dev/null visualizza le chiamate alle librerie
watch -n1 'cat /proc/interrupts' mostra gli interrupts in tempo reale
last reboot mostra lo storico dei reboot
lsmod visualizza i mooduli del kernel caricati
free -m visualizza lo status della ram in megabyte
smartctl -A /dev/hda monitorare l'affidabilità di un hard-disk mediante SMART
smartctl -i /dev/hda verificare se SMART è attivo su un hard-disk
tail /var/log/dmesg visualizzare gli eventi inerenti al processo di boot del kernel
tail /var/log/messages visualizzare gli eventi di sistema
arch mostra l'architettura della macchina
uname -m mostra l'architettura della macchina
uname -r mostra la versione del kernel in uso
dmidecode -q mostra componenti hardware di sistema - (SMBIOS/DMI)
hdparm -i /dev/hda mostra le info e le caratteristiche di un hard-disk
hdparm -tT /dev/sda eseguire un test di lettura su un hard-disk
cat /proc/cpuinfo visualizzare informazioni sulla cpu
cat /proc/interrupts visualizzare gli interrupts
cat /proc/meminfo verificare la memoria in uso
cat /proc/swaps visualizzare i filesystem(s) swap
cat /proc/version visualizzare la versione del kernel
cat /proc/net/dev visualizzare gli adattori di rete
cat /proc/mounts visualizzare i filesystem(s) montati
lspci -tv visualizzare le periferiche pci
lsusb -tv visualizzare le periferiche usb
date visualizzare la data di sistema
cal 2008 visualizzare il calendario dell'anno 2008
date 041217002007.00 impostare data e ora -  MeseGiornoOreMinutiAnno.Secondi
clock -w salvare definitivamente le modifiche della data sul BIOS
mount /dev/hda2 /mnt/hda2 montare il disco hda2 nella directory /mnt/hda2
umount /dev/hda2 smontare il disco hda2 (prima uscire da /mnt/hda2)
fuser -km /mnt/hda2 forzare umount quando il device è occupato
mount /dev/fd0 /mnt/floppy montare un floppy-disk
mount /dev/cdrom /media/cdrom montare un cdrom/dvdrom
mount -o loop file.iso /media/cdrom montare un file ISO9660 o Immagine iso
mount -t vfat /dev/hda5 /mnt/hda5 montare un filesystem windows FAT32
mount /dev/sda1 /mnt/usbdisk montare una pendrive usb o flash
df -h visualizzare l'elenco delle partizioni montate
du -sh dir1 conoscere lo spazio su disco occupato dalla directory dir1
du -sk * | sort -rn visualizzare la dimensione dei file ordinanti per dimensione
badblocks  -v  /dev/hda1 verifica bad blocks sul disco hda1
fsck /dev/hda1 ripara e verifica l'integrità del filesystem linux sul disco hda1
fsck.ext2 /dev/hda1 ripara e verifica l'integrità del filesystem ext2 sul disco hda1
e2fsck /dev/hda1 ripara e verifica l'integrità del filesystem ext2 sul disco hda1
mkfs /dev/hda1 creare un filesystem di tipo linux sulla partizione hda1
mke2fs /dev/hda1 creare il filesystem di tipo linux ext2 sulla partizione hda1
mke2fs -j /dev/hda1 creare il filesystem di tipo linux ext3 sulla partizione hda1
mkfs -t vfat 32 -F /dev/hda1 creare un filesystem di tipo FAT32
fdformat  -n /dev/fd0 formattare un floppy disk
mkswap /dev/hda3 creare un filesystem di tipo swap
swapon /dev/hda3 attivare una nuova partizione di swap
swapon /dev/hda2 /dev/hdb3 attivare due partizioni di swap
mkisofs /dev/cdrom > cd.iso creare l'immagine iso di un cdrom sull'hard-disk
mkisofs /dev/cdrom | gzip > cd_iso.gz creare l'immagine iso compressa di un cdrom
mkisofs -J -allow-leading-dots -R -V LabelCD -iso-level 4 -o ./cd.iso data_cd creare l'immagine iso di una directory da masterizzare
cdrecord -v dev=/dev/cdrom cd.iso masterizzare un immagine iso
gzip -dc cd\_iso.gz | cdrecord dev=/dev/cdrom masterizzare un immagine iso compressa
mount -o loop cd.iso /mnt/iso montare un'immagine iso
cd-paranoia -B rippare le traccie audio da un cd in file wav
cd-paranoia -- '-3' rippare le prime tre traccie audio da un cd
cdrecord --scanbus scansionare il bus per identificare il canale scsi
groupadd nomegruppo creare un nuovo gruppo
groupdel nomegruppo eliminare un gruppo
groupmod -n nuovogruppo vecchiogruppo rinominare un gruppo
useradd -c "Nome Cognome" -g admin  -d /home/user1 -s /bin/bash user1 creare un nuovo utente appartenente al gruppo admin
useradd user1 creare un nuovo utente
userdel -r user1 eliminare un utente (-r elimina la home directory)
usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 modificare gli attributi utente
passwd modificare la password
passwd user1 modificare la password di un utente(solo da root)
chage -E 2005-12-31 user1 impostare la scadenza password per un utente
chsh --list-shells mostra gli utenti loggati da remoto
who -a mostra gli utenti loggati in maniera dettagliata
usare + per impostare i permessi e - per rimuoverli
ls -lh visualizzare i permessi
chmod ugo+rwx directory1 impostare i permessi di lettura(r), scrittura(w) ed accesso(x) per gli utenti proprietario(u), gruppo(g) e altri(o)
chmod go-rwx directory1 rimuovere i permessi di lettura(r), scrittura(w) ed accesso(x) per gli utenti gruppo(g) e altri(o)
chown user1 file1 modificare il proprietario di un file
chown -R user1 directory1 modificare l'utente proprietario di una directory e tutti i file e directory contenuti al suo interno
chgrp group1 file1 modificare il gruppo di appartenenza di un file
chown user1:group1 file1 modificare utente e gruppo proprietario di un file
find / -perm -u+s visualizzare tutti i file presenti sul sistema con SUID impostato
chmod u+s /bin/file1 impostare il bit SUID su un file binario l'utente che esegue quel file ottienegli stessi privilegi del proprietario
chmod u-s /bin/file1 disattivare il bit SUID su un file binario
chmod g+s /home/public impostare il bit SGID su una directory simile a SUID ma impostato sulla directory
chmod g-s /home/public disattivare il bit SGID su una directory
chmod o+t /home/public impostare il bit STIKY su una directory consente la cancellazione dei file solo ai legittimi proprietari
chmod o-t /home/public disattivare il bit STIKY su una directory
chattr +a file1 consente su un file l'apertura in scrittura solo in modalità append
chattr +c file1 consente che un file venga compresso dal kernel automaticamente
chattr +d file1 fa in modo che il programma Dump ignori il file durante un backup
chattr +i file1 rende un file immutabile, ovvero non potr\`{a} essere eliminato, alterato, rinominato o linkato
chattr +s file1 consente ad un file di essere cancellato in maniera sicura, azzerandone i blocchi sul disco
chattr +S  file1 fa in modo che se un file viene modificato i cambiamenti vengano scritti in maniera sincrona sul disco come con sync
chattr +u file1 permette di recuperare il contenuto di un file anche se questo viene cancellato
lsattr visualizzare gli attributi speciali
bunzip2 file1.bz2 decomprimere il file denominato file1.bz2
bzip2 file1 comprimere il file denominato file1
gunzip file1.gz decomprimere il file denominato file1.gz
gzip file1 comprimere il file denominato file1
gzip -9 file1 comprimere con la massima compressione
rar a file1.rar testfile creare un archivio rar chiamato file1.rar
rar a file1.rar file1 file2 dir1 comprimere in rar simultaneamente file1, file2 e dir1
rar x file1.rar comprimere un archivio rar
unrar x file1.rar decomprimere un archivio rar
tar -cvf archive.tar file1 creare un archivio tar non compresso
tar -cvf archive.tar file1 file2 dir1 creare un archivio contenente file1, file2 e dir1
tar -tf archive.tar visualizzare il contenuto di un archivio
tar -xvf archive.tar estrarre un archivio tar
tar -xvf archive.tar -C /tmp estrarre un archivio tar dentro /tmp
tar -cvfj archive.tar.bz2 dir1 creare un archivio tar compresso in bzip2
tar -xvfj archive.tar.bz2 decomprimere un archivio tar compresso in bzip2
tar -cvfz archive.tar.gz dir1 creare un archivio tar compresso in gzip
tar -xvfz archive.tar.gz decomprimere un archivio tar compresso in gzip
zip file1.zip file1 creare un archivio compresso in zip
zip -r file1.zip file1 file2 dir1 zippare più file e directory contemporaneamente
unzip file1.zip decomprimere un archivio zip
dpkg -i pacchetto.deb installare/aggiornare un pacchetto deb
dpkg -r nomepacchetto rimuovere un pacchetto deb dal sistema
dpkg -l visualizzare tutti i pacchetti deb installati sul sistema
dpkg -l | grep httpd visualizzare tutti i pacchetti col nome httpd
dpkg -s nomepacchetto ottenere informazioni su un determinato pacchetto installato
dpkg -L nomepacchetto la lista dei file forniti da un pacchetto installato
dpkg --contents pacchetto.deb la lista dei file forniti da un pacchetto non installato
apt-get install nomepacchetto installare/aggiornare un pacchetto deb
apt-cdrom install nomepacchetto installare/aggiornare un pacchetto deb da cdrom
apt-get update aggiorna la lista dei pacchetti(non installati)
apt-get upgrade aggiorna tutti pacchetti deb installati
apt-get remove nomepacchetto rimuovere un pacchetto deb dal sistema
apt-get check verifica la corretta risoluzione delle dipendenze
apt-get clean ripulire la cache dai pacchetti scaricati
apt-cache search nomepacchetto ritorna la lista dei pacchetti con la stringa
dump -0aj -f /tmp/home0.bak /home backup full della directory /home
dump -1aj -f /tmp/home0.bak /home backup incrementale della directory /home
restore -if /tmp/home0.bak ripristino di un backup in maniera interattiva
rsync -rogpav --delete /home /tmp  rsync -rogpav -e ssh --delete sincronizzazione tra directory rsync via ssh tunnel
ifconfig eth0 visualizza configurazione di una scheda di rete ethernet
ifup eth0 attiva interfaccia eth0
ifdown eth0 disattiva interfaccia eth0
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 configura ip address
ifconfig eth0 promisc configura eth0 in modalità promiscua
dhclient eth0 active interface eth0 in dhcp mode
route -n visualizza tabella di routing
route add -net 0/0 gw IPGateway configura default gateway
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configura route statica
route del 0/0 gw IPgateway rimuovi route statica
ip link show mostra status link di tutte le interfaccie
mii-tool eth0 mostra status link dell'interfaccia 'eth0'
ethtool eth0 mostra statistiche scheda di rete 'eth0'
netstat -tup tutte le connessioni di rete attive e rispettivi PID
netstat -tupl tutti servizi di rete sul sistema e rispettivi PID
tcpdump tcp port 80 visualizza tutto il traffico http
iwlist scan visualizza le reti wireless
iwconfig eth1 visualizza configurazione di una scheda rete wireless
hostname mostra l'hostname del sistema
host www.example.com risoluzione hostname in ip address e viceversa
nslookup www.example.com risoluzione hostname in ip address e viceversa
whois www.example.com lookup sul database Whois
nbtscan ipaddr risoluzione nome netbios
nmblookup -A ipaddr risoluzione nome netbios
smbclient -L ipaddr/hostname visualizza le condivisioni remote di un host windows
smbget -Rr smb://ipaddr/share come wget permette di scaricare file da un host windows via smb
mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share montare una condivisione di rete windows

I contenuti di AlNao.it potrebbero avere inesattezze o refusi. Non potrà in alcun caso e per qualsiasi motivo essere ritenuta responsabile di eventuali imprecisioni ed errori né di danni causati. Il sito web e tutte le informazioni ed i contenuti in esso pubblicati potranno essere modificati in qualsiasi momento e di volta in volta e senza preavviso. Poiché ogni materiale sarà scaricato o altrimenti ottenuto attraverso l’uso del servizio a scelta e a rischio dell’utente, ogni responsabilità per eventuali danni a sistemi di computer o perdite di dati risultanti dalle operazioni di scarico effettuato dall'utente, ricade sull'utente stesso e non potrà essere imputata ad AlNao.it che declina ogni responsabilità per eventuali danni derivanti dall'inaccessibilità ai servizi presenti sul sito o da eventuali danni causati da virus, file danneggiati, errori, omissioni, interruzioni del servizio, cancellazioni dei contenuti, problemi connessi alla rete, ai provider o a collegamenti telefonici e/o telematici, ad accessi non autorizzati, ad alterazioni di dati, al mancato e/o difettoso funzionamento delle apparecchiature elettroniche dell’utente stesso.

AlNao.it ha adottato ogni possibile accorgimento al fine di evitare che siano pubblicati, nel sito web, contenuti che descrivano o rappresentino scene o situazioni inappropriate o tali che, secondo la sensibilità degli utenti, possano essere ritenuti lesivi delle convinzioni civili, dei diritti umani e della dignità delle persone, in tutte le sue forme ed espressioni. In ogni caso non garantisce che i contenuti del sito web siano appropriati o leciti in altri Paesi, al di fuori dell’Italia. Tuttavia, qualora tali contenuti siano ritenuti non leciti o illegali in alcuni di questi Paesi, ti preghiamo di evitare di accedere al nostro sito e ove scegliessi, in ogni caso, di accedervi, ti informiamo che l’uso che deciderai di fare dei servizi forniti dal sito sarà di tua esclusiva e personale responsabilità. L’utente sarà esclusivo responsabile della valutazione delle informazioni e del contenuto ottenibile mediante il sito web. Il sito web e tutte le informazioni ed i contenuti in esso pubblicati potranno essere modificati in qualsiasi momento e di volta in volta e senza preavviso.

Le pagine di questo sito sono protette dal diritto d’autore (copyright). In particolare a norma della legge sul diritto d’autore e il contenuto del sito è protetto contro duplicazioni, traduzioni, inserimento o trasformazione dello stesso in altri media, incluso l’inserimento o la trasformazione con mezzi elettronici. La riproduzione e lo sfruttamento economico di tutto o di parte del contenuto di questo sito sono consentite solo a seguito del consenso scritto dell’avente diritto. Sia il contenuto che la struttura del sito sono protetti dal diritto d’autore. In particolare, la duplicazione di informazioni o dati, l’uso dei testi o di parte di essi o delle immagini contenute nel sito (eccetto per le foto ad uso stampa) è consentita solo previo consenso scritto dell’avente diritto. Anche le illustrazioni, a norma dell’art. 1 della legge 633/1941 – e successive modifiche e integrazioni – sono protette dal diritto d’autore. Il diritto di pubblicazione e riproduzione di questi disegni è di titolarità dell’avente diritto. Il diritto d’autore sui disegni rimane in vigore anche per i disegni automaticamente o manualmente aggiunti a un archivio. Nulla di quanto contenuto in questo sito vale come concessione a terzi dei diritti di proprietà industriale ed intellettuale indicati in questa sezione. Ci riserviamo tutti i diritti di proprietà intellettuale del sito web.

Marchi ed immagini riferibili a soggetti terzi utilizzati in questo sito non appartengono a AlNao.it e sono da ritenersi di proprietà esclusiva dei rispettivi titolari. Le denominazioni dei prodotti pubblicati su questo sito web o delle società menzionate, anche qualora non siano indicate con il simbolo identificativo della registrazione del marchio sono marchi di titolarità di terzi e sono protetti dalla legge sui marchi (D.lgs. 30/2005 e successive modifiche e integrazioni) e dalle norme in tema di concorrenza sleale. Qualsiasi riproduzione degli stessi è da ritenersi vietata ai sensi di legge. In particolare è espressamente vietato qualsiasi uso di questi marchi senza il preventivo consenso scritto del relativo titolare ed, in particolare, è vietato utilizzarli in modo da creare confusione tra i consumatori in merito all'origine dei prodotti o per finalità di sponsorizzazione, nonché in qualsiasi modo tale da svilire e discreditare il titolare del marchio. Tutti i diritti che non sono espressamente concessi sono riservati al titolare del marchio.

In aggiunta a quanto indicato in altre previsioni delle Condizioni Generali d’Uso, AlNao.it non potrà essere ritenuta in alcun caso responsabile di alcun danno derivante dall'utilizzo o dall'impossibilità di utilizzare il sito web, i contenuti, le informazioni o connessi alla qualità degli stessi.