Linux Tutorial – Puntata 32
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!
Nella vita di un amministratore di sistema, una delle tante cose che può capitare di fare è di dover configurare un account per un nuovo utente. La procedura per creare un user dentro una macchina Linux l’abbiamo già vista in atto tante puntate fa, quando avevo creato l’utente bottega_test parlando della home directory. Il comando adduser infatti, a differenza di useradd, e’ uno script che non solo crea l’utente ma, attraverso una serie di passaggi, porta anche alla creazione di una home directory che serve per conservare tutti i suoi personali file di configurazione. Immaginate ora pero’ di aver creato una macchina virtuale al di sopra della quale avete settato un container con un server web. Quel server non ha molto spazio, giusto tre o quattro giga, e voi dovete settare un utente che utilizzi soltanto 500 mega. Come fare? Anche qui Linux ci viene in aiuto. C’e’ un sistema definito delle “quote” che ci permette di definire quanto spazio disco possa occupare ciascun user. Definito lo spazio, definiti i permessi, definito l’utilizzo. Mi è capitato di pensarci per un piccolo progettino che, a breve, sarà disponibile per i lettori della bottega. E allora, poiché un account è stato già creato e configurato, perché non condividerne tutto il percorso fatto? Fate attenzione ai passaggi: ci saranno degli spoiler. Bentornati!
1. adduser
Dunque, immaginate che un certo pkdick mostri interesse verso Linux e chieda “ehy jolek78, perche’ non mi crei un utente sulla macchina virtuale dove fai i test per il tutorial”? Io preso da un afflato di entusiasmo e d’incredulità, e pensando che gli alieni siano finalmente sbarcati sulla terra, mi metto subito al lavoro. Controlliamo prima cosa c’e’ nella home dir
bottega@bottegadelbarbieri ~ ls -lha /home total 16K drwxr-xr-x 4 root root 4.0K Oct 31 01:05 . drwxr-xr-x 20 root root 4.0K Oct 23 22:49 .. drwxr-xr-x 22 bottega bottega 4.0K Oct 30 19:36 bottega drwxr-xr-x 3 bottega_test bottega_test 4.0K Aug 28 09:27 bottega_test
Pertanto, siamo pronti:
bottega@bottegadelbarbieri ~ sudo adduser pkdick [sudo] password for bottega: Adding user `pkdick' ... Adding new group `pkdick' (1002) ... Adding new user `pkdick' (1002) with group `pkdick' ... Creating home directory `/home/pkdick' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for pkdick Enter the new value, or press ENTER for the default Full Name []: pkdick Room Number []: 00 Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y
e poi verifichiamo che davvero esista la sua home dir:
bottega@bottegadelbarbieri ~ ls -lha /home total 20K drwxr-xr-x 5 root root 4.0K Oct 31 01:38 . drwxr-xr-x 20 root root 4.0K Oct 23 22:49 .. drwxr-xr-x 22 bottega bottega 4.0K Oct 30 19:36 bottega drwxr-xr-x 3 bottega_test bottega_test 4.0K Aug 28 09:27 bottega_test drwxr-xr-x 3 pkdick pkdick 4.0K Oct 31 01:38 pkdick
Ecco qui, primo passaggio fatto.
2. usermod
Se vi ricordate quando abbiamo parlato di utenti e gruppi, vi ricorderete anche che gli utenti, con tutte le loro informazioni, sono conservati nel file /etc/passwd mentre i gruppi dentro /etc/groups. Ora pero’ vogliamo fare qualcosa di diverso. Questo pkdick non merita di essere “soltanto” utente, ma merita di essere “superutente”, ovvero dobbiamo dargli i permessi di amministratore con il comando sudo. Come dite? Non sapete cosa sia sudo? Dai su… lo vedete ogni puntata…
bottega@bottegadelbarbieri ~ sudo usermod -aG sudo pkdick
e poi controlliamo che davvero pkdick faccia parte del gruppo sudo:
bottega@bottegadelbarbieri ~ sudo cat /etc/group | grep sudo sudo:x:27:bottega,pkdick
Verifichiamo che questo sia vero (fidarsi è bene, ma non fidarsi…):
bottega@bottegadelbarbieri ~ sudo su - root@bottegadelbarbieri:~# su - pkdick To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. pkdick@bottegadelbarbieri:~$ sudo du -shx /* 2>/dev/null [sudo] password for pkdick: 0 /bin 215M /boot 4.0K /cdrom 0 /dev 14M /etc 1.3G /home 0 /lib 0 /lib32 0 /lib64 0 /libx32 16K /lost+found 4.0K /media 4.0K /mnt 4.0K /opt 0 /proc 228K /root 1.3M /run 0 /sbin 32K /snap 4.0K /srv 0 /sys 104K /tmp 5.4G /usr 2.4G /var 4.0K /webmin-setup.out
Ecco qui: da ora pkdick puo’ diventare amministratore di sistema.
3. quota – install
Ora andiamo a installare il programma quota che ci aiuterà nell’esecuzione delle operazioni a seguire:
pkdick@bottegadelbarbieri ~ sudo apt install quota Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libtirpc-common libtirpc3 Suggested packages: libnet-ldap-perl rpcbind default-mta | mail-transport-agent The following NEW packages will be installed libtirpc-common libtirpc3 quota 0 to upgrade, 3 to newly install, 0 to remove and 4 not to upgrade. Need to get 339 kB of archives. After this operation, 1,785 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://gb.archive.ubuntu.com/ubuntu focal/main amd64 libtirpc-common all 1.2.5-1 [7,632 B] Get:2 http://gb.archive.ubuntu.com/ubuntu focal/main amd64 libtirpc3 amd64 1.2.5-1 [77.2 kB] Get:3 http://gb.archive.ubuntu.com/ubuntu focal/main amd64 quota amd64 4.05-1 [254 kB] Fetched 339 kB in 0s (1,589 kB/s) Preconfiguring packages ... Selecting previously unselected package libtirpc-common. (Reading database ... 272540 files and directories currently installed.) Preparing to unpack .../libtirpc-common_1.2.5-1_all.deb ... Unpacking libtirpc-common (1.2.5-1) ... Selecting previously unselected package libtirpc3:amd64. Preparing to unpack .../libtirpc3_1.2.5-1_amd64.deb ... Unpacking libtirpc3:amd64 (1.2.5-1) ... Selecting previously unselected package quota. Preparing to unpack .../quota_4.05-1_amd64.deb ... Unpacking quota (4.05-1) ... Setting up libtirpc-common (1.2.5-1) ... Setting up libtirpc3:amd64 (1.2.5-1) ... Setting up quota (4.05-1) ... Processing triggers for systemd (245.4-4ubuntu3.13) ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
E poi, ovviamente, il modulo del kernel:
bottega@bottegadelbarbieri:~# sudo apt install linux-image-extra-virtual Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: linux-image-5.4.0-89-generic linux-image-generic linux-modules-5.4.0-89-generic linux-modules-extra-5.4.0-89-generic thermald Suggested packages: fdutils linux-doc | linux-source-5.4.0 linux-tools linux-headers-5.4.0-89-generic The following NEW packages will be installed linux-image-5.4.0-89-generic linux-image-extra-virtual linux-image-generic linux-modules-5.4.0-89-generic linux-modules-extra-5.4.0-89-generic thermald 0 to upgrade, 6 to newly install, 0 to remove and 4 not to upgrade. Need to get 63.4 MB of archives. After this operation, 292 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://gb.archive.ubuntu.com/ubuntu focal-updates/main amd64 linux-modules-5.4.0-89-generic amd64 5.4.0-89.100 [14.8 MB] Get:2 http://gb.archive.ubuntu.com/ubuntu focal-updates/main amd64 linux-image-5.4.0-89-generic amd64 5.4.0-89.100 [8,990 kB] Get:3 http://gb.archive.ubuntu.com/ubuntu focal-updates/main amd64 linux-modules-extra-5.4.0-89-generic amd64 5.4.0-89.100 [39.4 MB] Get:4 http://gb.archive.ubuntu.com/ubuntu focal-updates/main amd64 linux-image-generic amd64 5.4.0.89.93 [2,576 B] Get:5 http://gb.archive.ubuntu.com/ubuntu focal-updates/main amd64 linux-image-extra-virtual amd64 5.4.0.89.93 [1,888 B] Get:6 http://gb.archive.ubuntu.com/ubuntu focal-updates/main amd64 thermald amd64 1.9.1-1ubuntu0.6 [233 kB] Fetched 63.4 MB in 5s (13.1 MB/s) [...] /etc/kernel/postinst.d/zz-update-grub: Sourcing file `/etc/default/grub' Sourcing file `/etc/default/grub.d/init-select.cfg' Generating grub configuration file ... Found linux image: /boot/vmlinuz-5.11.0-38-generic Found initrd image: /boot/initrd.img-5.11.0-38-generic Found linux image: /boot/vmlinuz-5.11.0-37-generic Found initrd image: /boot/initrd.img-5.11.0-37-generic Found linux image: /boot/vmlinuz-5.4.0-89-generic Found initrd image: /boot/initrd.img-5.4.0-89-generic Found memtest86+ image: /memtest86+.elf Found memtest86+ image: /memtest86+.bin done
4. usrquota,grpquota
Quando abbiamo descritto la struttura del FHS, ci siamo anche per un attimo soffermati su fstab, il file che, in buona sostanza, descrive cosa deve essere montato e cosa no all’avvio del sistema. Li’ dentro pero’ ci sono anche alcune importanti informazioni sulla struttura del filesystem e sulle sue proprietà. A noi interessa una linea in particolare di quel file: quella che descrive la root directory:
pkdick@bottegadelbarbieri:~$ exit root@bottegadelbarbieri:~# cat /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> /dev/mapper/vgxubuntu-root / ext4 errors=remount-ro 0 1 <<<<<<<<<<<<<<<<<< # /boot was on /dev/sda5 during installation UUID=8eaf4692-c5d3-410b-8489-bcf0f3cb543a /boot ext4 defaults 0 2 # /boot/efi was on /dev/sda1 during installation UUID=480C-F80D /boot/efi vfat umask=0077 0 1 /dev/mapper/vgxubuntu-swap_1 none swap sw 0 0
Pe essere sicuri di abilitare le quote nel sistema dobbiamo aggiungere su quella linea le opzioni usrquota,grpquota in questo modo:
root@bottegadelbarbieri:~# vim /etc/fstab root@bottegadelbarbieri:~# cat /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> /dev/mapper/vgxubuntu-root / ext4 errors=remount-ro,usrquota,grpquota 0 1 <<<<<<<<<<<<<<<<<< # /boot was on /dev/sda5 during installation UUID=8eaf4692-c5d3-410b-8489-bcf0f3cb543a /boot ext4 defaults 0 2 # /boot/efi was on /dev/sda1 during installation UUID=480C-F80D /boot/efi vfat umask=0077 0 1 /dev/mapper/vgxubuntu-swap_1 none swap sw 0 0
4. mount
Rimontiamo la directory / con le due opzioni inserite precedentemente:
root@bottegadelbarbieri:~# mount -o remount,usrquota,grpquota /
5. quotaon
Senza dover fare il reboot, abilitiamo le quote:
root@bottegadelbarbieri:~# quotacheck -cugm / root@bottegadelbarbieri:~# sudo quotaon -v / /dev/mapper/vgxubuntu-root [/]: group quotas turned on /dev/mapper/vgxubuntu-root [/]: user quotas turned on
6. setquota
E ora siamo al punto cruciale: quanto spazio decidiamo di dare a pkdick? Beh, su una macchina da 20 giga, 2 giga penso andranno benissimo. Anzi meglio, lo spazio dedicato sarà in un intervallo chiuso fra un giga e mezzo e 2 giga. Quindi:
root@bottegadelbarbieri:~# setquota -u pkdick 1500M 2000M 0 0 /
Verifichiamo:
root@bottegadelbarbieri:~# quota -vs pkdick Disk quotas for user pkdick (uid 1002): Filesystem space quota limit grace files quota limit grace /dev/mapper/vgxubuntu-root 64K 1500M 2000M 17 0 0 root@bottegadelbarbieri:~#
7. repquota
E ora il report finale:
root@bottegadelbarbieri:~# repquota -s / *** Report for user quotas on device /dev/mapper/vgxubuntu-root Block grace time: 7days; Inode grace time: 7days Space limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 8239M 0K 0K 299k 0 0 man -- 1948K 0K 0K 129 0 0 lp -- 0K 0K 0K 1 0 0 systemd-network -- 16K 0K 0K 4 0 0 systemd-timesync -- 4K 0K 0K 2 0 0 syslog -- 752K 0K 0K 22 0 0 _apt -- 36K 0K 0K 4 0 0 tss -- 4K 0K 0K 1 0 0 avahi-autoipd -- 4K 0K 0K 1 0 0 dnsmasq -- 4K 0K 0K 1 0 0 lightdm -- 4K 0K 0K 1 0 0 speech-dispatcher -- 8K 0K 0K 2 0 0 hplip -- 4K 0K 0K 1 0 0 colord -- 56K 0K 0K 5 0 0 bottega -- 1228M 0K 0K 6432 0 0 debian-tor -- 11860K 0K 0K 9 0 0 bottega_test -- 56K 0K 0K 14 0 0 pkdick -- 64K 1500M 2000M 17 0 0 #62803 -- 4K 0K 0K 1 0 0
Caro pkdick, chiunque tu sia, ora non hai più scuse.
Alla prossima settimana!
jolek78
>> | Indice | << |
Puntata 31 | < > | Puntata 33 |
Il logo “Tux Linux” e’ stato realizzato e distribuito dall’artista deiby-ybied su Deviantart in licenza Creative Commons BY-NC-SA 3.0