Linux Tutorial – Puntata 19
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!
Bentornati a tutti. Dopo esserci riposati una intera settimana (avete fatto le vostre prove? si vero?) siamo tornati a parlare del FHS. Questa volta e’ il momento di centrare la nostra attenzione sulla directory /usr che e’, in generale, quella che contiene le librerie condivise, i gli header, gli eseguibili presenti nel sistema (inclusi i link). In un tempo remoto (ma non troppo, che senno’ mi sento troppo vecchio), quando linux era agli albori, era usata anche per contenere le home directory degli user che oggi invece, come ricordate, son collocate in /home. Dunque, ciancio alle bande (?), prendete la vostra tazza di the e cominciamo l’esplorazione.
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 5 08:19 dev -rw-r--r-- 1 root root 0 Apr 25 07:26 dmraid-map drwxr-xr-x 143 root root 12K Jul 10 10:00 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 4 16:08 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 232 root root 0 Jul 4 16:08 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 10 10:01 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 4 16:08 sys drwxrwxrwt 16 root root 4.0K Jul 10 10:14 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
/USR
Prima di tutto listiamo il contenuto della directory, per visualizzare su console cosa contiene:
bottega@bottegadelbarbieri /usr ls -lha total 112K drwxr-xr-x 14 root root 4.0K Feb 9 18:52 . drwxr-xr-x 20 root root 4.0K Apr 25 07:26 .. drwxr-xr-x 2 root root 36K Jul 10 10:00 bin drwxr-xr-x 2 root root 4.0K Feb 9 19:00 games drwxr-xr-x 8 root root 4.0K Feb 27 09:52 include drwxr-xr-x 119 root root 4.0K Jun 10 19:41 lib drwxr-xr-x 2 root root 4.0K Feb 9 18:48 lib32 drwxr-xr-x 2 root root 4.0K Feb 9 18:50 lib64 drwxr-xr-x 6 root root 4.0K Feb 9 19:00 libexec drwxr-xr-x 2 root root 4.0K Feb 9 18:48 libx32 drwxr-xr-x 10 root root 4.0K Feb 9 18:48 local drwxr-xr-x 2 root root 20K Jul 10 10:00 sbin drwxr-xr-x 258 root root 12K Jun 23 06:08 share drwxr-xr-x 6 root root 4.0K Jul 3 08:45 src
– /usr/bin
Facciamo un attimo un paragone con una directory che conosciamo bene. L’abbiamo gia’ citato in una precedente puntata: /bin e’ il collegamento simbolico ad /usr/bin.
bottega@bottegadelbarbieri /usr ls /usr/bin/ |wc -l ; ls /bin |wc -l 1463 <<<<<< 1463 <<<<<< bottega@bottegadelbarbieri /usr ls -ltr / |grep "usr/bin" lrwxrwxrwx 1 root root 7 Feb 27 08:53 bin -> usr/bin bottega@bottegadelbarbieri /usr ls -ltr bin/ |head -n 20 total 187356 -rwxr-xr-x 1 root root 17143 Nov 25 2006 dirsplit -rwxr-xr-x 1 root root 273 May 19 2016 apturl -rwxr-xr-x 1 root root 1652232 Aug 12 2016 pnm2ppa -rwxr-xr-x 1 root root 27688 Aug 12 2016 calibrate_ppa -rwxr-xr-x 1 root root 1618 Aug 29 2016 traceroute-nanog -rwxr-xr-x 1 root root 68768 Aug 29 2016 traceroute.db lrwxrwxrwx 1 root root 13 Aug 29 2016 traceroute6.db -> traceroute.db -rwxr-xr-x 1 root root 2885 Aug 29 2016 traceproto.db -rwxr-xr-x 1 root root 2493 Aug 29 2016 lft.db -rwxr-xr-x 1 root root 1577 Jan 21 2017 linux-boot-prober -rwxr-xr-x 1 root root 4551 Jan 31 2017 os-prober -rwxr-xr-x 1 root root 14720 Apr 21 2017 time -rwxr-xr-x 1 root root 93584 Apr 21 2017 zipsplit -rwxr-xr-x 1 root root 89488 Apr 21 2017 zipnote -rwxr-xr-x 1 root root 93816 Apr 21 2017 zipcloak -rwxr-xr-x 1 root root 216256 Apr 21 2017 zip -rwxr-xr-x 1 root root 51192 Jun 2 2017 lp_solve -rwxr-xr-x 1 root root 3820 Aug 12 2017 laptop-detect -rwxr-xr-x 1 root root 1081 Aug 28 2017 lspgpot
Qui e’ semplicemente collocata la quasi totalita’ degli eseguibil presenti nel sistema.
-/usr/games
Incredibile vero? su Linux c’e’ anche spazio per giocare 😉
bottega@bottegadelbarbieri /usr ls -ltr games |head -n 20 total 8568 -rwxr-xr-x 1 root root 211256 Feb 2 2020 sgt-untangle -rwxr-xr-x 1 root root 207160 Feb 2 2020 sgt-unruly -rwxr-xr-x 1 root root 211256 Feb 2 2020 sgt-unequal -rwxr-xr-x 1 root root 211256 Feb 2 2020 sgt-undead -rwxr-xr-x 1 root root 211256 Feb 2 2020 sgt-twiddle -rwxr-xr-x 1 root root 219448 Feb 2 2020 sgt-tracks -rwxr-xr-x 1 root root 219448 Feb 2 2020 sgt-towers -rwxr-xr-x 1 root root 215352 Feb 2 2020 sgt-tents -rwxr-xr-x 1 root root 231736 Feb 2 2020 sgt-solo -rwxr-xr-x 1 root root 219448 Feb 2 2020 sgt-slant -rwxr-xr-x 1 root root 203064 Feb 2 2020 sgt-sixteen -rwxr-xr-x 1 root root 235832 Feb 2 2020 sgt-singles -rwxr-xr-x 1 root root 194872 Feb 2 2020 sgt-signpost -rwxr-xr-x 1 root root 207160 Feb 2 2020 sgt-samegame -rwxr-xr-x 1 root root 219448 Feb 2 2020 sgt-rect -rwxr-xr-x 1 root root 207160 Feb 2 2020 sgt-range -rwxr-xr-x 1 root root 190776 Feb 2 2020 sgt-pegs -rwxr-xr-x 1 root root 276792 Feb 2 2020 sgt-pearl -rwxr-xr-x 1 root root 211256 Feb 2 2020 sgt-pattern
-/usr/include
L’idea della directory include e’ di “includere” le librerie utili ad alcuni programmi per estrarre informazioni per il loro funzionamento. Se listiamo potremo trovare:
bottega@bottegadelbarbieri /usr ls -ltr include/ total 44 -rw-r--r-- 1 root root 4546 Aug 29 2016 clif.h -rw-r--r-- 1 root root 8221 Jan 19 14:21 sudo_plugin.h drwxr-xr-x 2 root root 4096 Feb 9 18:48 iproute2 drwxr-xr-x 3 root root 4096 Feb 9 18:52 X11 drwxr-xr-x 2 root root 4096 Feb 9 18:53 reglib drwxr-xr-x 2 root root 4096 Feb 9 18:59 mlocate drwxr-xr-x 2 root root 4096 Feb 9 19:01 xorg drwxr-xr-x 2 root root 4096 Jun 7 12:52 python3.8
Facciamo un esempio. La prima directory che troviamo e’ iproute2, una versione aggiornata di uno dei tool piu’ popolari per la gestione del network su linux.
bottega@bottegadelbarbieri /usr ip a s enp0s3 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:14:50:0a brd ff:ff:ff:ff:ff:ff inet 192.168.0.11/24 brd 192.168.0.255 scope global dynamic noprefixroute enp0s3 valid_lft 77344sec preferred_lft 77344sec inet6 fe80::d908:a6eb:3a4a:16ae/64 scope link noprefixroute valid_lft forever preferred_lft forever
E se listiamo il suo contenuto, potremo vedere un header scritto in linguaggio C:
bottega@bottegadelbarbieri /usr ls -ltr include/iproute2/ total 4 -rw-r--r-- 1 root root 1271 Feb 13 2020 bpf_elf.h bottega@bottegadelbarbieri /usr more include/iproute2/bpf_elf.h /* SPDX-License-Identifier: GPL-2.0 */ [...] /* ELF map definition */ struct bpf_elf_map { __u32 type; __u32 size_key; __u32 size_value; __u32 max_elem; __u32 flags; __u32 id; __u32 pinning; __u32 inner_id; __u32 inner_idx; }; [...]
Non e’ importante per ora soffermarci su questo, ma se ricordate quando parlavamo della directory /lib, potrete notare quanto sia differente il contenuto. Vi rimando a quella puntata dove, a differenza di questi header con estensione “*.h“. si puo’ vedere il contenuto di alcune librerie con estensione “*.so“. A proposito di librerie…
– /usr/lib || /usr/lib32 || /usr/lib64 || /usr/libx32
bottega@bottegadelbarbieri /usr ls -lha /usr/lib/ |head -n 20 total 3.7M drwxr-xr-x 119 root root 4.0K Jun 10 19:41 . drwxr-xr-x 14 root root 4.0K Feb 9 18:52 .. drwxr-xr-x 2 root root 4.0K Feb 9 18:52 accountsservice drwxr-xr-x 2 root root 4.0K Feb 9 18:52 apparmor drwxr-xr-x 5 root root 4.0K Jun 10 19:21 apt drwxr-xr-x 3 root root 4.0K Feb 9 18:53 aspell drwxr-xr-x 2 root root 4.0K Feb 9 18:53 atril drwxr-xr-x 2 root root 4.0K Apr 22 2020 binfmt.d drwxr-xr-x 2 root root 4.0K Feb 9 18:53 blueman drwxr-xr-x 2 root root 4.0K Jun 19 10:02 bluetooth drwxr-xr-x 2 root root 4.0K Feb 9 18:53 bolt drwxr-xr-x 2 root root 4.0K Feb 9 19:01 brltty -rwxr-xr-x 1 root root 684 Aug 3 2020 cnf-update-db -rwxr-xr-x 1 root root 3.5K Aug 3 2020 command-not-found drwxr-xr-x 2 root root 4.0K Jun 5 12:44 compat-ld drwxr-xr-x 2 root root 4.0K Feb 9 18:48 console-setup lrwxrwxrwx 1 root root 21 Feb 27 08:54 cpp -> /etc/alternatives/cpp drwxr-xr-x 3 root root 4.0K Feb 9 18:53 crda drwxr-xr-x 4 root root 4.0K Feb 9 19:05 cryptsetup
Ecco qui che troviamo le originali, linkate dalla root /lib directory:
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 <<<<<<<<<<<<<
Vi rimando di nuovo a quando abbiamo parlato della directory /lib. Giusto pero’ una precisazione: non tutte le librerie hanno l’estensione “*.so“. In generale possiamo considerare la libreria un archivio di informazioni ai quali attinge un eseguibile per fare le sue operazioni. Se per esempio proviamo a listare il contenuto della directory python3 potremo visualizzare quello che cerco di dire a parole:
bottega@bottegadelbarbieri /usr ls -lha /usr/lib/python3/dist-packages/ |head -n 20 total 2.5M drwxr-xr-x 115 root root 12K Jun 10 19:38 . drwxr-xr-x 3 root root 4.0K Feb 9 18:49 .. drwxr-xr-x 4 root root 4.0K Jun 9 09:09 apport -rw-r--r-- 1 root root 7.9K Jun 1 2020 apport_python_hook.py drwxr-xr-x 4 root root 4.0K Jun 10 19:36 apt drwxr-xr-x 4 root root 4.0K Feb 9 19:03 aptdaemon -rw-r--r-- 1 root root 59K Apr 29 15:12 apt_inst.cpython-38-x86_64-linux-gnu.so drwxr-xr-x 2 root root 4.0K Jun 10 19:21 apt_inst-stubs -rw-r--r-- 1 root root 351K Apr 29 15:12 apt_pkg.cpython-38-x86_64-linux-gnu.so drwxr-xr-x 2 root root 4.0K Jun 10 19:21 apt_pkg-stubs drwxr-xr-x 3 root root 4.0K Jun 10 19:37 aptsources drwxr-xr-x 4 root root 4.0K Feb 9 19:03 AptUrl -rw-r--r-- 1 root root 180 Jan 25 2020 apturl-0.5.2.egg-info drwxr-xr-x 3 root root 4.0K Feb 9 19:02 blinker -rw-r--r-- 1 root root 3.9K Jan 21 2020 blinker-1.4.egg-info drwxr-xr-x 8 root root 4.0K Feb 9 19:04 blueman -rw-r--r-- 1 root root 157K Oct 30 2020 _blueman.cpython-38-x86_64-linux-gnu.so drwxr-xr-x 3 root root 4.0K Feb 9 19:03 cairo drwxr-xr-x 3 root root 4.0K Feb 9 19:04 catfish
– /usr/local
Somiglia per struttura interamente alla main directory /usr ma attualmente, nelle nuove distribuzioni, e’ sempre vuota (o quasi). Viene utilizzata spesso dagli amministratori di sistema nel caso si voglia installare un particolare programma da sorgente, e lo si voglia separare dalle direcotry comunemente utilizzate.
bottega@bottegadelbarbieri /usr ls -lha /usr/local/ total 40K drwxr-xr-x 10 root root 4.0K Feb 9 18:48 . drwxr-xr-x 14 root root 4.0K Feb 9 18:52 .. drwxr-xr-x 2 root root 4.0K Feb 9 18:48 bin drwxr-xr-x 2 root root 4.0K Feb 9 18:48 etc drwxr-xr-x 2 root root 4.0K Feb 9 18:48 games drwxr-xr-x 2 root root 4.0K Feb 9 18:48 include drwxr-xr-x 3 root root 4.0K Feb 9 18:48 lib lrwxrwxrwx 1 root root 9 Feb 27 08:54 man -> share/man drwxr-xr-x 2 root root 4.0K Feb 9 18:48 sbin drwxr-xr-x 7 root root 4.0K Feb 9 19:02 share drwxr-xr-x 2 root root 4.0K Feb 9 18:48 src
– /usr/sbin
Contiene alcuni eseguibili molto importanti per il sistema, la cui esecuzione e’ lasciata nelle mani dell’utente “root“. Sorpresa ma a non troppo: e’ linkata dalla root directory /sbin. Se ve lo state domandando: si, probabilmnete una revisione dell’intero FHS arrivera’ nei prossimi anni.
bottega@bottegadelbarbieri /usr ls -lha / |grep "sbin" lrwxrwxrwx 1 root root 8 Feb 27 08:53 sbin -> usr/sbin
Ed ecco il listato:
bottega@bottegadelbarbieri /usr ls -lha sbin/ |head -n 20 total 38M drwxr-xr-x 2 root root 20K Jul 10 10:00 . drwxr-xr-x 14 root root 4.0K Feb 9 18:52 .. -rwxr-xr-x 1 root root 3.0K May 19 2020 aa-remove-unknown -rwxr-xr-x 1 root root 8.7K May 19 2020 aa-status -rwxr-xr-x 1 root root 139 Jun 18 2019 aa-teardown -rwxr-xr-x 1 root root 15K Feb 25 2020 accessdb -rwxr-xr-x 1 root root 60K Nov 28 2019 acpid -rwxr-xr-x 1 root root 3.1K Jan 6 2021 addgnupghome lrwxrwxrwx 1 root root 7 Feb 27 08:54 addgroup -> adduser -rwxr-xr-x 1 root root 860 Dec 7 2019 add-shell -rwxr-xr-x 1 root root 37K Apr 16 2020 adduser -rwxr-xr-x 1 root root 68K Jul 21 2020 agetty -rwxr-xr-x 1 root root 5.5K Jul 31 2015 alsa -rwxr-xr-x 1 root root 4.1K Apr 14 14:38 alsabat-test -rwxr-xr-x 1 root root 116K Apr 14 14:38 alsactl -rwxr-xr-x 1 root root 26K Apr 14 14:38 alsa-info -rwxr-xr-x 1 root root 39K Jul 16 2019 anacron -rwxr-xr-x 1 root root 1.5M May 19 2020 apparmor_parser lrwxrwxrwx 1 root root 9 Feb 27 08:54 apparmor_status -> aa-status
– /usr/share
Questa e’ una directory particolare. Viene chiamata, se andate a leggere i manuali ufficiali, “architecture-indipendent” ed e’ in modalita’ read-only, non modificabile quindi. Importante da menzionare: contiene i manuali degli eseguibili richiamabili con man, i dizionari, e le miscellanea.
bottega@bottegadelbarbieri /usr ls -lha /usr/share/man |head total 328K read-only drwxr-xr-x 39 root root 4.0K Feb 27 09:52 . drwxr-xr-x 258 root root 12K Jun 23 06:08 .. drwxr-xr-x 6 root root 4.0K Feb 9 19:00 cs drwxr-xr-x 5 root root 4.0K Feb 9 18:48 da drwxr-xr-x 7 root root 4.0K Feb 9 19:00 de drwxr-xr-x 5 root root 4.0K Feb 9 18:48 es drwxr-xr-x 3 root root 4.0K Apr 16 2020 fi drwxr-xr-x 6 root root 4.0K Feb 9 18:53 fr drwxr-xr-x 4 root root 4.0K Feb 9 19:00 fr.ISO8859-1 bottega@bottegadelbarbieri /usr ls -lha /usr/share/dict total 1.9M read-only drwxr-xr-x 2 root root 4.0K Feb 27 08:58 . drwxr-xr-x 258 root root 12K Jun 23 06:08 .. -rw-r--r-- 1 root root 950K Apr 25 2018 american-english -rw-r--r-- 1 root root 946K Apr 25 2018 british-english -rw-r--r-- 1 root root 199 Nov 15 2018 README.select-wordlist lrwxrwxrwx 1 root root 30 Feb 27 08:55 words -> /etc/dictionaries-common/words lrwxrwxrwx 1 root root 16 Feb 27 08:55 words.pre-dictionaries-common -> american-english bottega@bottegadelbarbieri /usr ls -lha /usr/share/misc/ total 1.2M read-only drwxr-xr-x 2 root root 4.0K Feb 9 18:52 . drwxr-xr-x 258 root root 12K Jun 23 06:08 .. lrwxrwxrwx 1 root root 13 Feb 27 08:55 magic -> ../file/magic lrwxrwxrwx 1 root root 24 Feb 27 08:55 magic.mgc -> ../../lib/file/magic.mgc -rw-r--r-- 1 root root 1.2M Mar 20 2020 pci.ids lrwxrwxrwx 1 root root 25 Feb 27 08:55 usb.ids -> /var/lib/usbutils/usb.ids
E dulcis in fundo, i sorgenti del kernel:
– /usr/src
bottega@bottegadelbarbieri /usr uname -r 5.8.0-59-generic bottega@bottegadelbarbieri /usr ls -lha /usr/src/ total 24K drwxr-xr-x 6 root root 4.0K Jul 3 08:45 . drwxr-xr-x 14 root root 4.0K Feb 9 18:52 .. drwxr-xr-x 7 root root 4.0K Jun 9 09:08 linux-headers-5.8.0-55-generic drwxr-xr-x 7 root root 4.0K Jul 2 11:12 linux-headers-5.8.0-59-generic drwxr-xr-x 24 root root 4.0K Jun 9 09:06 linux-hwe-5.8-headers-5.8.0-55 drwxr-xr-x 24 root root 4.0K Jul 2 11:10 linux-hwe-5.8-headers-5.8.0-59
Poiche’ sulla nostra macchina gira il kernel 5.8.0-59, listiamo la sua subdirectory interna. Mi raccomando: non la toccate!
bottega@bottegadelbarbieri /usr ls -lha /usr/src/linux-hwe-5.8-headers-5.8.0-59 total 176K drwxr-xr-x 24 root root 4.0K Jul 2 11:10 . drwxr-xr-x 6 root root 4.0K Jul 3 08:45 .. drwxr-xr-x 27 root root 4.0K Jul 2 11:10 arch drwxr-xr-x 3 root root 4.0K Jul 2 11:11 block drwxr-xr-x 2 root root 4.0K Jul 2 11:11 certs drwxr-xr-x 4 root root 4.0K Jul 2 11:11 crypto drwxr-xr-x 12 root root 4.0K Jul 2 11:10 Documentation drwxr-xr-x 139 root root 4.0K Jul 2 11:11 drivers drwxr-xr-x 80 root root 4.0K Jul 2 11:11 fs drwxr-xr-x 28 root root 4.0K Jul 2 11:10 include drwxr-xr-x 2 root root 4.0K Jul 2 11:11 init drwxr-xr-x 2 root root 4.0K Jul 2 11:11 ipc -rw-r--r-- 1 root root 1.3K Aug 2 2020 Kbuild -rw-r--r-- 1 root root 580 Jun 17 04:25 Kconfig drwxr-xr-x 18 root root 4.0K Jul 2 11:11 kernel drwxr-xr-x 20 root root 4.0K Jul 2 11:11 lib -rw-r--r-- 1 root root 62K Jun 17 04:25 Makefile drwxr-xr-x 3 root root 4.0K Jul 2 11:11 mm drwxr-xr-x 72 root root 4.0K Jul 2 11:11 net drwxr-xr-x 31 root root 4.0K Jul 2 11:11 samples drwxr-xr-x 16 root root 12K Jul 2 11:11 scripts drwxr-xr-x 13 root root 4.0K Jul 2 11:11 security drwxr-xr-x 26 root root 4.0K Jul 2 11:11 sound drwxr-xr-x 35 root root 4.0K Jul 2 11:11 tools drwxr-xr-x 6 root root 4.0K Jul 2 11:11 ubuntu drwxr-xr-x 3 root root 4.0K Jul 2 11:11 usr drwxr-xr-x 4 root root 4.0K Jul 2 11:11 virt bottega@bottegadelbarbieri /usr
Alla prossima settimana!
jolek78
>> | Indice | << |
Puntata 18 | < > | Puntata 20 |
Il logo “Tux Linux” e’ stato realizzato e distribuito dall’artista deiby-ybied su Deviantart in licenza Creative Commons BY-NC-SA 3.0