User Tools

Site Tools


its:gnu-linux

ITS Corso GNU/Linux

Argomenti

Linux da utente

Linux da amministratore di sistema

  1. Terminale
    1. Generali: <TAB>, <UP>, <DOWN>, <CTRL+C>
    2. man, history
    3. ls, cd, cat, head, tail, lsb_release -a
  2. Accesso remoto
    1. ssh
  3. FHS - La gerarchia delle directory
    1. /home,/root
    2. /etc,/var,/usr,/tmp
    3. /proc,/sys
    4. /dev
    5. /usr/local,/opt
  4. Gestione utenti non privilegiati e privilegiati
    1. sudo
  5. Installazione/rimozione pacchetti
    1. apt, apt-get, apt-cache, apt-file
  6. Download file remoti
    1. via ssh: scp
    2. via web: wget e curl
  7. Gestione dei servizi con systemd
    1. systemctl, resolvectl, hostnamectl, timedatectl
  8. Gestione del firewall
    1. la soluzione di Ubuntu ufw = “Uncomplicated firewall”
    2. firewall standard nftables (più noto come iptables)
  9. Configurare il sistema
    1. modifica dei file di testo con vim o vi
    2. ricerca contenuti con grep
    3. ricerca files con find
    4. sospensione/riattivazione con <CTRL+Z>, bg e fg

Linux da amministratore di rete

  1. i protocolli /etc/protocols
  2. i servizi e le porte di default /etc/services
  3. i socket attivi ss e netstat
  4. la propria configurazione di rete ip addr list
  5. le proprie interfacce di rete ip link show
  6. test di raggiungibilità ping
  7. test di connessione ad un servizio nc, telnet
  8. test di connessione ssl/tls con openssl
  9. test di richieste https curl
  10. scansione delle porte nmap
  11. analisi del traffico di rete tcpdump, wireshark

Possibili attività/piccoli progetti

  1. Riusciamo ad installare un Dokuwiki?
  2. Creazione bulk di utenti con password
  3. 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
IMAP 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?

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" 

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

  1. Accesso in ssh alla macchina Ubuntu2
  2. Ripetizione delle operazioni della lezione precedente in autonomia ed esplorando, grazie al comando man e all'opzione –help, i seguenti comandi:
    1. ls, cat, head e sort, tail e sort, lsb_release -a, grep
    2. cd, mkdir
  3. Ognuno espone un comando esplorato e una opzione. Potete dire da quale directory viene eseguito?
  4. 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:

Lezione 2 - 19 aprile 2024

Obiettivi

  1. Utilizzo del terminale ed accesso remoto
  2. Utenti, creazione
  3. I Pacchetti e i Repository. Installazione/Disinstallazione/Aggiornamento

Attività

Parte 1:

  1. its-student accede in ssh alla macchina Ubuntu1 (192.168.6.203)
    1. ssh its-student@192.168.6.203
  2. its-student crea un utente per ogni alunno
    1. sudo adduser tuonick
    2. id tuonick
  3. its-student rende l'utente alunno privilegiato
    1. sudo adduser tuonick sudo
    2. id tuonick
    3. ls /home/
  4. its-student fa logout (logout o exit o CTRL+D) dalla macchina Ubuntu1
  5. ogni alunno accede via ssh alla macchina Ubuntu1

Parte 2:

  1. ogni alunno installa vim, code, gcc e tmux, xrdp rispettivamente
  2. test dei comandi appena installati
  3. test di accesso remoto al sistema Ubuntu tramite Connessione Desktop Remoto di Windows

Lezione 1 - 09 aprile 2024

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.

Linus Torvalds inizia nel 1991 a scrivere un kernel per migliorare la sua produttività e per divertirsi. Inizialmente nemmeno doveva essere un kernel. È bravo, lo comunica agli appassionati, decide di applicargli la licenza GPL-v2 e può integrare facilmente il suo sviluppo con i tool per progetto GNU per ottenere un sistema operativo Unix alternativo. Che secondo Stallman

Per questo durante questo corso presenteremo prevalentemente gli aspetti pratici, ma non tralasceremo il contesto che ha creato Stallman e che ha altre implicazioni pratiche sulla diffusione del software, sull'immenso business che si è creato e, se riusciremo a vederlo anche sulle modalità di lavoro dei team delle moderne aziende Lean.

Efficacia di oggi: OpenSSH per la connessione remota sicura e installazione VM Ubuntu

  1. Introduzione al protocollo SSH e la sua implementazione libera OpenSSH
  2. Porta di default 22, come porte http e https
  3. Utilizzo di ssh da Windows a Ubuntu Live
  4. Accenno minimale comandi ip e ss, da vedere ifconfig e netstat

Installazione di Ubuntu Desktop

  1. Eseguita installazione con impostazioni predefinite su macchina VMWare
  2. Problema: al riavvio della VM abbiamo ottenuto un blank screen;
  3. Soluzione: assegnare 24MB alla scheda grafica di VMWare che di default ne assegna solo 4;
  4. Nota: a noi non serve l'interfaccia grafica, se non (forse) per analizzare i pacchetti con wireshark

Per smanettare un po' con ssh ci si può rivolgere anche alla seziona apposita in questo wiki. Si accettano consigli / pull request per migliorare questi contenuti.

Contesto etico di oggi: 20 anni di Linux e Revolution OS

  1. Personaggi da sapere
    1. Richard Stallman,
    2. Linus Torvalds
    3. Eric Raymond (La cattedrale e il bazaar, manutentore Jargon File)
  2. Progetti da sapere
    1. Il progetto GNU e la licenza GPL con le 4 libertà del Software Libero
    2. Netscape come premessa a Mozilla Firefox
  3. Addon: timeline delle distribuzioni GNU/Linux.
    1. Principali: Slackware, Debian e Red Hat
    2. Nota di merito su Archlinux
its/gnu-linux.txt · Last modified: 2024/04/25 06:00 by feroda