Linux Tutorial – Puntata 21
di jolek78
Care/i fruitrici e fruitori del blog, in questi post – ogni domenica mattina – si parlerà del sistema operativo GNU/Linux e degli strumenti per utilizzarlo al massimo delle potenzialità. Cercheremo di spiegare come funziona, cosa è il kernel, come costruirsi una vpn, come settare un firewall e giocare col terminale, usare adb e altro. Se il capitalismo della sorveglianza ci vuole passivi consumatori-consumatrici di servizi noi si risponde con un po’ di “cultura informatica” e un MARAMEO (quasi affettuoso). Buona lettura!
RTFM non è un caloroso invito ad andare… ma è un caloroso invito a leggere un manuale. RTFM infatti significa letteralmente “Read The Fucking Manual“, ovvero, in italiano, “vatti a leggere il fottuto manuale”. Si, non è esattamente la cosa più gradevole da dire, ne’ la cosa più piacevole da sentirsi dire, ma in fondo è la verità. Il tempo perso per spiegare il proprio problema a qualcuno, leggendo e imparando può diventare tempo guadagnato per imparare qualcosa. Qual’e’ il problema pero’? Che è una affermazione classista e settaria, che mette una barriera fra chi, per hobby passione o mestiere sa qualcosa di più e chi, per attitudine o altro, ne sa di meno. Linux pero’ ha un’anima popolare, socialista, aperta e inclusiva, e fornisce al suo interno tutti i manuali per tutti i programmi. Si, avete letto bene, tutti ma proprio tutti. Ogni manuale è scritto in informatichese – ed è questo il motivo del tutorial: diffondere conoscenza – ed è strutturato in una maniera piuttosto standard. In questa puntata pertanto si proverà a spiegare come e’ strutturato un manuale, come è formattato, dove si trova e come si può richiamare da terminale. Quindi, se qualcuno domani vi dovesse dire RTFM, fategli un pernacchione e ditegli che sapete come fare. Bentornati 🙂
MAN
Partiamo dunque dai fondamentali: per invocare un manuale basta scrivere man e aggiungere il nome del programma che si vuole investigare. In tutta la puntata utilizzeremo l’esempio del manuale per ss, un tool che ha rimpiazzato netstat per visualizzare le connessioni e le porte in uso del sistema. ss fa parte del pacchetto iproute2 che, nel corso del tempo, sta rimpiazzando quasi tutti i tool per l’analisi del network che c’erano su Linux.
bottega@bottegadelbarbieri ~ man ss
SS(8) System Manager's Manual SS(8) NAME ss - another utility to investigate sockets SYNOPSIS ss [options] [ FILTER ] DESCRIPTION ss is used to dump socket statistics. It allows showing information similar to netstat. It can display more TCP and state information than other tools. OPTIONS When no option is used ss displays a list of open non-listening sockets (e.g. TCP/UNIX/UDP) that have established connection. [...] USAGE EXAMPLES [....] SEE ALSO ip(8), RFC 793 - https://tools.ietf.org/rfc/rfc793.txt (TCP states) AUTHOR ss was written by Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>. This manual page was written by Michael Prokop <mika@grml.org> for the Debian project (but may be used by others).
Per sommi capi descriviamo le sezioni di cui si compone un manuale.
– NAME
nome del programma
– SYNOPSIS
sinossi – ovvero come va utilizzato il programma e quali sono i parametri da inserire.
– DESCRIPTION
Qual’e’ lo scopo del programma, cosa fa e perché va utilizzato.
– OPTIONS
Questa e’ ovviamente la sezione più corposa perché spiega tutte le opzioni per ottenere il risultato – l’output – desiderato
– SEE ALSO
Fonti in rete da leggere per approfondire il suo utilizzo
– AUTHOR
I crediti dell’autore, e come fare per contattarlo per segnalazioni
Dunque. La sezione della sinossi ci dice che il programma va utilizzato invocandolo da terminale con ss e aggiungendo successivamente le opzioni che poi troviamo nella sezione options. Eccone alcune:
-a, --all Display both listening and non-listening (for TCP this means established connections) sockets. -l, --listening Display only listening sockets (these are omitted by default). [....] -p, --processes Show process using socket. [...] -t, --tcp Display TCP sockets. -u, --udp Display UDP sockets. -d, --dccp Display DCCP sockets. -w, --raw Display RAW sockets. -x, --unix Display Unix domain sockets (alias for -f unix). -p, --processes Show process using socket. -s, --summary Print summary statistics. This option does not parse socket lists obtaining summary from various sources. It is useful when amount of sockets is so huge that parsing /proc/net/tcp is painful.
Per una questione di spazio, dopo il comando inseriremo “| head” in modo da visualizzare solo le prime 10 linee dell’output.
-a, –all
Dunque, per visualizzare tutte le connessioni in entrata, in uscita, in ascolto e quelle non in ascolto:
bottega@bottegadelbarbieri ~ ss -a |head Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/576 * nl UNCONN 0 0 rtnl:avahi-daemon/568 * nl UNCONN 0 0 rtnl:whoopsie/757 * nl UNCONN 0 0 rtnl:kernel * nl UNCONN 0 0 rtnl:systemd-resolve/539 * nl UNCONN 0 0 rtnl:whoopsie/757 * nl UNCONN 0 0 rtnl:NetworkManager/576 * nl UNCONN 0 0 rtnl:avahi-daemon/568 * nl UNCONN 0 0 rtnl:systemd-resolve/539 *
-t, –tcp
Per visualizzare soltanto quelle che viaggiando con protocollo tcp:
bottega@bottegadelbarbieri ~ ss -t |head State Recv-Q Send-Q Local Address:Port Peer Address:Port Process ESTAB 0 0 192.168.0.11:ssh 192.168.0.14:45630
-u, –udp
Per visualizzare soltanto quelle che viaggiano con protocollo udp:
bottega@bottegadelbarbieri ~ ss -u |head Recv-Q Send-Q Local Address:Port Peer Address:Port Process 0 0 192.168.0.11%enp0s3:bootpc 192.168.0.1:bootps
-l, –listening
Per visualizzare soltanto quelle in ascolto:
bottega@bottegadelbarbieri ~ ss -l |head Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/576 * nl UNCONN 0 0 rtnl:avahi-daemon/568 * nl UNCONN 0 0 rtnl:whoopsie/757 * nl UNCONN 0 0 rtnl:kernel * nl UNCONN 0 0 rtnl:systemd-resolve/539 * nl UNCONN 0 0 rtnl:whoopsie/757 * nl UNCONN 0 0 rtnl:NetworkManager/576 * nl UNCONN 0 0 rtnl:avahi-daemon/568 * nl UNCONN 0 0 rtnl:systemd-resolve/539 *
-x, –unix
Per visualizzare soltanto i socket unix
bottega@bottegadelbarbieri ~ ss -x |head Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 29535 * 29536 u_str ESTAB 0 0 * 25582 * 26432 u_str ESTAB 0 0 * 31386 * 31387 u_str ESTAB 0 0 /run/dbus/system_bus_socket 29833 * 29525 u_str ESTAB 0 0 * 29438 * 29439 u_str ESTAB 0 0 * 29754 * 29755 u_str ESTAB 0 0 * 23094 * 25682 u_str ESTAB 0 0 /run/dbus/system_bus_socket 31351 * 31350 u_str ESTAB 0 0 /run/user/114/bus 29433 * 29432
-s, –summary
Per visualizzare le statistiche:
bottega@bottegadelbarbieri ~ ss -s |head Total: 315 TCP: 8 (estab 1, closed 0, orphaned 0, timewait 0) Transport Total IP IPv6 RAW 1 0 1 UDP 9 6 3 TCP 8 5 3 INET 18 11 7 FRAG 0 0 0
-l, –listening + -t, –tcp
Le opzioni pero’ possono essere anche mixate fra loro. E quindi, per esempio, se vogliamo filtrare tutte le connessioni tcp ma soltanto quelle in ascolto:
bottega@bottegadelbarbieri ~ ss -tl |head State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 4096 0.0.0.0:sunrpc 0.0.0.0:* LISTEN 0 4096 127.0.0.53%lo:domain 0.0.0.0:* LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* LISTEN 0 5 127.0.0.1:ipp 0.0.0.0:* LISTEN 0 4096 [::]:sunrpc [::]:* LISTEN 0 128 [::]:ssh [::]:* LISTEN 0 5 [::1]:ipp [::]:*
-l, –listening + -u, –udp
Stessa cosa facciamo per quelle che viaggiano con protocollo udp:
bottega@bottegadelbarbieri ~ ss -tu |head Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process udp ESTAB 0 0 192.168.0.11%enp0s3:bootpc 192.168.0.1:bootps tcp ESTAB 0 0 192.168.0.11:ssh 192.168.0.14:45630
Ovviamente per leggere il manuale basterà premere le freccette in alto e in basso sulla tastiera. E poi per concludere un piccolo trick. Immaginate d’invocare il manuale e di voler cercare soltanto una parola. C’e’ un metodo molto comodo, invece che scrollare in alto e in basso:
/ + <parola da cercare>
Nella fattispecie, se per esempio cerchiamo la parola udp scriveremo:
/udp
Alla prossima settimana!
jolek78
>> | Indice | << |
Puntata 20 | < > | Puntata 22 |
Il logo “Tux Linux” e’ stato realizzato e distribuito dall’artista deiby-ybied su Deviantart in licenza Creative Commons BY-NC-SA 3.0