## Fondamenti di Linux

Linux prende ispirazione dal sistema operativo Unix, apparso per la prima volta nel 1969 ed ancora in uso e sviluppo tutt'oggi. Molte delle convenzioni utilizzate da Unix sono presenti anche in Linux e sono centrali per capire i fondamenti del sistema.

UNIX inizialmente era un sistema interamente basto sull'interazione dalla riga di comando, questo è ancora possibile in Linux. Le interfacce grafiche, icone e menù sono costruite sulla base di una interfaccia a riga di comando. Questo implica anche il fatto che il file system di Linux sia strutturato per essere facilmente gestibile e accessibile dalla riga di comando.

### Directory e file system

Il file system di Linux e Unix è organizzato in una struttura ad albero gerarchica. Il livello più alto del file system è `/` o directory root. Nella filosofia di Unix e Linux, tutto è considerato un file (inclusi i dischi fissi, le partizioni e i dispositivi rimovibili). Questo significa che tutti gli altri file e directory (inclusi gli altri dischi e partizioni) esistono sotto la directory root .

Per esempio, `/home/mario/ubuntu.odt` mostra il path assoluto al file `ubuntu.odt` presente nella directory `mario` all'interno della directory `home` che a sua volta è contenuta nella directory root (`/`).

All'interno della directory root (`/`) è presente un insieme di directory comuni a tutte le distribuzioni Linux. Quello che segue è un elenco delle directory più comuni presenti nella directory root (`/`):

- `/bin`: applicazioni binarie importanti

- `/boot`: file di configurazione sul boot

- `/dev`: file dei device (dispositivi)

- `/etc`: file di configurazione, script di avvio, etc...

- `/home`: directory home degli utenti locali

- `/lib`: librerie di sistema

- `/lost+found`: fornisce un sistema lost+found per i file contenuti all'interno della directory root (`/`).

- `/media`: dispositivi rimovibili (media) montati (caricati) come CD, fotocamere digitali, ecc... .

- `/mnt`: filesystem montati

- `/opt`: posizione dove vanno installate le applicazioni opzionali (optional)

- `/proc`: directory speciale e dinamica dove vengono mantenute le informazioni riguardanti lo stato del sistema, inclusi i processi attualmente in esecuzione

- `/root`: home directory dell'utente root

- `/sbin`: binari di sistema importanti

- `/sys`: file di sistema

- `/tmp`: file temporanei

- `/usr`: file e applicazioni che sono per la maggior parte disponibili a tutti gli utenti (users)

- `/var`: file variabili come log e database

### Permessi

Tutti i file in un sistema Linux hanno permessi che abilitano o meno gli utenti alla visualizzazione, modifica o esecuzione. Il super utente "root" ha l'abilità di accedere a ogni file nel sistema. Ogni file possiede delle restrizioni di accesso, restrizioni sull'utente ed è associato con un proprietario/gruppo.

Ogni file è protetto dai seguenti tre insiemi di permessi, in ordine di importanza:

- utente

  si applica all'utente proprietario del file

- gruppo

  si applica al gruppo associato con il file

- altro

  si applica a tutti gli altri utenti

All'interno di questi insiemi ci sono i permessi attuali. I permessi e come si applicano a file e directory sono elencati di seguito:

- lettura

  i file possono essere visualizzati/aperti

  il contenuto delle directory può essere visualizzato

- scrittura

  i file possono essere modificati o cancellati

  il contenuto delle directory può essere modificato

- esecuzione

  i file eseguibili possono essere avviati come programmi

  si può accedere alle directory

Per visualizzare e modificare i permessi a file e directory, selezionare Risorse->Cartella Home e fare clic con il pulsante destro del mouse su di un file o una directory. Quindi selezionare Proprietà. I permessi sono mostrati nella scheda Permessi ed è possibile modificare tutti i permessi finché si è i proprietari del file.

Per maggiori informazioni riguardo i permessi in Linux consultare il wiki di Ubuntu.

### Root e sudo

L'utente root in GNU/Linux è quello che ha accesso amministrativo al sistema. Un utente normale non ha questo tipo di accesso per ragioni di sicurezza. Invece, un accesso amministrativo è dato a degli utenti individuali che possono usare l'applicazione "sudo" per eseguire compiti di amministrazione. Il primo utente creato durante l'installazione ha accesso al comando sudo. È possibile restringere o abilitare l'accesso a sudo agli utenti con l'applicazione Utenti e gruppi (consultare la sezione chiamata “Utenti e gruppi” per maggiori informazioni).

Quando viene eseguita un'applicazione che richiede privilegi di root, sudo chiede all'utente di digitare la propria password. Questo assicura che applicazioni non affidabili non danneggino il vostro sistema e serve a ricordare che si stanno compiendo delle azioni di amministrazione che richiedono attenzione!

Per usare sudo da riga di comando inserire semplicemente "sudo" prima del comando da eseguire. Sudo chiederà allora la vostra password.

Sudo ricorda la password per un certo lasso di tempo. Questa caratteristica permette agli utenti di eseguire più compiti amministrativi di seguito senza immettere la password ogni volta.

Prestare attenzione nel compiere attività di amministrazione del sistema, è possibile danneggiare l'intero sistema!

Altri consigli per l'utilizzo di sudo:

- Per utilizzare un terminale di "root", digitare alla riga di comando "sudo -i".

- Tutti gli strumenti amministrativi con interfaccia grafica utilizzano sudo, in questo modo vi verrà chiesta, se necessaria, la vostra password.

- Per maggiori informazioni riguardo il programma sudo e l'assenza dell'utente root in Ubuntu, consultare il wiki di Ubuntu.

### Terminali

Lavorare alla riga di comando non è un'impresa scoraggiante come si può pensare. Non c'è nessuna conoscenza di base da avere per poter utilizzare la riga di comando, è un programma come tutti gli altri. Molti compiti di Linux possono essere svolti dalla riga di comando, benché ci siano strumenti grafici per la maggior parte dei programmi, qualche volta non sono sufficienti. Qui è dove la riga di comando diventa utile.

Il terminale viene solitamente chiamato il prompt dei comandi o la shell. In passato gli utenti si interfacciavano con il computer in questo modo, ma gli utenti Linux hanno capito che utilizzare la shell per certi compiti risulta più veloce dell'utilizzo di un metodo grafico; per questo mantiene ancora una certa importanza. Qui vi sarà spiegato come utilizzare il prompt dei comandi.

L'uso originale del terminale consisteva in un esploratore di file ed è usato ancora come esploratore di file, nel malaugurato caso di un disuso dell'interfaccia grafica. È possibile utilizzare il terminale per esplorare il file system e modificare i cambiamenti apportati.

#### Avviare il terminale

Per avviare un Terminale selezionare Applicazioni->Accessori->Terminale .

#### Comandi di base

Visualizzare le directory: ls

  Il comando ls (LiSt) elenca i file in differenti colori a seconda del formato di questi.

Creare una directory: mkdir (nome directory)

  Il comando mkdir (MaKeDIRectory) crea una directory.

Cambiare directory: cd (directory/posizione)

  Il comando cd (ChangeDirectory) vi sposterà nella direcotry specificata dopo il comando.

Copiare file/directory: cp (nome del file o della directory) (directory o nome del file di destinazione)

  Il comando cp (CoPy) copia qualsiasi file specificato. Il comando cp -r copia qualsiasi directory specificata.

Rimuovere file/directory: rm (nome del file o della directory)

  Il comando rm (ReMove) cancella qualsiasi file specificato. Il comando rm -rf cancella qualsiasi directory specificata.

Rinominare file/directory: mv (nome del file o della directory)

  Il comando mv (MoVe) rinomina/sposta qualsiasi file o directory specificata.

Trovare file/directory: locate (nome del file o della directory)

  Il comando locate cerca all'interno del computer qualsiasi nome di file specificato. Utilizza una indicizzazione dei file all'interno del sistema per funzionare più velocemente: per aggiornare questa indicizzazione utilizzare il comando updatedb. Questo programma viene eseguito automaticamente giornalmente, se il computer viene lasciato acceso. Necessita dei privilegi di amministratore per essere eseguito (consultare la sezione chiamata “Root e sudo”).

È possibile utilizzare anche i metacaratteri come "*" (per tutti i file) o "?" (per la corrispondenza di un carattere) per la ricerca di uno o più file.

Per una introduzione ai comandi di Linux, consultare il wiki di Ubuntu.

#### Passare alla modalità console

Per accedere alla riga di comando in Ubuntu solitamente si avvia un terminale (consultare la sezione chiamata “Avviare il terminale”). Qualche volta può essere utile passare alla modlità console:

1. Usare la scorciatoia da tastiera Ctrl-Alt-F1 per passare alla prima console.

2. Per passare alla modalità grafica, usare la scorciatoia da tastiera Ctrl-Alt-F7.

Sono disponibili sei console. Si può accedere a ciascuna di esse attraverso l'uso delle scorciatoie da tastiera a partire da Ctrl-Alt-F1 fino a Ctrl-Alt-F6.

#### Disabilitare l'avviso acustico nel terminale

1. Avviare un Terminale, selezionare Applicazioni->Accessori->Terminale.

2. Modifica->Profilo attuale.... Selezionare la scheda Generale. Deselezionare la casella Avviso acustico.

### Modifica del testo

Tutte le configurazioni e impostazioni sotto Linux sono salvate in file di testo. Benché sia possibile modificare le configurazioni con uno strumento grafico, qualche volta può essere necessario modificare un file "a mano". Gedit è l'editor di testo predefinito per Ubuntu. È possibile avviare Gedit selezionando Applicazioni->Accessori->Editor di testo.

All'interno di questa guida Gedit è eseguito dalla riga di comando utilizzando gksudo, che avvia Gedit con privilegi di amministratore per poter modificare i file di configurazione.

Se è necessario utilizzare un editor di testo dalla riga di comando, è possibile usare nano, un semplice e funzionale editor di testo. Ogni volta che lo si avvia dalla riga di comando, utilizzare questo comando, che assicura il non inserimento di interruzioni di riga:

    nano -w

Per maggiori informazioni riguardo l'utilizzo di nano, consultare il wiki di Ubuntu.

Ci sono molti altri editor di testo a interfaccia testuale per Ubuntu. Alcuni sono VIM e Emacs (i pregi e i difetti di uno o dell'altro sono la causa di un simpatico dibattito all'interno della comunità Linux). Solitamente sono più difficili da utilizzare, ma più potenti.

### Utenti e gruppi

Per aggiungere gruppi o utenti al sistema, è possibile utilizzare l'applicazione Utenti e gruppi situata in Sistema->Amministrazione->Utenti e gruppi .

Per aggiungere un nuovo utente, fare clic su Aggiungi utente..., inserire i dati necessari e poi fare clic su OK. Per modificare le proprietà di ciascun utente, fare clic sul pulsante Proprietà nella scheda Utenti.

Per aggiungere un nuovo gruppo, selezionare la scheda Gruppi e fare clic su Aggiungi gruppo.... Scegliere un nome per il nuovo gruppo e, se desiderato, modificare il valore predefinito per lo ID del gruppo. Se si prova ad associare a ID del gruppo un valore già in uso, il sistema vi avvertirà.

È possibile aggiungere degli utenti al gruppo appena creato selezionando un utente dal menù sulla sinistra e facendo clic sul pulsante Aggiungi. Rimuovere un gruppo è altrettanto semplice: selezionare un utente dal menù sulla destra e fare clic su Rimuovi. Una volta finito, fare clic sul pulsante OK e il nuovo gruppo con i suoi utenti verrà creato.

Per modificare le proprietà di un gruppo, dalla scheda Gruppi, selezionare un gruppo e fare clic sul pulsante Proprietà.

Per rimuovere un utente o un gruppo dal sistema, selezionare l'utente o il gruppo da cancellare e fare clic sul pulsante Elimina.

Ottenere Ubuntu |  | Capitolo 2. Aggiungere, rimuovere e aggiornare applicazioni