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” e’ stato realizzato e distribuito dall’artista deiby-ybied su Deviantart in licenza Creative Commons BY-NC-SA 3.0