Orientarsi sulla riga di comando
Modulo 1: Il Suo primo server · Tempo di lettura: 11 minuti
Obiettivo della lezione: Dopo questa lezione saprà orientarsi su un server Linux: spostarsi tra le cartelle, leggere e modificare file, vedere quanto spazio su disco e quanta memoria sono liberi e cercare da sé l'aiuto per un comando.
Concetti chiave: shell, prompt, cartella e percorso, percorso assoluto e relativo, /etc, /var/log, /home, ls -l, cd, cat, less, nano, man, --help, completamento con Tab, uname, df, free, uptime, pipe, grep
La shell e il prompt
Dopo il login, Lei comunica con la shell: il programma che legge ed esegue i Suoi comandi. Su Debian e Ubuntu di solito è bash. A sinistra del cursore si trova il prompt:
anna@web1:~$
root@web1:~#Il prompt dice tre cose: chi è Lei (anna o root), su quale server si trova (web1) e in quale cartella (~ è la Sua cartella home). L'ultimo carattere è importante: $ indica un utente normale, # indica root. Se vede #, ogni comando viene eseguito con tutti i permessi. Lì digiti con calma.
Cartelle e percorsi
Tutto su Linux è appeso a un unico albero che parte da / (la cartella radice, da non confondere con l'utente root). Alcune cartelle le incontrerà spesso in questo corso:
| Cartella | Che cosa contiene |
|---|---|
/etc | Configurazione: SSH (/etc/ssh), server web (/etc/nginx), utenti (/etc/passwd) |
/var/log | File di log (oltre al journal, lezione 6.2) |
/var/lib | Dati dei programmi, per esempio database e Docker |
/home | Cartelle home degli utenti normali, come /home/anna |
/root | Cartella home di root |
/usr | Programmi e librerie installati |
/tmp | File temporanei, viene ripulita |
/srv o /var/www | Posizione abituale per siti web e servizi |
Un percorso assoluto parte da /, per esempio /etc/ssh/sshd_config. Un percorso relativo parte dal punto in cui si trova ora: se è in /etc, ssh/sshd_config indica lo stesso file. .. è la cartella superiore, . la cartella corrente.
anna@web1:~$ pwd
/home/anna
anna@web1:~$ cd /etc/ssh
anna@web1:/etc/ssh$ ls
moduli ssh_config ssh_config.d sshd_config sshd_config.d ssh_host_ed25519_key ssh_host_ed25519_key.pub ...
anna@web1:/etc/ssh$ cd ..
anna@web1:/etc$ cd
anna@web1:~$cd senza nulla dopo La riporta nella Sua cartella home.
Visualizzare i file
ls -l mostra più dei soli nomi:
anna@web1:/etc/ssh$ ls -l sshd_config ssh_host_ed25519_key ssh_host_ed25519_key.pub
-rw-r--r-- 1 root root 3248 Aug 12 10:01 sshd_config
-rw------- 1 root root 399 Nov 2 14:20 ssh_host_ed25519_key
-rw-r--r-- 1 root root 91 Nov 2 14:20 ssh_host_ed25519_key.pubDa sinistra a destra: i permessi, il numero di collegamenti, proprietario, gruppo, dimensione in byte, data e nome. Noti la differenza: la host key privata (-rw-------) può leggerla solo root, quella pubblica (-rw-r--r--) chiunque. Nella lezione 3.1 imparerà a leggere con precisione questi permessi. ls -la mostra anche i file nascosti: nomi che iniziano con un punto, come .ssh.
Per leggere il contenuto:
cat bestand: l'intero file in una volta, comodo per i file brevi;less bestand: scorrere con le frecce e la barra spaziatrice, cercare con/woord, uscire conq;head -n 20 bestandetail -n 20 bestand: le prime o le ultime righe;tail -fcontinua a seguire il file quando si aggiungono righe.
Modificare un file con nano
La configurazione si modifica in un editor di testo. nano è il più semplice:
root@web1:~# nano /etc/hostsIn basso compaiono le scorciatoie; ^ significa Ctrl. Per salvare si usa Ctrl+O e Invio, per uscire Ctrl+X, per cercare Ctrl+W. Chi lavora già con vim può usarlo; su un'installazione minima vim non è sempre disponibile in versione completa.
Tre abitudini che in seguito Le risparmieranno molti guai:
- Faccia prima una copia:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak. - Verifichi la configurazione prima di riavviare un servizio. Molti programmi hanno un comando apposito:
sshd -t,nginx -t(lezioni 2.2 e 7.2). - Cambi una cosa alla volta, così sa che cosa ha causato un errore.
Come sta il Suo server?
Alcuni comandi che userà in ogni situazione:
anna@web1:~$ uname -a
Linux web1 6.12.0-... #1 SMP ... x86_64 GNU/Linux
anna@web1:~$ uptime
10:12:44 up 3 days, 2:10, 1 user, load average: 0.08, 0.05, 0.01
anna@web1:~$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 40G 3.1G 35G 9% /
anna@web1:~$ free -h
total used free shared buff/cache available
Mem: 3.8Gi 412Mi 2.9Gi 1.0Mi 720Mi 3.4Gi
Swap: 0B 0B 0Buname -a: quale kernel è in esecuzione.uptime: da quanto tempo il server è acceso e il load average su 1, 5 e 15 minuti. In linea di massima: un carico che resta a lungo sopra il numero di core del processore significa che qualcosa resta in attesa.df -h: spazio libero su disco (-hsta per "human readable", con G e M). Un disco pieno è una delle cause più frequenti di un server che si ferma "all'improvviso".free -h: memoria. Guardi la colonnaavailable, nonfree: Linux usa la memoria libera come cache (buff/cache) e la restituisce quando un programma ne ha bisogno.
E la Sua rete, dalla lezione 1.2: ip -brief address.
Trovare aiuto
Non deve ricordare tutte le opzioni. Deve però sapere dove trovarle:
man sshapre il manuale (manual page) di un comando. Si scorre come conless, si cerca con/.man sshd_configdescrive ogni parola chiave configurabile in quel file.ls --helpmostra, per la maggior parte dei comandi, un breve elenco di opzioni.- Il tasto Tab completa i nomi di comandi e file. Premendo Tab due volte vengono mostrate le possibilità. Questo evita errori di battitura nei percorsi lunghi.
- La freccia in su richiama i comandi precedenti;
historyli mostra tutti.
Su un'installazione minima a volte i manuali mancano. Su Debian e Ubuntu li installa con apt install man-db (modulo 4).
Pipe e grep
I comandi si possono concatenare con una pipe (|): l'output di uno diventa l'input del successivo. grep filtra le righe che contengono una parola:
anna@web1:~$ grep PasswordAuthentication /etc/ssh/sshd_config
#PasswordAuthentication yes
anna@web1:~$ ls -l /etc | lessLe righe che iniziano con # sono commenti: non hanno alcun effetto e spesso mostrano il valore predefinito. Nella lezione 2.2 vedrà perché con SSH questo può creare confusione.
Errori frequenti
- Incollare senza leggere. I comandi trovati su internet fanno esattamente ciò che c'è scritto, anche se è diverso da quanto promette il titolo dell'articolo. Legga ogni comando prima di eseguirlo, soprattutto se è root.
rmnon ha un cestino. Ciò che è cancellato è perso. Faccia molta attenzione conrm -r(una cartella con tutto il suo contenuto) e con i caratteri jolly come*.- Le maiuscole contano.
/etc/SSHnon esiste;/etc/sshsì. - Gli spazi nei percorsi vanno messi tra virgolette:
cat "/srv/mijn site/index.html". Meglio ancora: su un server non usi spazi nei nomi.
Riepilogo
- Il prompt dice chi è Lei, su quale server si trova e dove;
#indica root. - La configurazione si trova in
/etc, i log in/var/log, i dati dei programmi in/var/lib, le cartelle home in/home. - Legga con
cat,less,headetail; modifichi connano, dopo aver fatto una copia, e verifichi la configurazione prima di riavviare. df -h,free -h,uptimeeip -brief addressmostrano come sta il Suo server.- L'aiuto si trova in
mane--help; Tab completa; con|egrepfiltra l'output.
Quiz
Esercizio
Esercizio O1.4: Conoscere il Suo server. Esegua i comandi della lezione sul Suo server e compili: distribuzione e versione, kernel, spazio libero su disco, memoria disponibile, carico, IPv4 e IPv6, e quali file in /etc/ssh possono essere letti solo da root. Poi risponda a due domande su ciò che ha visto.
Esercizio O1.4: Conoscere il Suo server
Questo esercizio lo svolge da sé; nessuno lo verifica. Spunti ciò che ha fatto e segni l'esercizio come completato.
available conta anche la memoria cache che Linux rilascia. Il file .pub è la parte pubblica che ogni client vede; il file senza .pub è segreto (600, root), perché chi lo possiede può spacciarsi per il Suo server.
Le Sue spunte e note restano solo in questo browser; non le inviamo da nessuna parte. Se ha effettuato l'accesso, conserviamo in I miei corsi solo il fatto che ha svolto l'esercizio.
Per approfondire
- Aumentare lo spazio su disco del suo VPS
- Accesso SSH e il Terminale in DirectAdmin: quali pacchetti e come effettuare l'accesso
- Debian Reference, capitolo 1 (tutorial sulla riga di comando): https://www.debian.org/doc/manuals/debian-reference/ch01.en.html
- Filesystem Hierarchy Standard 3.0: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
