Linux Tutorial – Puntata 20

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!

Ci siamo. Gaudeate gente, gaudeate. Questa è l’ultima puntata che tratterà il FHS. La cavalcata è stata lunga, forse noiosa per i lettori di questo blog, ma comunque stimolante (per me almeno). Con pazienza quindi oggi andremo a esplorare l’ultima delle directory principali del filesystem. Stiamo parlando di /var, chiamata cosi’ proprio perché è di dimensione continuamente “variabile” poiché contiene i file temporanei, la cache, i log del sistema e non solo. CI fermeremo soltanto su alcune subdirectory, quelle che ritengo piu’ importanti, cercndo di evitare di appesantire il discorso. Questa è la classica directory che se ci entra, nel 99% dei casi, vuol dire che qualcosa non ha funzionato nel sistema e bisogna metterci una pezza. Quando parleremo del comando tail capirete meglio di cosa sto parlando… Dunque, riscaldate l’acqua, preparate la vostra tazza di the e andiamo a cominciare 😉

/VAR

bottega@bottegadelbarbieri  /  ls -lha 
total 88K
drwxr-xr-x  20 root root 4.0K Apr 25 07:26 .
drwxr-xr-x  20 root root 4.0K Apr 25 07:26 ..
lrwxrwxrwx   1 root root    7 Feb 27 08:53 bin -> usr/bin
drwxr-xr-x   5 root root 4.0K Jul  3 08:45 boot
drwxrwxr-x   2 root root 4.0K Feb 27 08:56 cdrom
drwxr-xr-x  20 root root 4.2K Jul 16 19:52 dev
-rw-r--r--   1 root root    0 Apr 25 07:26 dmraid-map
drwxr-xr-x 143 root root  12K Jul 17 06:41 etc
drwxr-xr-x   4 root root 4.0K Apr 29 17:29 home
lrwxrwxrwx   1 root root    7 Feb 27 08:53 lib -> usr/lib
lrwxrwxrwx   1 root root    9 Feb 27 08:53 lib32 -> usr/lib32
lrwxrwxrwx   1 root root    9 Feb 27 08:53 lib64 -> usr/lib64
lrwxrwxrwx   1 root root   10 Feb 27 08:53 libx32 -> usr/libx32
drwx------   2 root root  16K Feb 27 08:53 lost+found
drwxr-xr-x   3 root root 4.0K May  5 20:31 media
drwxr-xr-x   2 root root    0 Jul 16 19:52 mnt
-rw-r--r--   1 root root   63 Apr 25 07:26 mounted-map
drwxr-xr-x   2 root root 4.0K Feb  9 18:48 opt
dr-xr-xr-x 197 root root    0 Jul 16 19:52 proc
-rw-r--r--   1 root root    0 Apr 25 07:26 raided-map
drwx------   4 root root 4.0K Jul  3 17:44 root
drwxr-xr-x  34 root root 1.2K Jul 17 06:41 run
lrwxrwxrwx   1 root root    8 Feb 27 08:53 sbin -> usr/sbin
drwxr-xr-x   2 root root 4.0K Feb 27 09:10 snap
drwxr-xr-x   2 root root 4.0K Feb  9 18:48 srv
-rw-r--r--   1 root root   15 Apr 25 07:26 swaps-map
dr-xr-xr-x  13 root root    0 Jul 16 19:52 sys
drwxrwxrwt  14 root root 4.0K Jul 17 09:46 tmp
drwxr-xr-x  14 root root 4.0K Feb  9 18:52 usr
drwxr-xr-x  14 root root 4.0K Feb  9 19:08 var    <<<<<<<<<<<<<

/var/backup
Racchiude al suo interno il backup di alcune directory contenute dentro /var/lib/.

bottega@bottegadelbarbieri  /var  ls -lha /var/backups/ |grep -v "gz"
total 4.5M
drwxr-xr-x  2 root root 4.0K Jul 17 07:39 .
drwxr-xr-x 14 root root 4.0K Feb  9 19:08 ..
-rw-r--r--  1 root root  90K Jul 17 07:39 alternatives.tar.0
-rw-r--r--  1 root root 100K Jul  3 08:46 apt.extended_states.0
-rw-r--r--  1 root root   11 Feb 27 08:56 dpkg.arch.0
-rw-r--r--  1 root root 4.4K Feb 27 09:47 dpkg.diversions.0
-rw-r--r--  1 root root  198 Feb  9 19:03 dpkg.statoverride.0
-rw-r--r--  1 root root 1.7M Jul 17 06:41 dpkg.status.0

– alternatives >> /var/lib/dpkg/alternatives

 bottega@bottegadelbarbieri  /var  ls -lha /var/backups/ |grep  "alternatives"
-rw-r--r--  1 root root  90K Jul 17 07:39 alternatives.tar.0
-rw-r--r--  1 root root 4.9K Jul  4 16:13 alternatives.tar.1.gz
-rw-r--r--  1 root root 4.9K Jun 19 10:06 alternatives.tar.2.gz
-rw-r--r--  1 root root 4.9K Jun 11 08:31 alternatives.tar.3.gz
-rw-r--r--  1 root root 4.9K Jun 10 03:48 alternatives.tar.4.gz
-rw-r--r--  1 root root 4.9K May 29 11:23 alternatives.tar.5.gz
-rw-r--r--  1 root root 4.9K Apr 28 21:25 alternatives.tar.6.gz

extended_states >> /var/lib/apt/extended_states

bottega@bottegadelbarbieri  /var  ls -lha /var/backups/ |grep  "extended"
-rw-r--r--  1 root root 100K Jul  3 08:46 apt.extended_states.0
-rw-r--r--  1 root root  12K Jul  2 11:10 apt.extended_states.1.gz
-rw-r--r--  1 root root  12K Jun 26 17:44 apt.extended_states.2.gz
-rw-r--r--  1 root root  12K Jun 10 19:38 apt.extended_states.3.gz
-rw-r--r--  1 root root  12K Jun  9 09:12 apt.extended_states.4.gz
-rw-r--r--  1 root root  12K Jun  7 12:52 apt.extended_states.5.gz
-rw-r--r--  1 root root  12K Jun  5 12:44 apt.extended_states.6.gz

– dpkg >> /var/lib/dpkg

bottega@bottegadelbarbieri  /var  ls -lha /var/backups/ |grep  "dpkg" |head
-rw-r--r--  1 root root   11 Feb 27 08:56 dpkg.arch.0
-rw-r--r--  1 root root   43 Feb 27 08:56 dpkg.arch.1.gz
-rw-r--r--  1 root root   43 Feb 27 08:56 dpkg.arch.2.gz
-rw-r--r--  1 root root   43 Feb 27 08:56 dpkg.arch.3.gz
-rw-r--r--  1 root root   43 Feb 27 08:56 dpkg.arch.4.gz
-rw-r--r--  1 root root   43 Feb 27 08:56 dpkg.arch.5.gz
-rw-r--r--  1 root root   43 Feb 27 08:56 dpkg.arch.6.gz
-rw-r--r--  1 root root 4.4K Feb 27 09:47 dpkg.diversions.0
-rw-r--r--  1 root root  561 Feb 27 09:47 dpkg.diversions.1.gz
-rw-r--r--  1 root root  561 Feb 27 09:47 dpkg.diversions.2.gz

/var/cache/
Molto, ma molto, semplicemente, racchiude al suo interno la cache di alcuni programmi, inclusi i manuali (spoiler: la prossima puntata sarà dedicata espressamente a come leggere un man e trovare le parole chiave):

bottega@bottegadelbarbieri  /var  ls -lha cache
total 72K
drwxr-xr-x 16 root root 4.0K Feb 28 11:27 .
drwxr-xr-x 14 root root 4.0K Feb  9 19:08 ..
drwxr-xr-x  3 root root 4.0K Feb 27 09:10 apparmor
drwxr-xr-x  4 root root 4.0K Feb  9 19:04 app-info
drwxr-xr-x  3 root root 4.0K Jul 17 06:41 apt
drwxrwx---  3 root lp   4.0K Jul 17 00:00 cups
drwxr-xr-x  2 root root 4.0K Jun 10 19:37 debconf
drwxr-xr-x  2 root root 4.0K Feb 27 08:58 dictionaries-common
drwxr-xr-x  2 root root  12K Jun 10 19:37 fontconfig
drwxr-xr-x  2 root root 4.0K Jul 16 22:11 fwupd
lrwxrwxrwx  1 root root   16 Feb 28 11:27 fwupdmgr -> private/fwupdmgr
drwx------  2 root root 4.0K Jul 10 10:00 ldconfig
drwxr-xr-x  3 root root 4.0K Feb 27 09:10 lightdm
drwxr-xr-x 38 man  man  4.0K Jul 17 06:41 man
drwxr-xr-x  3 root root 4.0K Feb  9 18:52 PackageKit
drwx------  3 root root 4.0K Feb 28 11:27 private
drwxr-xr-x  2 root root 4.0K Jul 16 19:52 snapd

/var/lib/
Fotografa, in sostanza, lo stato di ogni programma e contiene i dati, per cosi’ dire “dinamici”.

bottega@bottegadelbarbieri  /var  ls -lha cache
total 72K
drwxr-xr-x 16 root root 4.0K Feb 28 11:27 .
drwxr-xr-x 14 root root 4.0K Feb  9 19:08 ..
drwxr-xr-x  3 root root 4.0K Feb 27 09:10 apparmor
drwxr-xr-x  4 root root 4.0K Feb  9 19:04 app-info
drwxr-xr-x  3 root root 4.0K Jul 17 06:41 apt
drwxrwx---  3 root lp   4.0K Jul 17 00:00 cups
drwxr-xr-x  2 root root 4.0K Jun 10 19:37 debconf
drwxr-xr-x  2 root root 4.0K Feb 27 08:58 dictionaries-common
drwxr-xr-x  2 root root  12K Jun 10 19:37 fontconfig
drwxr-xr-x  2 root root 4.0K Jul 16 22:11 fwupd
lrwxrwxrwx  1 root root   16 Feb 28 11:27 fwupdmgr -> private/fwupdmgr
drwx------  2 root root 4.0K Jul 10 10:00 ldconfig
drwxr-xr-x  3 root root 4.0K Feb 27 09:10 lightdm
drwxr-xr-x 38 man  man  4.0K Jul 17 06:41 man
drwxr-xr-x  3 root root 4.0K Feb  9 18:52 PackageKit
drwx------  3 root root 4.0K Feb 28 11:27 private
drwxr-xr-x  2 root root 4.0K Jul 16 19:52 snapd

/var/lock
Un punto interessante da sottolineare per questa directory è che contiene i cosiddetti “lock files”. Per evitare di occupare due volte una risorsa, un lock file viene creato dal sistema per comunicare uno “stop” al tentativo di un programma di accedere a un determinato file più di una volta. Per chiarire: il loro contenuto è assolutamente “irrilevante” ma la loro esistenza è assolutamente “necessaria”.

bottega@bottegadelbarbieri  /var  sudo lslocks
[sudo] password for bottega: 
COMMAND PID TYPE SIZE MODE M START END PATH
rpcbind 540 FLOCK WRITE 0 0 0 /run/rpcbind.lock
cron 578 FLOCK 4B WRITE 0 0 0 /run/crond.pid
whoopsie 779 FLOCK WRITE 0 0 0 /run/lock/whoopsie/lock

Inoltre, /var/lock è un link simbolico alla directory /run/lock

bottega@bottegadelbarbieri  /var  ls -lha lock/
total 4.0K
drwxrwxrwt  5 root     root      120 Jul 16 19:52 .
drwxr-xr-x 34 root     root     1.2K Jul 17 06:41 ..
-rw-r--r--  1 root     root       22 Jul 16 19:52 asound.state.lock
drwx------  2 root     root       40 Jul 16 19:52 lvm
drwxr-xr-x  2 root     root       40 Jul 16 19:52 subsys
drwxr-xr-x  2 whoopsie whoopsie   60 Jul 16 19:52 whoopsie

/var/log/
Forse questa è la subdirectory più importante di tutte. Ci sono tutti i log del sistema elencati per nome, backuppati, e listati in un formato assolutamente semplice da leggere. Ci sono i log del boot, quelli del kernel, quelli relativi alla sicurezza, quelli dell’intero sistema e via discorrendo. È il punto da visitare quasi costantemente se si vuole avere un controllo granulare di quello che avviene sulla nostra macchina:

bottega@bottegadelbarbieri  /var  ls -lha log/
total 1.5M
drwxrwxr-x  13 root              syslog          4.0K Jul 17 00:00 .
drwxr-xr-x  14 root              root            4.0K Feb  9 19:08 ..
[...]
-rw-r-----   1 syslog            adm              57K Jul 17 15:25 auth.log
-rw-r-----   1 syslog            adm              58K Jul 10 23:59 auth.log.1
-rw-r-----   1 syslog            adm             3.9K Jul  4 16:08 auth.log.2.gz
-rw-r-----   1 syslog            adm             1.9K Jun 26 23:59 auth.log.3.gz
-rw-r-----   1 syslog            adm             3.7K Jun 26 11:53 auth.log.4.gz
-rw-------   1 root              root               0 Jul 17 00:00 boot.log
-rw-------   1 root              root            1.6K Jul 17 00:00 boot.log.1
-rw-------   1 root              root            7.2K Jul 16 19:52 boot.log.2
-rw-------   1 root              root            1.5K Jul  5 00:00 boot.log.3
[...]
-rw-r--r--   1 root              adm              46K Jul 16 19:52 dmesg
-rw-r--r--   1 root              adm              45K Jul  4 16:09 dmesg.0
-rw-r--r--   1 root              adm              14K Jul  3 08:24 dmesg.1.gz
-rw-r--r--   1 root              adm              14K Jul  2 10:50 dmesg.2.gz
-rw-r--r--   1 root              adm              14K Jun 26 11:53 dmesg.3.gz
-rw-r--r--   1 root              adm              14K Jun 22 06:42 dmesg.4.gz
-rw-r--r--   1 root              root             32K Jul 17 06:41 dpkg.log
-rw-r--r--   1 root              root            171K Jun 26 17:44 dpkg.log.1
-rw-r--r--   1 root              root            2.2K May 28 21:01 dpkg.log.2.gz
-rw-r--r--   1 root              root            4.8K Apr 28 21:21 dpkg.log.3.gz
-rw-r--r--   1 root              root             516 Mar  9 22:24 dpkg.log.4.gz
-rw-r--r--   1 root              root             94K Feb 28 22:36 dpkg.log.5.gz
[...]

Giusto per fare un esempio, se volessimo leggere le ultime 10 linee (relative agli ultimi 10 eventi) di syslog:

bottega@bottegadelbarbieri  /var  tail -10  log/syslog
Jul 17 15:12:13 bottegadelbarbieri systemd[1]: ua-messaging.service: Succeeded.
Jul 17 15:12:13 bottegadelbarbieri systemd[1]: Finished Ubuntu Advantage APT and MOTD Messages.
Jul 17 15:15:01 bottegadelbarbieri CRON[6717]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Jul 17 15:17:01 bottegadelbarbieri CRON[6794]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 17 15:25:01 bottegadelbarbieri CRON[7053]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Jul 17 15:30:01 bottegadelbarbieri CRON[7147]: (root) CMD ([ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi)
Jul 17 15:31:56 bottegadelbarbieri systemd[1]: Started Run anacron jobs.
Jul 17 15:31:56 bottegadelbarbieri anacron[7150]: Anacron 2.3 started on 2021-07-17
Jul 17 15:31:56 bottegadelbarbieri anacron[7150]: Normal exit (0 jobs run)
Jul 17 15:31:56 bottegadelbarbieri systemd[1]: anacron.service: Succeeded.
 bottega@bottegadelbarbieri  /var  

Oppure per visualizzare le ultime installazioni avvenute nel sistema:

bottega@bottegadelbarbieri  /var  grep "install " /var/log/dpkg.log
2021-07-02 11:04:14 install efibootmgr:amd64  17-1
2021-07-02 11:10:24 install linux-modules-5.8.0-59-generic:amd64  5.8.0-59.66~20.04.1
2021-07-02 11:10:29 install linux-image-5.8.0-59-generic:amd64  5.8.0-59.66~20.04.1
2021-07-02 11:10:29 install linux-modules-extra-5.8.0-59-generic:amd64  5.8.0-59.66~20.04.1
2021-07-02 11:10:48 install linux-hwe-5.8-headers-5.8.0-59:all  5.8.0-59.66~20.04.1
2021-07-02 11:11:37 install linux-headers-5.8.0-59-generic:amd64  5.8.0-59.66~20.04.1

/var/run
Questa e’ una directory particolare. Serve essenzialmente per contenere lo stato del sistema (demoni, programmi etc…) da quando il è stato fatto il boot.

bottega@bottegadelbarbieri  /var  ls -lha run/ |head -n 20 
total 40K
drwxr-xr-x 34 root              root  1.2K Jul 17 06:41 .
drwxr-xr-x 20 root              root  4.0K Apr 25 07:26 ..
-rw-r--r--  1 root              root     4 Jul 16 19:52 acpid.pid
srw-rw-rw-  1 root              root     0 Jul 16 19:52 acpid.socket
-rw-------  1 root              root     0 Jul 16 19:52 agetty.reload
drwxr-xr-x  2 root              root    40 Jul 16 19:52 alsa
prw-------  1 root              root     0 Jul 16 19:52 autofs.fifo-mnt
-rw-r--r--  1 root              root     4 Jul 16 19:52 autofs.pid
-rw-r--r--  1 root              root     4 Jul 16 19:52 autofs-running
drwxr-xr-x  2 avahi             avahi   80 Jul 16 19:52 avahi-daemon
drwxr-xr-x  2 root              root    80 Jul 16 19:52 blkid
drwxr-xr-x  2 root              root    80 Jul 16 19:52 console-setup
-rw-r--r--  1 root              root     4 Jul 16 19:52 crond.pid
----------  1 root              root     0 Jul 16 19:52 crond.reboot
drwx------  2 root              root    40 Jul 16 19:52 cryptsetup
drwxr-xr-x  3 root              lp     100 Jul 17 00:00 cups
drwxr-xr-x  2 root              root    60 Jul 16 19:52 dbus
prw-------  1 root              root     0 Jul 16 19:52 dmeventd-client
prw-------  1 root              root     0 Jul 16 19:52 dmeventd-server

Nota a margine: questa funzionalità gradualmente si sta muovendo verso la directory /run. L’esistenza della subdirectory /var/run è dovuta quindi alla necessita’ di rendere compatibili quei programmi che continuano a utilizzarla, in attesa che avvenga per tutti il passaggio definitivo.

/var/tmp/
Ed ecco dove il sistema salva i file temporanei.

bottega@bottegadelbarbieri  /var  ls -lha tmp/
total 4.5M
drwxrwxrwt 10 root root 4.0K Jul 17 00:11 .
drwxr-xr-x 14 root root 4.0K Feb  9 19:08 ..
drwxr-xr-x  9 root root 4.0K Jun 10 06:37 mkinitramfs_3qVHSe
-rw-------  1 root root 4.5M Jun 10 06:36 mkinitramfs-FW_lFnPD1
-rw-------  1 root root    0 Jun 10 18:47 mkinitramfs-FW_P4WSWX
drwxr-xr-x  8 root root 4.0K Jun 10 18:47 mkinitramfs_guW7Ty
-rw-------  1 root root    0 Jun 10 06:36 mkinitramfs-OL_a5NSSm
-rw-------  1 root root    0 Jun 10 18:47 mkinitramfs-OL_VBovQb
drwx------  3 root root 4.0K Jul 16 19:52 systemd-private-6f78d1d1bc7a4135b644849dcaf3c4a0-colord.service-jhlSPh
drwx------  3 root root 4.0K Jul 16 19:52 systemd-private-6f78d1d1bc7a4135b644849dcaf3c4a0-ModemManager.service-vqrc0h
drwx------  3 root root 4.0K Jul 16 19:52 systemd-private-6f78d1d1bc7a4135b644849dcaf3c4a0-systemd-logind.service-sL2h8g
drwx------  3 root root 4.0K Jul 16 19:52 systemd-private-6f78d1d1bc7a4135b644849dcaf3c4a0-systemd-resolved.service-pyw5dh
drwx------  3 root root 4.0K Jul 16 19:52 systemd-private-6f78d1d1bc7a4135b644849dcaf3c4a0-systemd-timesyncd.service-DcxuLf
drwx------  3 root root 4.0K Jul 16 22:11 systemd-private-6f78d1d1bc7a4135b644849dcaf3c4a0-upower.service-9KKFHh

 

Alla prossima settimana!
jolek78

>> Indice <<
Puntata 19 < > Puntata 21

Il logo “tux-linux-by-deiby-ybied” e’ stato realizzato da laboratoriolinux in licenza Creative Commons BY-NC-SA 2.0

Fabio
Un tizio che pensava di essere uno scienziato. Si ritrovò divulgatore scientifico. Poi si addormentò e si svegliò informatico. Ma era sempre lui.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *