This is an old revision of the document!
Table of Contents
ITS Corso GNU/Linux
Argomenti
Linux da utente
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 comeiptables
)
- 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
enetstat
- 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 |
| 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 dettioneliner bash
o più sinteticamenteoneliner
) - Dopo l'esercitazione successiva parleremo della
bash
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/.MailStore\ Export*" root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailStore\ Export*" root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailStore\ Export*" root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailStore\ Export* | grep G" root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailStore\ Export* | tail | grep G" root@new-mail:/home/ced# watch -n300 "du -sch Maildir/.MailStore\ Export* | tail " root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailStore\ Export* | tail -n30 | grep Posta" root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailStore\ Export* | tail -n20 | grep Posta" root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailStore\ Export*Posta* | tail -n20" root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailStore\ Export*Posta* | sort -n tail -n20" root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailStore\ Export*Posta* | sort -n | tail -n20" root@new-mail:/home/ced# watch -n10 "du -sch Maildir/.MailStore\ Export*Posta* | grep G | sort -n | tail -n20"
Suggerimento: se ti trovi in difficoltà per 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? Percentuale di utilizzo dei sistemi operativi in vari settori (Wikipedia)
- 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 Il Manifesto dello sviluppo Agile (2001)
Lezione 2 - 19 aprile 2024
Obiettivi
- Utilizzo del terminale ed accesso remoto
- Utenti, creazione
- I Pacchetti e i Repository. Installazione/Disinstallazione/Aggiornamento
Attività
Parte 1:
- its-student accede in ssh alla macchina Ubuntu1 (192.168.6.203)
- ssh its-student@192.168.6.203
- 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
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
- Introduzione al protocollo SSH e la sua implementazione libera OpenSSH
- Porta di default 22, come porte http e https
- Utilizzo di ssh da Windows a Ubuntu Live
- Accenno minimale comandi
ip
ess
, da vedereifconfig
enetstat
Installazione di Ubuntu Desktop
- Eseguita installazione con impostazioni predefinite su macchina VMWare
- Problema: al riavvio della VM abbiamo ottenuto un blank screen;
- Soluzione: assegnare 24MB alla scheda grafica di VMWare che di default ne assegna solo 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
- Personaggi da sapere
- Richard Stallman,
- Linus Torvalds
- Eric Raymond (La cattedrale e il bazaar, manutentore Jargon File)
- Progetti da sapere
- Il progetto GNU e la licenza GPL con le 4 libertà del Software Libero
- Netscape come premessa a Mozilla Firefox
- Addon: timeline delle distribuzioni GNU/Linux.
- Principali: Slackware, Debian e Red Hat
- Nota di merito su Archlinux