LINUX-UBUNTU - ISIS Facchinetti 2014-2018

Pagina creata da Luca Basso
 
CONTINUA A LEGGERE
LINUX-UBUNTU - ISIS Facchinetti 2014-2018
LINUX-UBUNTU                                                    -

               ISIS Facchinetti 2014-2018

PAOLO MACCHI                                LINUX-UBUNTU REL-18.10.18   1
LINUX-UBUNTU - ISIS Facchinetti 2014-2018
 Note di utilizzo del sistema operativo Linux-Ubuntu                                        4
  Linux............................................................................................................................................................................ 4
     Kernel...................................................................................................................................................................... 5
  Distribuzioni................................................................................................................................................................. 6
  Organizzazione del sistema – Il File System............................................................................................................... 7
     / - root...................................................................................................................................................................... 8
      /bin......................................................................................................................................................................... 9
     home....................................................................................................................................................................... 9
     usr........................................................................................................................................................................... 9
     /etc.......................................................................................................................................................................... 9
     /lib........................................................................................................................................................................... 9
  Device......................................................................................................................................................................... 9
     /cdrom................................................................................................................................................................... 10
     /dev....................................................................................................................................................................... 10
  Organizzazione degli utenti....................................................................................................................................... 10
     Superutenti............................................................................................................................................................ 10
     Utenti e gruppi....................................................................................................................................................... 10
     Ubuntu                      11
  La dotazione software di UBUNTU............................................................................................................................ 11
  Interfaccia.................................................................................................................................................................. 11
     Terminale e comandi                                15
         Utente normale................................................................................................................................................. 16
         Utente root........................................................................................................................................................ 17
     Comandi di uso generale...................................................................................................................................... 18
     Operazioni di Gestione (file e cartelle).................................................................................................................. 21
             Accedere ad una cartella o ad una directory................................................................................................ 21
             Visualizzare il contenuto della cartella.......................................................................................................... 22
             Creare una cartella....................................................................................................................................... 22
             Rinominare una cartella................................................................................................................................ 22
             Tagliare ed incollare una cartella.................................................................................................................. 22
             Copiare ed incollare una cartella.................................................................................................................. 22
             Cancellare una cartella vuota....................................................................................................................... 22
             Cancellare una cartella non vuota................................................................................................................ 22
             Rinominare un file......................................................................................................................................... 22
             Tagliare ed incollare un file........................................................................................................................... 23
             Copiare ed incollare un file........................................................................................................................... 23
             Cancellare un file.......................................................................................................................................... 23
             Cercare una stringa in un file........................................................................................................................ 23
             Cambiare i permessi di lettura, scrittura ed esecuzione...............................................................................23
             Scaricare un file da Internet.......................................................................................................................... 24
             Esercizio....................................................................................................................................................... 25
     Compilazione e lancio di un file............................................................................................................................. 25
     Operazioni su utenti.............................................................................................................................................. 26
     Comandi composti................................................................................................................................................ 26
             Esempio Sort................................................................................................................................................ 26
             Esempio Pipe............................................................................................................................................... 27
     Reti........................................................................................................................................................................ 27
  Editor......................................................................................................................................................................... 27
     VI.......................................................................................................................................................................... 27
     gedit...................................................................................................................................................................... 29
     nano...................................................................................................................................................................... 29
     Shell                       30
     Bash...................................................................................................................................................................... 30
     Costruzione di semplici script (http://www.math.unipd.it/~burattin/tutorial/bash-scripting )...................................30
         Esecuzione di uno script................................................................................................................................... 30
         Esempi.............................................................................................................................................................. 31
             Esempio 1- Input - Output redirection........................................................................................................... 32
             esempio sort e wc......................................................................................................................................... 32
             ..................................................................................................................................................................... 32
  Le variabili................................................................................................................................................................. 33
PAOLO MACCHI                                                                                                                        LINUX-UBUNTU REL-18.10.18                      2
LINUX-UBUNTU - ISIS Facchinetti 2014-2018
Esempi.............................................................................................................................................................. 34
       I parametri posizionali........................................................................................................................................... 34
       Operatori Aritmetici............................................................................................................................................... 35
    Strutture di controllo.................................................................................................................................................. 37
       If............................................................................................................................................................................ 37
           Comando_di_condizione: Spesso come comando di condizione è necessario inserire un’espressione. Per
           fare ciò è utile il comando test espressione...................................................................................................... 37
           Confronto numeri e stringhe............................................................................................................................. 39
           Stringhe............................................................................................................................................................ 40
           Test for files and directories.............................................................................................................................. 41
           Multilevel if-then-else........................................................................................................................................ 42
       case...................................................................................................................................................................... 42
       for.......................................................................................................................................................................... 44
       while...................................................................................................................................................................... 44
    Loops........................................................................................................................................................................ 46
       for loops................................................................................................................................................................ 46
       while loops............................................................................................................................................................ 47
       La sfida................................................................................................................................................................. 48
    Sistemi operativi basati su Kernel Linux.................................................................................................................... 49
       Android.................................................................................................................................................................. 49
       iOS........................................................................................................................................................................ 50
       BlackBerry Tablet OS............................................................................................................................................ 51
           True microkernel OS......................................................................................................................................... 52
           Multicore migration........................................................................................................................................... 52
    Bibliografia................................................................................................................................................................ 52
      Appendice                     53

                         Questo testo è pubblicato sotto licenza Creative Commons - Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported - Per le condizioni
consulta: http://creativecommons.org/licenses/by-nc-sa/3.0/deed.it . Le utilizzazioni consentite dalla legge sul diritto d'autore e gli altri diritti non sono in alcun modo limitati da
quanto sopra.
Il documento è scaricabile da http://isisfacchinetti.gov.it/ , sezione download http://moodle.isisfacchinetti.it/mod/data/view.php?id=1391 di CIF2.0 http://moodle.isisfacchinetti.it/ , per
fini esclusivamente didattici e non commerciali
Segnalazioni di errori, critiche e consigli sono molto graditi e possono essere inoltrati a paolo.macchi@libero.it , oppure lasciando un commento al momento del download per gli
studenti registrati.
NOTA il documento comprende molti esempi e spiegazioni prelevate dalla Rete a cui si fa riferimento nel testo.
ISIS “Cipriano Facchinetti” via Azimonti, 5 - 21053 Castellanza (VA) - http://www.isisfacchinetti.gov.it/
Tel. 0331635718 fax 0331679586

        Convenzioni usate nel testo:

        rappresenta una nota, curiosità, un approfondimento

         rappresenta una esercitazione o esempio http://qrcode.kaywa.com/ link di riferimento
Rappresenta un codice o dei risultati o una segnalazione storica

PAOLO MACCHI                                                                                                                             LINUX-UBUNTU REL-18.10.18                       3
LINUX-UBUNTU - ISIS Facchinetti 2014-2018
Note di utilizzo del sistema
 operativo Linux-Ubuntu

Linux
http://www.linuxfoundation.org/ Nel 1985 Richard Stallman fondò la FreeSoftware Foundation, il cui obiettivo era
riassunto nell'acronimo ricorsivo GNU = Gnu's Not Unix.

                 https://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Unix_timeline.en.svg/800px-Unix_timeline.en.svg.png

In realtà l'obiettivo era la scrittura di un intero Sistema Operativo, analogo a UNIX, con delle caratteristiche innovative
e varie applicazioni di corredo, che fosse interamente free, negando così la natura commerciale di UNIX.

Nel 1991 Linus Benedict Torvalds, studente del corso di Sistemi Operativi all'Università di Helsinky, aprì la strada allo
sviluppo di LINUX, che ad oggi è forse il segno più tangibile della realizzazione del progetto GNU.

“Linux può essere installato su una ampia gamma di computer, dai cellulari, tablet computer e console ai mainframe e
i supercomputer. Linux è anche un sistema operativo per server e fa funzionare i dieci supercomputer più veloci nel
mondo.

PAOLO MACCHI                                                                                              LINUX-UBUNTU REL-18.10.18   4
LINUX-UBUNTU - ISIS Facchinetti 2014-2018
Kernel
Il kernel è il "cuore" di un sistema operativo (nucleo) e fornisce tutte le funzioni essenziali per il sistema, in particolare
la gestione della memoria, delle risorse del sistema e delle periferiche, assegnandole di volta in volta ai processi in
esecuzione. La controparte del kernel è la shell, ovvero l'interfaccia utente del sistema, la parte più esterna. I
programmi chiedono le risorse al kernel attraverso delle chiamate (system call) e non possono accedere direttamente
all'hardware. Il kernel si occupa quindi di gestire il tempo processore, le comunicazioni e la memoria distribuendole ai
processi in corso a seconda delle priorità (scheduling) realizzando così il multitasking.
L'architettura scelta da Linux Torvalds (il creatore di Linux nel 1991) per il kernel (ovvero una struttura monolitica,
considerata da alcuni obsoleta a differenza della più moderna architettura a microkernel) fu causa di un dibattito molto
acceso con Andrew S. Tanenbaum “ (Wikipedia)

(Per approfondimenti: http://www.ubuntu-it.org/progetto/storia-filosofia  http://www.di.unito.it/~vercelli/works/command-summary.html
info http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=1400&Itemid=229 )

                                                                    Kernel Linux
                                             http://www.cyberciti.biz/tips/understanding-the-linux-kernel.html
http://www.disi.unige.it/person/DelzannoG/SO1/AA0506/LibroSGG/linux.pdf http://www.ibm.com/developerworks/linux/library/l-linux-kernel/

    http://www.federica.unina.it/ingegneria/sistemi-operativi/gestione-dei-processi-nei-sistemi-operativi-unixlinux-e-
                                                       windows/

PAOLO MACCHI                                                                                                     LINUX-UBUNTU REL-18.10.18   5
LINUX-UBUNTU - ISIS Facchinetti 2014-2018
La creazione di un nuovo processo si attua tramite la primitiva FORK: se il processo padre fa una “fork” genera un
FIGLIO che è la copia del padre in tutto tranne che per il valore del PID (Process Identifier (parte da 0 (swapper per la
gestione della memoria)) : i dati vengono duplicati e i files condivisi. Il Padre puo’ SOSPENDERSI in attesa che il figlio
finisca, oppure puo’ PROSEGUIRE per conto suo. (N.B: la fork , in caso di successo, ritorna il valore 0 al proceso
figlio, mentre il PID del figlio al processo padre, che cosi’ puo’ conoscere il figlio.In caso di insuccesso viene ritornato il
valore -1 al padre e non viene generato il processo figlio. (Se il figlio termina e il padre non fa una wait il processo
diventa Zombie (morto vivente) finchè il padre non procede alle esequie).

Ex. processo padre (pippo) che genera un figlio (vi)
  Pippo()
  {
  int processo,stato;
  processo=fork();
  if (processo
LINUX-UBUNTU - ISIS Facchinetti 2014-2018
D'altro canto, dal punto di vista dell'utente che non deve fare amministrazione di sistema, l'una distribuzione o l'altra
fa poca differenza: può percepire più che altro la quantità e l'aggiornamento degli applicativi installati.
NOTA
Sul sito http://www.linuxlookup.com/linux_iso è possibile reperire tutte le distribuzioni attualmente disponibili e
liberamente scaricabili.
Quale distribuzione scegliere? Dipende dall'uso che si pensa di fare di Linux. Esempio: se si ha un Mac, non c'è
molta scelta, così come se si ha una workstation particolare. Se non ci sono motivi specifici per scegliere una
particolare distribuzione, è bene scegliere secondo i propri gusti o esigenze. Ubuntu è forse la più facile da usare ed
è quella a cui noi faremo riferimento nel seguito.

Organizzazione del sistema – Il File System
In un sistema Linux, o più in generale Unix, all'utente viene presentato un unico "dispositivo", come fosse un unico
disco.
Spesso per ``file system'' si intende l'organizzazione a basso livello dei file e delle directory sul corrispondente mezzo
fisico di memorizzazione, che la maggior parte delle volte è una partizione di un disco rigido (fisso). Nel seguito per
file system si intende l'albero delle directory corrispondente a una generica installazione: analizziamone alcune parti.
Non tutte le installazioni di Linux hanno lo stesso albero delle directory, in particolare ogni distribuzione può
presentare delle differenze anche significative da una release all'altra; inoltre, da questo punto di vista le varie
distribuzioni di Linux possono differire anche notevolmente tra loro.
Quindi, per fare un'esposizione utile e sensata, non vengono riportate tutte le directory, ma solo le più importanti, e
non si scende più di un livello dentro l'albero. Ecco un riferimento a Ubuntu Linux.

PAOLO MACCHI                                                                             LINUX-UBUNTU REL-18.10.18      7
LINUX-UBUNTU - ISIS Facchinetti 2014-2018
fig.2 – L'organizzazione dei file in Linux Ubuntu

(A sinistra della figura il file system è rappresentato con il comando “tree” che va installato con: sudo apt-get install
tree)

Directory principali: cfr https://drive.google.com/drive/my-drive :

/ - root
Il file system ha origine in /, detta ``root'' o directory radice. Si nota esplicitamente che root è anche la username

PAOLO MACCHI                                                                               LINUX-UBUNTU REL-18.10.18   8
LINUX-UBUNTU - ISIS Facchinetti 2014-2018
dell'amministratore di sistema, la cui home directory è /root.
Il file system ha origine in /, detta root o directory radice. Si nota esplicitamente che root è anche la username
dell'amministratore di sistema, la cui home directory è /root.

 /bin
è la directory che contiene i programmi principali del sistema, quelli che devono essere disponibili subito
all'accensione, per poter avviare i sistema.
Questa directory contiene le 'aree locali' dei
singoli utenti.

home
Quando un utente si collega facendo login, egli non si trova nella directory principale del sistema (la root /) ma viene
posizionato in genere in una directory "privata", diversa per ogni utente. Questa directory, detta home, in genere ha il
nome dell'utente ed è una sottodirectory della directory home.

usr
In questa directory risiede la maggiorparte del sistema. In usr e nelle sue sottodirectory risiedono tutti i programmi
installati, i file del manuale, la documentazione ed altroancora.
Una caratteristica di usr è che i suoi file in genere possono essere solo letti.
La directory /usr/man contiene delle sottodirectory in cui si trovano dei file corrispondenti alle pagine di manuale in
linea.

/etc
La directory etc è una delle più importantidel sistema perché contiene la quasitotalità dei file di configurazione del
sistema, compresi quelli che servono per la fase di accensione.

/lib
Questa directory contiene le librerie di sistema,cioè quegli archivi di funzioni utilizzati da tutti. Troveremo in questa
directory le librerie di funzioni utilizzate dal linguaggio C, richiamate da tutti i programmi compilati in questo
linguaggio, ma anche varie librerie utilizzate da altri linguaggi o sistemi.

Device

PAOLO MACCHI                                                                            LINUX-UBUNTU REL-18.10.18      9
LINUX-UBUNTU - ISIS Facchinetti 2014-2018
/cdrom
è una directory vuota, alla quale l'amministratore di sistema potrà collegare (montare) un disco inserito nel lettore CD-
Rom.

/dev
contiene dei file speciali che vengono usati per indicare al sistema i dispositivi.

Organizzazione degli utenti
Esistono differenze fra i vari utenti, definite dai permessi e dall'acceso ai file e comandi
 che un'utente può lanciare.
 E' convenzione che i semplici utenti possano scrivere, leggere e modificare file solo all'interno del loro ambiente
(home) e lanciare semplici comandi che non influiscono sulla configurazione del sistema.

Superutenti

Per poter accedere completamente alle risorse del sistema bisogna accedere al sistema come
superuser,detto root. L'utente root è l'amministratore del sistema con tutti i poteri che comporta questo ruolo, quindi è
molto importante che l'accesso a root sia limitato solo al reale amministratore di sistema (sysadmin).

Utenti e gruppi

Prima di accedere al sistema occorre autenticarsi indicando un nome di utente conosciuto dal sistema. Gli utenti, a
loro volta, appartengono a gruppi. Ogni utente deve appartenere almeno ad un gruppo, ma può appartenere a più
gruppi.

PAOLO MACCHI                                                                            LINUX-UBUNTU REL-18.10.18
10
Ubuntu

http://www.ubuntu-it.org/ -
http://www.ubuntu.com/ubuntu http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=358&Itemid=33

La dotazione software di UBUNTU
In ogni distribuzione Linux vengono inclusi moltissimi software applicativi gratuiti e liberamente distribuibili (sempre
secondo la licenza GNU- GPL) (cfr “Ubuntu per principianti” in Youtube)

Interfaccia

PAOLO MACCHI                                                                                        LINUX-UBUNTU REL-18.10.18
11
Scrivania (http://help.ubuntu-it.org/8.04/ubuntu/user-guide/it/overview-desktop.html)
“La scrivania risiede dietro tutti gli altri componenti presenti sullo schermo. Quando non vi è alcuna finestra visibile, la
scrivania è quella parte dello schermo tra il pannello superiore e quello inferiore. Sulla scrivania è possibile
posizionare file e cartelle a cui si voglia accedere con facilità.

Quando si inserisce un CD, una unità flash o un altro supporto rimovibile, oppure un dispositivo contente file come un
lettore musicale o una fotocamera digitale, sulla scrivania compare una icona che rappresenta quel dispositivo.

           I file e le cartelle posizionati sulla scrivania sono memorizzati in una
           cartella speciale all'interno delle propria cartella home, dal nome Desktop.
           Come ogni altra cartella, è possibile porre direttamente in essa file (o altre
           cartelle), semplicemente questi appariranno anche sulla scrivania.”
In alto a destra le icone di notifica: mail, rete, volume, utente, icona di accensione (pann. Controllo , etc).
A sx dello schermo :
      DASH: Bottone di Ubuntu ( corrisponde allo START di Win), con casella di ricerca. Si basa su Lens (lenti di
         ricerca (dash di base): generali, applicativi, doc privati e cartelle, musica) e Scope (motore di ricerca che puo’
         cercare sul PC locale o in rete). Cfr https://launchpad.net/ per gli sviluppatori

       Spazi di lavoro

PAOLO MACCHI                                                                               LINUX-UBUNTU REL-18.10.18
12
   Cartella Home

               o   Creazione nuove cartelle, crea nuovo file, copia incolla…
               o   Proprietà

               o   Permessi (http://help.ubuntu-it.org/6.10/ubuntu/desktopguide/it/permissions.html)
                   Tutti i file in un sistema Linux hanno permessi che abilitano o meno gli utenti alla visualizzazione, mo-
PAOLO MACCHI                                                                               LINUX-UBUNTU REL-18.10.18
13
difica o esecuzione. Il super utente "root" ha l'abilità di accedere a ogni file nel sistema. Ogni file pos-
                   siede 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 modifi-
                       cato

                      esecuzione i file eseguibili possono essere avviati come programmi si può accedere alle directory

               Per visualizzare e modificare i permessi di file e directory, scegliere Home e fare clic col tasto destro del
               mouse su un file o una directory. Quindi scegliere Proprietà. I permessi sono disponibili all'interno della
               scheda Permessi ed è possibile modificarli fin tanto che si è i proprietari del file/directory.
       Navigazione con visualizzazione elenco

       Info

       Istallazione nuovi programmi
       Ubuntu software center
       Repository
       Ubuntu -> Gestore aggiornamenti

PAOLO MACCHI                                                                                  LINUX-UBUNTU REL-18.10.18
14
Terminale e comandi

In Linux, oltre all’interfaccia grafica, è possibile utilizzare la riga di comando.
L’uso del Terminale in Linux e, quindi in Ubuntu, permette di gestire l’intero sistema usando i COMANDI.
(In queste note si fa riferimento ai documenti presenti in http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=1543&Itemid=33 in cui
è possibile trovare ampia e valida documentazione)

Il “Terminale” è uno strumento importantissimo, col quale possiamo interagire direttamente col nostro sistema,
senza utilizzare l’interfaccia grafica. Ubuntu permette di modificare le impostazioni del sistema e di operare senza
dover mai passare dal terminale, ma è opportuno saperlo utilizzare perché può essere utile, se non indispensabile,
dovere impartire comandi in maniera diretta.

Da Dash troviamo il terminal che, una volta aperto si presenta come una finestra vuota che ci mostra una riga di
testo (linea di comando), alla cui destra, normalmente, troviamo il simbolo $ seguito dal cursore intermittente e
pronto a ricevere i nostri comandi.

                      NOTA si può utilizzare Virtual Box per chiamare UBUNTU da Windows- “VirtualBox is a powerful x86 and
                AMD64/Intel64 virtualization product for enterprise as well as home use. Not only is VirtualBox an extremely
                feature rich, high performance product for enterprise customers, it is also the only professional solution that is
                freely available as Open Source Software under the terms of the GNU General Public License (GPL) version
                2.”https://www.virtualbox.org/
                When we describe VirtualBox as a "virtualization" product, we refer to "full virtualization", that is, the particular
                kind of virtualization that allows an unmodified operating system with all of its installed software to run in a
                special environment, on top of your existing operating system. This environment, called a "virtual machine", is
                created by the virtualization software by intercepting access to certain hardware components and certain features.
                The physical computer is then usually called the "host", while the virtual machine is often called a "guest". Most of
                the guest code runs unmodified, directly on the host computer, and the guest operating system "thinks" it's running
                on real machine. https://www.virtualbox.org/wiki/Virtualization

PAOLO MACCHI                                                                                                    LINUX-UBUNTU REL-18.10.18
15
Il terminale visualizza il nome dell’utente (login) il nome host (computer), e il percorso corrente.

paolo@scuola:~$

         Quello che compare alla sinistra di @ è il nostro nome utente, ossia paolo (lo stesso che utilizziamo, insieme
          con la password, quando avviamo Ubuntu, ossia in apertura di sessione, da noi scelto durante l’installazione
          di Ubuntu.

         A destra di @ e prima dei due punti, troviamo il nome del computer, nel nostro caso scuola (anche questo lo
          abbiamo scelto durante l’installazione di Ubuntu).

         Dopo i due punti troviamo il simbolo ~ chiamato tilde . Esso significa che ci troviamo dentro la cartella “home”
          (qualcosa che somiglia alla cartella Documenti e setting di Windows).

        NOTA per usare un terminale on line si veda: https://www.tutorialspoint.com/codingground.htm

Utente normale
 Ubuntu, anche se per entrare abbiamo dovuto digitare la password, ci considera ”utenti normali”, ossia abbiamo dei
privilegi limitati. Questo vuol dire che se vogliamo effettuare delle operazioni che modificano il sistema, dobbiamo
ottenere i privilegi di amministratore, fornendo la password alla richiesta. Il simbolo $, sta a significare che in quel
momento siamo dei semplici utenti normali e quindi abbiamo poteri (privilegi) limitati. Per acquisire,
momentaneamente, i privilegi di root, possiamo scriviamo la parolina magica: sudo. Ecco come scrivere il comando:
carlo@ufficio:~$ sudo comando

Questo termine (sudo), inserito prima di comando, farà scattare la richiesta della password. Solo dopo che abbiamo
digitato la password il nostro comando verrà eseguito. In definitiva sudo, inserito prima di un qualsiasi comando,
consente di eseguire il comando stesso con i privilegi di root (amministratore) e tali privilegi si perdono subito dopo
l'esecuzione del comando. Se si lascia il terminale aperto e dopo un paio di minuti, si vuole eseguire un altro
comando che prevede l'uso di sudo, non sarà necessario fornire di nuovo la password. Infatti, l'effetto "password"
rimane attivo per i successivi cinque minuti.

Come digitare la password - Nelle ultime versioni di Ubuntu, mentre si digita la password, non compaiono gli
PAOLO MACCHI                                                                              LINUX-UBUNTU REL-18.10.18
16
asterischi e sembra che non succeda nulla, ma non è cosi’. In effetti è solo una questione di sicurezza.

(NB la password in lab sistemi è “utente”)

  Sudoers, compiere operazioni con sudo

  Serve essere root o avere i permessi di sudoer (aggiungere sudo all’inizio della
  sintassi) affinchè il comando vada a buon fine.

  Il comando sudo (super user do) è una stringa di comando usata su sistemi operativi
  Unix-like per eseguire operazioni con privilegi di root (ovvero di amministratore).
  A differenza del comando su (substitute user), sudo richiede all’utente solo la
  propria password, e non quella dell’amministratore; perciò non occorre conoscere
  password altrui, con ovvi vantaggi sulla sicurezza, è sufficiente essere stati
  precedentemente abilitati. Il file di configurazione /etc/sudoers stabilisce chi può
  sostituire chi, su quali macchine, e relativamente a quali operazioni. Fonte:
  Wikipedia

  Per aggiungere un utente al gruppo di sudoer, è sufficiente loggarsi da root e
  lanciare il comando:
  visudo
  Potremo così modificare il file /etc/sudoers ed aggiungere i permessi di sudoer ad un
  utente specifico.
  Una volta che il nostro utente sarà come un root, potremo lanciare qualsiasi
  operazione di sistema che richieda permessi speciali, aggiungendo “sudo” all’inizio
  di ogni sintassi. Per esempio, per l’installazione di VLC:

  sudo apt-get install vlc
  Il sudoer è molto comodo, ma ovviamente comporta più rischi per la sicurezza,
  specialmente nel caso in cui il sistema è utilizzato da più utenti. Usatelo con
  discrezione.

  NOTA: “apt-get is the command-line tool for working with APT software packages.
  APT (the Advanced Packaging Tool) is an evolution of the Debian .deb software
  packaging system. It is a rapid, practical, and efficient way to install packages on
  your system. Dependencies are managed automatically, configuration files are
  maintained, and upgrades and downgrades are handled carefully to ensure system
  stability.” http://www.computerhope.com/unix/apt-get.htm

Utente root
Ogni volta che lo reputeremo necessario, possiamo utilizzare un altro metodo che ci consentirà di conservare, più a
lungo, i nostri poteri di amministratore. Nel caso dell'esempio con nome carlo e nome del computer ufficio, ecco
come daremo il comando:
 carlo@ufficio:~$ sudo –s
ci verrà chiesta la password e subito dopo noteremo che la riga sarà diventata:
root@ufficio:~#
Ossia il nostro nome è cambiato in root e $ (dollaro) è diventato # (sharp o cancelletto), significa che adesso non è
loggato l’utente carlo ma l’utente di root che ha i privilegi d’amministratore.
 Ecco ad esempio due modi diversi, ma entrambi corretti, di indicare come dare il comando ciccio:
$ sudo ciccio        ==> significa che al terminale dovrà esserci carlo@ufficio:~$ sudo ciccio
# ciccio              ==> significa che al terminale dovrà esserci root@ufficio:~# ciccio
  Esempio pratico

PAOLO MACCHI                                                                           LINUX-UBUNTU REL-18.10.18
17
Per finire faremo un esempio pratico. Vogliamo impostare la data e l’ora del nostro computer. Useremo il comando
  date. Ad esempio, per il 22 luglio 2008, ore 16.30 metteremo i numeri 072216302008 (07=luglio, 22=giorno,
  1630=ore e minuti, 2008=anno), quindi il comado vero e proprio sarà:
  date 072216302008

  Il primo metodo da utilizzare, nel caso fossimo utenti normali, consiste nell'inserire sudo davanti al comando:
  sudo date 072216302008
  Dopo avere dato il comando, ci verrà chiesta la password e quindi (se non abbiamo commesso errori di digitazione
  o di copia-incolla) sarà cambiata l’ora e la data.

  Il secondo metodo consiste nel farci riconoscere, subito, come utente root e dopo dare il comando date. Per farci
  riconoscere quale utente root, digitiamo sudo -s o con le solite modalità di scrittura indicate da manuali e guide:
  $ sudo –s
  Il nostro comando date sarà:
  date 072216302008 e dopo avere dato Invio da tastiera, la data e l'ora del nostro sitema saranno impostate
  come noi volevamo. Ricordiamo che fino a quando non chiuderemo il terminale, saremo utenti root, ovvero resterà
  il simbolo #

Disconnessione da root
per tornare utente con permessi normali sulla stessa finestra di terminale:
exit
Nota: questo comando funziona solo se in finestra si è partiti da user e ci si è loggati come root.
Il comando exit può servire anche per chiudere la finestra del terminale, da riga di codice stessa.

Comandi di uso generale
http://a2.pluto.it/a2/esercizi_pratici.pdf http://www.ecommunication.it/ubuntu/principali-comandi-linux-riga-di-
comando https://drive.google.com/drive/my-drive
Un comando è composto da vari elementi.
        Il primo elemento è sempre il comando effettivo, seguito da parametri od opzioni.
        È possibile digitare un comando e modificarlo, utilizzando ←, →,
per sapere come sono allocati in /dev, che tipo di permessi di lettura e scrittura si hanno in essi, e così via, si
        può semplicemente lanciare da qualunque utente: mount
       Lista delle periferiche USB montate: Lanciare, da root o con “sudo”, il seguente comando: lsusb
       Lista delle schede PCI montate: lspci
       Cambio directory cd /usr/bin , la directory attuale dovrebbe divenire ‘/usr/bin/’. Per controllare che ciò sia
        avvenuto si utilizza il comando seguente (print working directory ):
        $ pwd
       Il comando pwd (Present Working Directory) fornisce il percorso assoluto della directory in cui ci si trova in
        quel momento.
       Per visualizzare il contenuto di file di testo si utilizzano generalmente i comandi ‘cat’ e ‘more’. cat mio_file .
        $ cat /etc/fstab cat > pippo2 , more /etc/services
       (per la stampa in ordine inverso tac)
       Lista file ls, ls -l
       La ridirezione dell’output può essere fatta in aggiunta, creando un file se non esiste, o aggiungendovi i dati se
        invece esiste già.
        $ ls -l /tmp >> elenco
       La copia dei file può essere fatta attraverso l’uso del comando ‘cp’.
        $ cp pippo2 pippo3
       L’eliminazione dei file avviene normalmente per mezzo di ‘rm’.
        $ rm pippo
       La creazione di una directory è concettualmente simile alla creazione di un file vuoto. Una directory viene
        creata con il comando ‘mkdir’.
        $ mkdir mia (cancellazione: rmdir mia2 )
       Lo spostamento di file e directory avviene per mezzo di ‘mv’      mv alfa omega
       creare un file vuoto è quello di usare il comando ‘touch’.
        $ touch pippo
       La pipeline, è una forma di ridirezione in cui la shell invia l’output di un comando come input del successivo.
        $ cat elenco | sort    In questo modo, ‘cat’ legge il contenuto del file ‘elenco’, ma questo, invece di essere
        visualizzato sullo schermo, viene inviato dalla shell come standard input di ‘sort’ che lo riordina e poi lo emette
        sullo schermo.
       La creazione di un alias è un metodo che permette di definire un nome alternativo per un comando
        preesistente.
        $ alias elenca=’ls -l’ , elenca
       Ricerca di file nel sistema locate, find
        Se siamo alla ricerca di un determinato file all’interno del nostro computer, il mio consiglio è andare su
        Risorse e selezionare Cerca file. In questo modo il processo sarà più rapido e meno macchinoso, ma in questa
        guida siamo qui per vedere come è possibile farlo anche da terminale.
        Il motore di ricerca da terminale si chiama locate e possiamo installarlo normalmente digitando:
        apt-get install locate
        Esso fa uso di un database ad aggiornamenti costanti, ma non frequenti, pertanto se volessimo ricercare un file
        di recente creazione, spostamento o immissione nel sistema dovremo prima lanciare il comando di update per
        questo database. Da root o con permessi sudoer aggiungendo “sudo” prima della sintassi digitiamo:
PAOLO MACCHI                                                                               LINUX-UBUNTU REL-18.10.18
19
/usr/bin/updatedb
        Attendiamo che l’aggiornamento sia terminato, e poi lanciamo:
        locate testo.txt
        se per esempio stiamo cercando da qualche parte nel nostro sistema il file “testo.txt”. Naturalmente, quella
        parte è da sostituire con il file di cui siete alla disperata ricerca.

        find Trova tutti i file nella directory attuale (.) e nelle sue sottodirectory con eth nel nome:
        find . -name “*eth*”

       Visualizzare lo spazio libero sulle memorie e lo stato della memoria RAM e della cache
        Se vogliamo avere una veloce panoramica dello spazio libero di tutti i File System montati e della RAM in
        uso, esistono due comandi che ci vengono in soccorso.
        Il primo, per gli spazi liberi, è: df
        Mentre il secondo, per la gestione della RAM e della cache in uso, è: free
       Visualizzare i processi di sistema in uso e le loro dipendenze
        Da terminale abbiamo anche la possibilità di avere la panoramica sui processi in uso dal sistema.
        ps specificato senza ulteriori opzioni ci restituisce l'elenco sintetico dei processi appartenenti all'utente e controllati
        mediante il terminale in uso. Potremo in ogni caso utilizzare gli argomenti ax e aux per ottenere una lista più
        completa:
        ◦      ax mostra i processi relativi a tutti gli utenti (-a) ed anche non controllati dl terminale (-x);
        ◦      aux identico ad ax ma permette di visualizzare anche le user (-u) degli utenti a cui appartengono i processi in
               esecuzione.
               ▪       ps
               PID TTY TIME         CMD
               21693 pts/8 00:00:00 bash
               21694 pts/8 00:00:00 ps

               L'invocazione di ps mostra due processi. Il primo, bash, è la shell in esecuzione in questo terminale. Il
               secondo è l'istanza in esecuzione del programma ps stesso. La prima colonna, etichettata PID, mostra l'ID di
               processo di ognuno.
        ◦      ps al
        ◦      ps –e
        ◦      ps axl
        ◦      ps xf
        Potete anche chiedere uno schema strutturato ad albero se volete le idee più chiare sui processi aperti:
        ◦      pstree
        monitorare i processi
        ◦      top
        eliminare il processo generato $ kill 311
       avviare dei comandi in background, in modo che si renda nuovamente disponibile l’invito per inserire altri
        comandi.
        $ yes > /dev/null &
PAOLO MACCHI                                                                                   LINUX-UBUNTU REL-18.10.18
20
Il simbolo e-commerciale (‘&’), posto alla fine del comando, dice alla shell di eseguirlo in background
        Forzare la chiusura di un processo kill processo (ex kill 3456)
        Vedere in ordine cronologico tutti i comandi digitati history
        Priorità nice (ex. nice -10 perl test.pl)
        Per poter modificare il valore nice di un certo processo si può utilizzare il comando nice
         Utillizando il comando nice assieme all'opzione -n permette di specificare il valore di nice desiderato per il
         processo che si vuole avviare.
         Esempio: nice -n 15 nano

         Nota: I valori da assegnare sono limitati dal seguente intervallo                 19   e   -20
         Utillizando un valore negativo si aumenta la priorità del processo
         Utilizzando un valore positivo si diminuisce la priorità del processo

        Creazione di un nuovo utente Modifica della password di un user e di un root
         Per creare un nuovo utente da terminale, è sufficiente diventare root, e digitare il comando:
         ◦     adduser nomeutente
         Saranno richieste la password che si vuole assegnare all’utente, e in più altre piccole informazioni facoltative
         che potete immettere, ovvero Nome Completo, Stanza N° (?!), Numeri telefonici, ed altro.
        Cancellazione userdel nomeutente
        Modifica della password di un user e di un root
        Per la modifica da terminale della password di un utente, è possibile con l’uso di passwd.
               Possono verificarsi tre condizioni:
               1) Siamo loggati come utenti normali, abbiamo i permessi sudo, e non abbiamo mai impostato una
               password di root (situazione tipica dopo l’installazione di Ubuntu). Ci basterà digitare:
               sudo passwd root
               E ci verrà richiesto di immettere una password e di ripeterla. Sarà la password assegnata all’utente root;
               2) Siamo loggati come root, e vogliamo impostare una password diversa ad un utente normale. Basterà
               lanciare semplicemente:
               passwd nomeutente
               Con il nome dell’utente a cui vogliamo settare la password al posto di “nomeutente”;
               3) Siamo loggati come utenti normali, non ricordiamo la password di root e non abbiamo i permessi di
               sudoers. Qui è un bel problema. Credo che non si possa fare null’altro che reinstallare il sistema.

Operazioni di Gestione (file e cartelle)
(http://vicsteele.wordpress.com/comandi/#6
Eleco comandi : http://www.istitutomajorana.it/scarica/Ubuntu_comandi_da_terminale.pdf )

Accedere ad una cartella o ad una directory
Per entrare nella cartella “documenti” digitiamo:
PAOLO MACCHI                                                                                              LINUX-UBUNTU REL-18.10.18
21
cd documenti
Per entrare nella cartella “sottocartella” presente in “cartella” in un solo comando partendo da fuori le due cartelle,
digitiamo:
  cd cartella/sottocartella
Se siamo in “sottocartella” e vogliamo tornare in “cartella” digitiamo:
  cd ..
Se siamo in “sottocartella” e vogliamo uscire sia da lì che da “cartella”, digitiamo:

  cd ../..

Visualizzare il contenuto della cartella
  ls
  ls –help
  ls –l Vedo i permessi
  ls –a    Si potranno visualizzare anche gli eventuali file nascosti, mentre scrivendo:
  ls –A Si potranno visualizzare oltre ai file nascosti anche quelli di sistema

Creare una cartella
  mkdir cartella
Se volessimo creare la cartella “cartella” e subito al suo interno la cartella “sottocartella” scriviamo:

  mkdir cartella/sottocartella

Attenzione ai permessi. Se farete “sudo mkdir …” oppure lancerete il comando da root, da utenti normali non si
avranno i permessi di scrittura.

Rinominare una cartella
  mv cartella/ directory/
Tagliare ed incollare una cartella
  cd cartella
  mv sottocartella /home/vostronomeutente/directory

Copiare ed incollare una cartella
  cd cartella
  cp -r sottocartella /home/vostronomeutente/directory

Non scordatevi “-r”, altrimenti vi darà errore di directory omessa.

Cancellare una cartella vuota
Questo comando va bene solo se la cartella che si vuole cancellare è vuota.
rmdir cartella

Cancellare una cartella non vuota
  rm -rf cartella
Per dovere di cronaca “-rf” è in grado di cancellare ogni file, se avete i permessi di root o di sudo.

Rinominare un file
Per rinominare un file da terminale deve essere usato, come per il Taglia e Incolla, mv.
PAOLO MACCHI                                                                               LINUX-UBUNTU REL-18.10.18
22
Volendo rinominare il file “testo.txt” in “text.txt” dovremo dirigerci prima nella cartella in cui il file è presente, e poi
digitare:
  mv testo.txt text.txt
Tagliare ed incollare un file
  mv testo.txt /home/vostronomeutente/
Copiare ed incollare un file
  cp testo.txt testo.bak
Cancellare un file
  rm testo.txt     il file sarà cancellato, se si possiedono i permessi giusti.

Creare un collegamento
Per creare un collegamento di file o cartelle si deve usare il comando ln.

  ln "file da collegare" "directory di collegamento"
Poniamo ad esempio che ho il file testo.txt nella home e voglio creare un collegamento in usr/bin. Scriverò:

ln /home/gigi/testo.txt /usr/bin
Digitate ln –help per avere la lista e le loro spiegazioni.

Cercare una stringa in un file
  grep cercare una stringa string in file
  grep [options] string file
  dove string e' la stringa da cercare e file e' il file nel quale si cerca la stringa.

  NB l’opzione -i          ignora il case sensitive:

Il comando dell'esempio seguente ordina al sistema di elencare tutti i file che terminano in ".ps" creati nel mese di
maggio (mag):

    $ ls -l *.ps | grep mag

Cambiare i permessi di lettura, scrittura ed esecuzione.
Può succedere di aver bisogno di dover cambiare i permessi ad un file, per consentire la lettura, la scrittura o
l’esecuzione ad ogni utente, oppure al contrario di proteggerlo da utilizzi indesiderati e restringerlo ad un particolare
utente o gruppo.
Quello che si dovrà utilizzare sarà il chmod. Per cambiare i permessi, ad esempio, al file testo.txt dovremo prima farlo
da autori del file (per essere sicuri che abbiamo ogni permesso di farlo), ad esempio accedendo prima da root se non
possiamo interagire col file da utenti semplici, e poi digitare:
  chmod xxx testo.txt
Al posto di XXX vanno tre numeri. I numeri che possiamo usare sono:
777 - Lettura, scrittura, esecuzione per tutti (proprietario, gruppo, altri)
755 – Lettura, scrittura, esecuzione per il proprietario, lettura, esecuzione per il gruppo ed altri utenti.
644 – Lettura, scrittura per il proprietario, lettura per il gruppo ed altri utenti.
PAOLO MACCHI                                                                                 LINUX-UBUNTU REL-18.10.18
23
666 – Lettura e scrittura per tutti.
700 – Lettura, scrittura, esecuzione per il proprietario, nessun permesso per il gruppo ed altri.
(XXX in binario 000, 001, 010,… 111 corrisponde a 0,1,2,...7):

fonte: cisco

Pertanto, se volessimo assegnare qualunque permesso a tutti:
  chmod 777 testo.txt

Per aggiungere o rimuovere permessi a un utente si può usare il comando “chmod” con “+” o “–“ per il proprietario
permessi ->"r", "w","x" ->"read", "write", "execute"
  chmod +rwx “name of the file”
  chmod +x testfile -> execute
  chmod –wx testfile ->write e execute
oppure per chiunque. Ad esempio
chmod 754 myfile

corrisponde a :
chmod u=rwx,g=rx,o=r myfile

u=user
g=group
o=other

esempio:
chmod +x testfile → execute
chmod –wx testfile → write e executable permissions
Scaricare un file da Internet
Da terminale è possibile anche scaricare file da Internet, che siano http o ftp.
Per farlo, basterà digitare wget seguito dall’url del file che si vuole scaricare. Se volessimo scaricare il file
http://www.sito.it/file.rar ,ci basterà digitare:
  wget http://www.sito.it/file.rar
Il file sarà messo in download e, una volta scaricato, piazzato nella directory in cui siamo presenti nel terminale al

PAOLO MACCHI                                                                              LINUX-UBUNTU REL-18.10.18
24
momento del lancio del comando.
Esercizio

Conteggio wc
wc effettua un conteggio e totalizza a seconda delle opzioni il numero di caratteri (“-m”), parole (“-w”), byte (“-c”) e
linee (“-l”) di un file o di uno stream di input. Ad esempio per conoscere il numero di file nascosti presente in una
directory, sarà sufficiente utilizzare il comando come segue:
$ ls .* | wc -l
   681
Lanciato senza argomenti wc restituisce tre valori: il numero di linee, di parole e di byte.
$ wc elenco elenco_num
   6 6 12 elenco
   6 6 12 elenco_num
  12 12 24 totale

Compilazione e lancio di un file
Per compilare un file si può utilizzare il compilatore gcc di linux:
gcc nomeFileDaCompilare –o NomeFileDiOutput
Per eseguire il file: ./nomeFileDiOutput
esempio:

PAOLO MACCHI                                                                            LINUX-UBUNTU REL-18.10.18
25
Altro

  (dd)
  find         find *.c          find / -name *.mp3

  head

Operazioni su utenti
Chi sono:

        Time of last system boot
        List of users logged-in
        Current run level etc

    

Comandi composti
ls –al | grep ciao
elenco dei file e poi filtro (grep) solo quelli che contengono la stringa “ciao”
cat file.txt | parola grep Grep stamperà tutte le righe del file contenente il termine “parola” che hai chiesto a
grep di cercare.

mkdir nuovadir && cd nuovadir
firefox &

Esempio Sort

#!/bin/bash
$cat > sname
vivek
ashish
zebra
babu
Press CTRL + D to save.
$ sort < sname > sorted_names
$ cat sorted_names

PAOLO MACCHI                                                                       LINUX-UBUNTU REL-18.10.18
26
$ tr "[a-z]" "[A-Z]" < sname > cap_names
$ cat cap_names

$ sort > new_sorted_names < sname
$ cat new_sorted_names

Esempio Pipe
l‘uscita di un programma viene messa nell’input di un altro senza file di mezzo
$ ls |
$   who | sort
$   who | sort > user_list
$   who | wc -l
$   ls -l | wc -l
$   who | grep chrys

Reti
    ifconfig (ex ifconfig eth0 promisc)
    iwconfig (wireless) iwlist
    route
    ip (ip addr 192.168.0.1 dev eth1)
    ping
    traceroute
    nslookup (ex. nslookup google.com)
    netstat
    arp
    ethtool

iptables (firewall http://wiki.ubuntu-it.org/Sicurezza/Iptables ) (ex. sudo iptables -vv –L)
Il nostro server SSH usa la porta 22 (a meno che non lo abbiamo configurato diversamente), quindi dobbiamo dire
a iptables di lasciare entrare il traffico tcpsulla porta 22 (il relativo traffico di risposta lo abbiamo già permesso prima),
quindi:
   sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
In ogni momento possiamo controllare come abbiamo configurato il firewall, come spiegato precedentemente.
Il server web usa la porta 80 (anche qui, a meno di configurazioni personalizzate), quindi consentiamo tutto il traffico
che dall'esterno chiede di entrare attraverso la nostra porta 80:
    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Editor
http://www.coresis.com/extra/linuxcorsobase/6-4.htm

VI
PAOLO MACCHI                                                                                LINUX-UBUNTU REL-18.10.18
27
L'editor VI (visual editor) è il più diffuso nell'ambiente UNIX e Linux.
Per aprire vi ed editare un nuovo file basta digitare vi oppure vi nomefile nel secondo caso, se il file esiste viene aper-
to, se non esiste viene creato nuovo. Ad esempio vi aaa.c

VI ha due modalità di funzionamento: il modo comando (command) e il modo inserimento (input).
In modalità inserimento ogni parola verrà inserita direttamente nel file.

E' possibile usare molti comandi per entrare in questa modalità il più comune è i (insert). Entrare in modalità comando
è possibile in qualsiasi momento premendo il tasto ESC, ogni lettera verrà interpretata come un comando.
(La versione GNU di VI si chiama VIM, (Vi IMproved) ed è quella comunemente usata nelle distribuzioni Linux.)

   Comandi principali

   Salvare e uscire

   ZZ               salvare e uscire

   :w               salvare

   :w
                    salvare in altro file con il nome desiderato
   
   :wq              salvare e uscire

   :q               se non sono state effettuate modifche usce senza salvare

   :q!              uscita incondizionata

   Comandi di copia e incolla

   yy               copia la riga corrente

   y2          copia 2 righe sotto la posizione in cui si trova il cursore

   p                incolla il testo nel punto dove si trova il cursore

   Cancellare righe o caratteri

   x                cancella il carattere in cui si trova il cursore

   X                cancella il carattere alla sinistra del cursore

                    cancella tutto quello che si trova alla sinistra del cursore fino alla
   D
                    fine della riga

   dd               cancella la riga in cui si trova il cursore

   3dd              cancella 3 righe partendo dalla quella in cui si trova il cursore

                    cancella dalla posizione in cui si trova il cursore fino alla fine del
   dG
                    file

                    cancella dalla posizione in cui si trova il cursore fino all'inizio del
   d1G
                    file

   Spostarsi nel file

PAOLO MACCHI                                                                                              LINUX-UBUNTU REL-18.10.18
28
Puoi anche leggere