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

jolek78 on Email
jolek78
Un tizio che pensava di essere uno scienziato. Si ritrovò divulgatore scientifico. Poi si addormentò su un aereo e si risvegliò informatico. Ma era sempre lui.

Lascia un commento

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