Guida ai comandi avanzati del terminale

Shell

Salve a tutti!! In uno dei post precedenti abbiamo mostrato i comandi base della shell di Linux, oggi ne andremo a vedere altri importanti e molto utili, dai permessi sui file, fino agli utenti, e andremo a vedere come possiamo vedere i processi in esecuzione sul nostro computer.

INTRODUZIONE
Iniziamo a vedere come sono mostrati i file sulla nostra shell dando questo comando ad
esempio nella directory /bin:

ls -l /bin

 

verrà mostrato un output del genere:

ls bin

 

Prendiamo in considerazione la prima linea:

-rwxr-xr-x 1 root root 975488 set 25 21:49 bash

 

e vediamo cosa vogliono dire queste scritte.
 
All'inizio possiamo vedere -rwxr-xr-x, il primo carattere indica il tipo di file, e può essere rappresentato con diverse opzioni:
 
- file regolare
d directory
l simbolic link
b block-device file
c character-device file
p pipe
s socket
 
Quindi in questo caso il file bash è un file regolare.

 

Gli altri nove caratteri indicano i permessi sul file e li dividiamo in blocchi da 3 caratteri in questo modo: rwx | r-x | r-x dove r sta per lettura del file, w sta per scrittura sul file e x sta per esecuzione del file.
Il primo insieme di tre caratteri indica i permessi che ha l'utente proprietario del file, il secondo insieme indica i permessi che hanno gli utenti che sono nello stesso gruppo del proprietario del file ed infine l'ultimo insieme indica i permessi che hanno tutti gli altri utenti sul file (compreso il proprietario).

 

Dopo questa sequenza di caratteri troviamo un numero, che indica il numero di link al file, poi troviamo il nome del proprietario del file, in questo caso root, poi troviamo un altro nome che indica il gruppo del proprietario (che anche in questo caso è root), dopo c'è questo numero 975488 che indica la dimensione del file in caratteri, poi troviamo la data di ultima modifica ed infine il nome del file.

CHMOD

Andiamo ora a modificare i permessi sul file utilizzando il comando chmod. Come abbiamo visto precedentemente, i permessi sono indicati da tre gruppi di tre caratteri. Per la modifica dei permessi possiamo scegliere di farlo in due modi:

 

la prima opzione è utilizzare la rappresentazione ottale dei tre gruppi, vediamo un esempio: supponiamo di avere il seguente file:

 -rw-r--r-- 1 daniele daniele 5 nov 16 11:54 test
notiamo che l'utente daniele ha i permessi di lettura e scrittura, ma gli utenti del suo gruppo no, proviamo ora a dare i permessi di scrittura anche a loro.
Come prima cosa dobbiamo vedere un singolo insieme come una sequenza di tre bit, dove se troviamo il carattere -, il bit sarà 0 altrimenti se il carattere è r, w o x allora il bit sarà 1, ad esempio rw- sarà 110, mentre r-- sarà 100, quindi se vogliamo passare da r-- a rw- dobbiamo impostare a 1 il bit di w in modo tale che la sequenza sarà 110, e dopo di che convertiamo la cifra in ottale, quindi da 110 abbiamo 6, e applichiamo il ragionamento per tutti e tre gli insiemi.
Una volta applicato il ragionamento a tutti e tre gli insiemi la rappresentazione finale in ottale sarà la seguente: 664.

Ora applichiamo la modifica utilizzando la sequenza in ottale che ci siamo ricavati in questo modo:

chmod 664 test


ed effettivamente se andiamo a scrivere ls -l test notiamo questo:

-rw-rw-r-- 1 daniele daniele 5 nov 16 11:54 test 

Se la rappresentazione ottale non ci piace, esiste un secondo modo più semplice per modificare i permessi utilizzando i seguenti caratteri u, g e a. Il carattere u sta per utente, g sta per il gruppo dell'utente e a sta per tutti gli utenti. Vediamo degli esempi sul file test:

 

Se vogliamo dare i permessi di scrittura al nostro gruppo sul file di prima scriviamo:

chmod g+w test

 
Se vogliamo dare i permessi di lettura, scrittura ed esecuzione a tutti gli utenti:

 

chmod a+rwx test

 

Se, ad esempio, vogliamo togliere i permessi di esecuzione a tutti gli utenti allora scriviamo:

 chmod a-x test 

Direi che questo modo è più veloce rispetto alla rappresentazione ottale!!!

 
USERADD
Per aggiungere nuovi utenti al computer usiamo il comando useradd. Alcune opzioni utili possono essere:

 

-m: crea la directory home.
-g: nome del gruppo principale a cui assegnare l'utente.
-s: la shell che userà l'utente.

 

Ad esempio per creare l'utente pluto possiamo scrivere:

useradd -m -g gruppo -s /bin/bash pluto 

In questo modo verrà creato l'utente pluto sul gruppo gruppo, verrà creata una cartella per l'utente sulla /home e all'avvio gli verrà assegnata la bash come shell.

 

Per impostare una password all'utente usare il comando passwd, ad esempio:
passwd pluto
 
USERDEL

Invece, per eliminare un'utente, usare il comando userdel, ad esempio se vogliamo eliminare l'utente pluto:

userdel pluto

Se utilizziamo l'optione -r verrà eliminata anche la sua directory associata in /home.

 
GROUADD, GROUPDEL E GPASSWD

Per creare un gruppo usiamo il comando groupadd, ad esempio se vogliamo creare il gruppo test scriviamo:

groupadd test

Invece se vogliamo eliminare il gruppo usiamo il comando inverso groudel in questo modo:

groupdel test

Per quanto riguarda i gruppi, un altro comando interessante è gpasswd, che permette di aggiungere o eliminare un'utente da un gruppo, ad esempio se vogliamo aggiungere l'utente pluto al gruppo test scriviamo:

gpasswd -a pluto test 

Dove l'opzione -a significa add, invece se vogliamo rimuovere un'utente da un gruppo usiamo l'opzione -d, ad esempio:

gpasswd -d pluto test 

PS

Un comando che può tornare utile nel monitorare i processo è ps. Se proviamo a scrivere ps ci verrà mostrato un output simile:
ps

 

Dove ci mostra il processo corrente ossia la nostra shell e il comando appena lanciato, ossia ps.

 

Se vogliamo vedere tutti i processi che sono in esecuzione sul nostro computer possiamo aggiungere l'opzione ax:

ps -ax 

Se invece utilizziamo l'opzione -aux, in output abbiamo più informazioni a nostra disposizione.

 

Altre opzioni interessanti possono essere:
 

p [n]: dove n è un numero, e stampa il processo con il pid indicato, ad esempio se scriviamo:

ps -p 1 

verrà stampato:

1 ? 00:00:00 init 

perché il pid numero 1 è associato sempre al processo init.

 

u [user]: con questa opzione fa vedere tutti i processi che sono in esecuzione dall'utente user.

 

Ovviamente ci sono tantissime altre opzioni che vi invitiamo ad andare a vedere, scrivendo man ps.
 
KILL

Se vogliamo semplicemente terminare un processo basta eseguire il comando kill con il pid del processo da eliminare, ad esempio:

kill 5438

terminerà il processo con il pid 5438.

 
TOP
Il comando top, è un'alternativa a ps, e secondo me è anche più completo. Se lanciamo il comando avremo una schermata del genere:

 

top

 

Come possiamo vedere all'inizio ci vengono mostrate informazioni riguardo i processo in esecuzione, l'utilizzo della CPU, l'utilizzo della memoria RAM e della memoria SWAP. Invece sotto possiamo vedere una tabella con i processi in esecuzione, e se clicchiamo f possiamo abilitare e disabilitare delle colonne di questa tabella.

 

CONCLUSIONI

I comandi della shell sono tantissimi, e molti di questi permettono di fare moltissime cose interessanti, ad esempio come avevamo visto in questo post esiste anche un editor di testo da usare sul terminale. Bene ora non vi resta che testare e sperimentare questi comandi, e vi ricordo che se volete maggiori informazioni, da terminale per ogni comando c'è il suo apposito manuale.

 

Fonti:
- Immagini dell'autore;

 

Dottore in Informatica. Da sempre appassionato di Linux, reti informatiche, sicurezza e, in modo amatoriale, all'elettronica. Il mio intento è quello di trasmettere le mie conoscenze ad altri appassionati.

Lascia un commento