User Tools

Site Tools


its:gnu-linux

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
its:gnu-linux [2024/04/18 16:35] – [Lezione 2 - 19 aprile 2024] ferodaits:gnu-linux [2024/04/25 06:00] (current) – [Lezione 4 - 30 aprile 2024] - elencati argomenti bash feroda
Line 1: Line 1:
 ====== ITS Corso GNU/Linux ====== ====== ITS Corso GNU/Linux ======
 +
 +===== Argomenti =====
 +
 +<del>Linux da utente</del>
 +
 +==== Linux da amministratore di sistema ====
 +
 +  - Terminale
 +    - Generali: <TAB>, <UP>, <DOWN>, <CTRL+C> 
 +    - man, history
 +    - ls, cd, cat, head, tail, lsb_release -a
 +  - Accesso remoto
 +    - ssh
 +  - FHS - La gerarchia delle directory
 +    - /home,/root
 +    - /etc,/var,/usr,/tmp
 +    - /proc,/sys
 +    - /dev
 +    - /usr/local,/opt
 +  - Gestione utenti non privilegiati e privilegiati
 +    - sudo
 +  - Installazione/rimozione pacchetti
 +    - apt, apt-get, apt-cache, apt-file
 +  - Download file remoti
 +    - via ssh: scp
 +    - via web: wget e curl
 +  - Gestione dei servizi con systemd
 +    - systemctl, resolvectl, hostnamectl, timedatectl
 +  - Gestione del firewall
 +    - la soluzione di Ubuntu ''ufw'' = "Uncomplicated firewall"
 +    - firewall standard ''nftables'' (più noto come ''iptables'')
 +  - Configurare il sistema
 +    - modifica dei file di testo con vim o vi
 +    - ricerca contenuti con grep
 +    - ricerca files con find
 +    - sospensione/riattivazione con <CTRL+Z>, bg e fg
 +
 +==== Linux da amministratore di rete ====
 +
 +  - i protocolli ''/etc/protocols''
 +  - i servizi e le porte di default ''/etc/services''
 +  - i socket attivi ''ss'' e ''netstat''
 +  - la propria configurazione di rete ''ip addr list''
 +  - le proprie interfacce di rete ''ip link show''
 +  - test di raggiungibilità ''ping''
 +  - test di connessione ad un servizio ''nc'', ''telnet''
 +  - test di connessione ssl/tls con ''openssl''
 +  - test di richieste https ''curl''
 +  - scansione delle porte ''nmap''
 +  - analisi del traffico di rete ''tcpdump'', ''wireshark''
 +===== Possibili attività/piccoli progetti =====
 +
 +
 +  - **Riusciamo ad installare un Dokuwiki?**
 +  - **Creazione bulk di utenti con password**
 +  - **Predisposizione macchina GNU/Linux per il corso di fondamenti di programmazione**
 +
 +===== Servizi, protocolli e porte di default =====
 +
 +Qui trovate i servizi utilizzati o citati durante il corso:
 +
 +  * dove leggete "porta" è da intendersi come "porta di default";
 +  * dove leggete "client" è da intendersi come "software client di riferimento";
 +  * dove leggete "server" è da intendersi come "software server di riferimento";
 +
 +| Servizio        ^ alias (aka)                ^ proto ^ porta  ^ client              ^ server ^ pkg client ^ pkg server ^
 +^ Secure Shell   | OpenSSH                    | ssh | 22   | ssh                 | sshd | openssh-client | openssh-server |
 +^ Remote Desktop | Connessione Remota Windows | rdp | 3389 | rdesktop/xfreerdp | xrdp | rdesktop/xfreerdp | xrdp |
 +^ IMAPs | Consultazione Email (sicuro) | imaps | 993 | thunderbird/mutt | dovecot | thunderbird (snap) | dovecot-imapd |
 +^ <del>IMAP</del> | Consultazione Email (insicuro) | imap | 143 | ::: | ::: | ::: | ::: |
 +
 +===== Lezione 4 - 30 aprile 2024 =====
 +
 +  * Rispolveriamo la pipe ''|'' e le pipeline (sequenze di comandi separati dalla pipe) utilizzati per comporre articolati comandi da una riga di shell (di solito la bash e per questo detti ''oneliner bash'' o più sinteticamente ''oneliner'')
 +  * Dopo l'esercitazione, ripasseremo velocemente FHS 
 +  * Poi continueremo con 2 parole sulla ''bash'' e altri comandi base:
 +    * Command substitution ''$()'' (o ''`'', ma meglio la forma con il ''$'')
 +    * ''awk'' come ''cut'' superpotenziato: https://stackoverflow.com/a/36211753/720743
 +    * ''sed'' come arma letale per processare le righe dello standard input o di uno o più files
 +    * Cicli in Bash
 +
 +==== Esercitazione ====
 +
 +**Scenario**: Il prof ha esportato 1,3TB di posta elettronica da un server ad un altro via IMAP. Il formato di destinazione è il classico "Maildir" in cui le cartelle che appaiono sul client di posta elettronica sono esattamente cartelle sul filesystem all'interno di una directory "Maildir".
 +
 +Riusciresti a dire cosa voleva monitorare il prof. (comando ''watch'' da esaminare alla fine dell'esercizio) con la sequenza di comandi (o meglio pipeline) che progressivamente ha raffinato qui si seguito tra virgolette?
 +
 +<code>
 +root@new-mail:/home/ced# watch -n10 "du -sh Maildir/.MailSt*"
 +root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailSt*"                                                                                                                     
 +root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailSt*" 
 +root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailSt* | grep G" 
 +root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailSt* | tail | grep G" 
 +root@new-mail:/home/ced# watch -n300 "du -sch Maildir/.MailSt* | tail " 
 +root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailSt* | tail -n30 | grep Posta" 
 +root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailSt* | tail -n20 | grep Posta" 
 +root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailSt*Posta* | tail -n20" 
 +root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailSt*Posta* | sort -n tail -n20" 
 +root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailSt*Posta* | sort -n | tail -n20" 
 +root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailSt*Posta* | grep G | sort -n | tail -n20" 
 +</code>
 +
 +Nota: alcune righe potrebbero non aver dato il risultato sperato, per questo sono state rilanciate in modo più opportuno.
 +
 +**Suggerimento banale se ti trovi in difficoltà su comandi o opzioni**: usa il ''man'' oppure esegui il comando con ''-h'' (o ''--help''). Se proprio non riesci a sbloccarti fai una ricerca web, ma a questo punto è meglio se chiedi a ChatGPT o Copilot, perché almeno ti possono chiarire la situazione. Tuttavia non farlo, se vuoi imparare a cavartela da solo, prima di aver provato con il ''man'' o il ''-h''.
 +
 +===== Lezione 3 - 23 aprile 2024 =====
 +
 +Il prof crea la macchina Ubuntu2
 +
 +  - Accesso in ssh alla macchina Ubuntu2
 +  - Ripetizione delle operazioni della lezione precedente in autonomia ed esplorando, grazie al comando ''man'' e all'opzione ''--help'', i seguenti comandi:
 +    - ls, cat, head e sort, tail e sort, lsb_release -a, grep
 +    - cd, mkdir
 +  - Ognuno espone un comando esplorato e una opzione. Potete dire da quale directory viene eseguito?
 +  - Impostare l'hostname con hostnamectl
 +
 +
 +==== Integrazione al contesto della Lezione 1 ====
 +
 +Il progetto rivoluzionario chiamato Linux, porta con sé in realtà un contesto composto da 2 anime, quella più etica del Software Libero ideata da Richard Stallman e quella più tecnica del kernel Linux ideata da Linus Torvalds. La conoscenza della sua storia ci fa capire il ruolo di entrambe e in particolare quello di Linux, come nucleo fondamentale e punta dell'iceberg di un ecosistema che gli ha consentito di spopolare e portare una **vera rivoluzione tecnica e socioeconomica**:
 +
 +  * **Quanto è utilizzato GNU/Linux rispetto agli altri sistemi operativi?** [[https://en.wikipedia.org/wiki/Usage_share_of_operating_systems|Percentuale di utilizzo dei sistemi operativi in vari settori (Wikipedia)]]
 +  * [[http://www.gnu.org/philosophy/free-sw.it.html|Cos'è il Software Libero?]]
 +  * [[http://www.gnu.org/philosophy/why-free.it.html|Perché il software non deve avere padroni]]
 +  * [[https://www.debian.org/social_contract|Debian Free Software Guidelines o Debian Social Contract]]
 +  * [[https://opensource.org/osd|The Open Source definition]]: open source è la visione aziendale del software libero. Perché realizzare software libero è più efficace ed efficiente e secondo gli "opensourcisti" deve essere presentato in questo modo alle aziende, e non (o in secondo piano) per il valore etico
 +  * Le modalità di collaborazione Open Source sono parte de [[https://agilemanifesto.org|Il Manifesto dello sviluppo Agile (2001)]]
 +    * [[https://agilemanifesto.org/display/000000020.html|La firma IMPORTANTE di Eric S. Raymond (Open Source Initiative)]]
 +    * [[http://agilemanifesto.org/display/000000085.html|La firma di Paxer Conseil]]
 +    * [[https://agilemanifesto.org/display/000000027.html|La firma di David Lillie]] 
 +
  
 ===== Lezione 2 - 19 aprile 2024 ===== ===== Lezione 2 - 19 aprile 2024 =====
  
-**Obiettivi**:+==== Obiettivi ====
  
-  - Utilizzo del terminale e introduzione alla shell +  - Utilizzo del terminale ed accesso remoto 
-  - Utenti, creazione e la directory $HOME+  - Utenti, creazione
   - I Pacchetti e i Repository. Installazione/Disinstallazione/Aggiornamento   - I Pacchetti e i Repository. Installazione/Disinstallazione/Aggiornamento
-  - La versione della distribuzione 
  
 +==== Attività ====
  
-Attivita':+Parte 1:
  
-  - its-student accede in ssh alla macchina Ubuntu1 +  - its-student accede in ssh alla macchina Ubuntu1 (192.168.6.203) 
-  - its-student installa vim, code, gcc e tmux +    ssh its-student@192.168.6.203
   - its-student crea un utente per ogni alunno   - its-student crea un utente per ogni alunno
 +    - sudo adduser tuonick
 +    - id tuonick
 +  - its-student rende l'utente alunno privilegiato
 +    - sudo adduser tuonick sudo
 +    - id tuonick
 +    - ls /home/
 +  - its-student fa logout (logout o exit o CTRL+D) dalla macchina Ubuntu1
 +  - ogni alunno accede via ssh alla macchina Ubuntu1
 +
 +Parte 2:
 +
 +  - ogni alunno installa vim, code, gcc e tmux, xrdp rispettivamente
 +  - test dei comandi appena installati
 +  - test di accesso remoto al sistema Ubuntu tramite Connessione Desktop Remoto di Windows
  
-Opzionali: 
-  - Creazione macchina Ubuntu2 
-  - Accesso in ssh alla macchina Ubuntu2 
  
 ===== Lezione 1 - 09 aprile 2024 ===== ===== Lezione 1 - 09 aprile 2024 =====
  
-==== Le 2 anime di GNU/Linux: contesto etico ed efficacia ====+==== Il contesto: Il Software Libero, Linux e GNU/Linux ==== 
 + 
 +(WAS: Le 2 anime di GNU/Linux: contesto etico e tecnica)
  
 **Richard Stallman** dal 1984 rappresenta la parte etica per portare la libertà agli individui attraverso il software libero. Fonda il progetto GNU, definisce le 4 libertà e crea la licenza software GPL-v2 (ora GPL-v3) che garantisce la 4 libertà fondamentali. **Richard Stallman** dal 1984 rappresenta la parte etica per portare la libertà agli individui attraverso il software libero. Fonda il progetto GNU, definisce le 4 libertà e crea la licenza software GPL-v2 (ora GPL-v3) che garantisce la 4 libertà fondamentali.
its/gnu-linux.1713458154.txt.gz · Last modified: 2024/04/18 16:35 by feroda