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

jolek78
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.