Indice
In questa sezione vengono descritti suggerimenti base per configurare e gestire il sistema, per lo più dalla console.
screen(1) è uno strumento molto utile per permettere alle persone di accedere a siti remoti attraverso una connessione non affidabile o intermittente, dato che supporta connessioni interrotte.
Tabella 9.1. Elenco di programmi che supportano connessioni di rete interrotte
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
screen
|
V:195, I:283 | 995 | multiplexer per terminale con emulazione di terminale VT100/ANSI |
tmux
|
V:31, I:118 | 681 | alternativa per multiplexer per terminale (usare invece "Control-B") |
screen(1) non permette solamente il funzionamento di una finestra di terminale con processi multipli, ma permette anche ai processi in shell remote di sopravvivere a connessioni interrotte. Quello che segue è un tipico scenario di uso di screen(1).
Si fa il login in una macchina remota.
Si avvia screen
in una console singola.
Si eseguono svariati programmi in finestre screen
create
con ^A c
("Control-A" seguito da "c").
Ci si sposta tra le svariate finestre screen
create con
^A n
("Control-A" seguito da "n").
All'improvviso si ha la necessità di lasciare il terminale, ma non si vuole perdere il lavoro attivo e si vuole mantenere la connessione.
Si può scollegare la sessione
screen
in uno qualsiasi dei metodi seguenti.
Scollegare brutalmente la connessione di rete
Digitare ^A d
("Control-A" seguito da "d") e fare
manualmente il log out dalla connessione remota.
Digitare ^A DD
("Control-A" seguito da "DD") per far si
che screen
si scolleghi e faccia il log out.
Ci si ricollega alla stessa macchina remota (anche da un terminale diverso).
Si avvia screen
con "screen -r
".
screen
magicamente ricollega tutte le finestre
screen
precedente con tutti i programmi in esecuzione
attivi.
Suggerimento | |
---|---|
Con |
In una sessione screen
tutto l'input da tastiera viene
inviato alla finestra attuale, tranne per le combinazioni di tasti per i
comandi. Tutte le combinazioni di tasti per i comandi di
screen
vengono inserite digitando ^A
("Control-A") più un singolo tasto [più eventuali parametri]. Ecco alcune
combinazioni di tasti importanti da ricordare.
Tabella 9.2. Elenco di associazioni di tasti per screen
azione associata | significato |
---|---|
^A ?
|
mostra una schermata di aiuto (visualizza le associazioni di tasti) |
^A c
|
crea una nuova finestra e si sposta in essa |
^A n
|
va alla finestra successiva |
^A p
|
va alla finestra precedente |
^A 0
|
va alla finestra numero 0 |
^A 1
|
va alla finestra numero 1 |
^A w
|
mostra l'elenco delle finestre |
^A a
|
invia Ctrl-A alla finestra attuale come input da tastiera |
^A h
|
scrive una copia della schermata della finestra attuale in un file |
^A H
|
inizia/termina la registrazione dell'attività della finestra attuale in un file |
^A ^X
|
blocca il terminale (protetto da password) |
^A d
|
scollega la sessione screen dal terminale |
^A DD
|
scollega la sessione di screen e fa il log out |
Vedere screen(1) per i dettagli.
Molti programmi registrano le proprie attività nella directory
"/var/log/
".
Il demone del registro di sistema: rsyslogd(8)
Vedere Sezione 3.2.5, «I messaggi di sistema» e Sezione 3.2.4, «I messaggi del kernel».
Quelli che seguono sono alcuni analizzatori di registro degni di nota
("~Gsecurity::log-analyzer
" in
aptitude(8)).
Tabella 9.3. Elenco di analizzatori del registro di sistema
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
logwatch
|
V:17, I:19 | 2251 | analizzatore di registro scritto in Perl con un bell'output |
fail2ban
|
V:103, I:114 | 1735 | strumento per interdire IP che causano errori di autenticazione multipli |
analog
|
V:4, I:123 | 3529 | analizzatore del registro di server web |
awstats
|
V:11, I:17 | 6799 | analizzatore potente e ricco di funzionalità per registro di server web |
sarg
|
V:4, I:4 | 429 | generatore di rapporti sull'analisi di squid |
pflogsumm
|
V:1, I:4 | 111 | strumento per riassunti delle voci di registro di Postfix |
syslog-summary
|
V:0, I:3 | 30 | riassume i contenuti di un file di registro di sistema |
fwlogwatch
|
V:0, I:0 | 474 | analizzatore del registro del firewall |
squidview
|
V:0, I:1 | 189 | monitora e analizza i file access.log di squid |
swatch
|
V:0, I:0 | 101 | visualizzatore di file di registro con corrispondenze con espressioni regolari, evidenziazione ed eventi |
crm114
|
V:0, I:0 | 1119 | Controllable Regex Mutilator e filtro per spam (CRM114) |
icmpinfo
|
V:0, I:0 | 39 | interpreta i messaggi ICMP |
Nota | |
---|---|
CRM114 fornisce un'infrastruttura basata su un linguaggio per scrivere filtri fuzzy con la libreria per espressioni regolari TRE. Il suo utilizzo più comune è come filtro per la posta spazzatura, ma può anche essere usato come analizzatore di registro. |
Il semplice uso di script(1) (vedere Sezione 1.4.9, «Registrare le attività della shell») per registrare l'attività della shell produce un file con caratteri di controllo. Ciò può essere evitato usando col(1) nel modo seguente.
$ script Script è avviato, il file è typescript
Fare tutto quello che si vuole … e poi premere Ctrl-D
per
uscire da script
.
$ col -bx <typescript >filepulito $ vim filepulito
Se script
non è disponibile (per esempio, durante il
processo di avvio in initramfs), si può usare invece il comando seguente.
$ sh -i 2>&1 | tee typescript
Suggerimento | |
---|---|
Alcuni |
Suggerimento | |
---|---|
Si può usare
screen(1)
con " |
Suggerimento | |
---|---|
È possibile usare
emacs(1)
con " |
Sebbene gli strumenti di paginazione, come more(1) e less(1) (vedere Sezione 1.4.5, «Il paginatore») e gli strumenti personalizzati per l'evidenziazione e la formattazione (vedere Sezione 11.1.8, «Evidenziare e formattare dati in puro testo») possano mostrare il testo in un modo piacevole, gli editor generici (vedere Sezione 1.4.6, «L'editor di testo») sono più versatili e personalizzabili.
Suggerimento | |
---|---|
Per
vim(1)
e la sua modalità per paginatore, ossia
view(1),
" |
Il formato predefinito per la visualizzazione delle date e degli orari per
il comando "ls -l
" dipende dalla localizzazione (vedere Sezione 1.2.6, «Orari» per il valore). Si fa dapprima riferimento alla
variabile "$LANG
" che può essere scavalcata dalla
variabile "$LC_TIME
".
Il formato effettivo di visualizzazione predefinito per ciascuna
localizzazione dipende dalla versione della libreria C (il pacchetto
libc6
) usata. Differenti rilasci di Debian hanno cioè
valori predefiniti diversi.
Se si desidera veramente personalizzare questo formato di visualizzazione
delle date e degli orari, oltre a ciò che è fatto con la localizzazione, si deve impostare il valore dello stile degli orari con l'opzione
"--time-style
" o con il valore di
"$TIME_STYLE
" (vedere
ls(1),
date(1),
"info coreutils 'ls invocation'
").
Tabella 9.4. Esempi di visualizzazione di date e orari per il comando "ls
-l
" per wheezy
valore dello stile per gli orari | localizzazione | visualizzazione di data e ora |
---|---|---|
iso
|
qualsiasi |
01-19 00:15
|
long-iso
|
qualsiasi |
2009-01-19 00:15
|
full-iso
|
qualsiasi |
2009-01-19 00:15:16.000000000 +0900
|
locale
|
C
|
Jan 19 00:15
|
locale
|
en_US.UTF-8
|
Jan 19 00:15
|
locale
|
es_ES.UTF-8
|
ene 19 00:15
|
+%d.%m.%y %H:%M
|
qualsiasi |
19.01.09 00:15
|
+%d.%b.%y %H:%M
|
C o en_US.UTF-8
|
19.Jan.09 00:15
|
+%d.%b.%y %H:%M
|
es_ES.UTF-8
|
19.ene.09 00:15
|
Suggerimento | |
---|---|
Si può evitare di digitare lunghe opzioni nella riga di comando usando
alias, per esempio " |
Suggerimento | |
---|---|
Per i formati iso viene seguito lo standard ISO 8601. |
L'output inviato a schermo dalla shell nella maggior parte dei terminali
moderni può essere colorato usando codici di
escape ANSI (vedere
"/usr/share/doc/xterm/ctlseqs.txt.gz
").
Per esempio, provare a fare quanto segue.
$ RED=$(printf "\x1b[31m") $ NORMAL=$(printf "\x1b[0m") $ REVERSE=$(printf "\x1b[7m") $ echo "${RED}TESTO-ROSSO${NORMAL} ${REVERSE}TESTO-IN-NEGATIVO${NORMAL}"
I comandi colorati sono comodi per ispezionare il loro output in modo
interattivo. Nel mio file "~/.bashrc
" io includo quanto
segue.
if [ "$TERM" != "dumb" ]; then eval "`dircolors -b`" alias ls='ls --color=always' alias ll='ls --color=always -l' alias la='ls --color=always -A' alias less='less -R' alias ls='ls --color=always' alias grep='grep --color=always' alias egrep='egrep --color=always' alias fgrep='fgrep --color=always' alias zgrep='zgrep --color=always' else alias ll='ls -l' alias la='ls -A' fi
Questo uso degli alias limita gli effetti colorati all'uso interattivo dei
comandi. Ha il vantaggio, rispetto all'esportazione della variabile
d'ambiente "export GREP_OPTIONS='--color=auto'
", che i
colori possono essere visti in programmi di paginazione come
less(1).
Se si desidera eliminare i colori quando si invia l'output con una pipe ad
altri comandi, usare nell'esempio precedente per
"~/.bashrc
" "--color=auto
".
Suggerimento | |
---|---|
Questi alias di colorazione possono essere disattivati nell'ambiente
interattivo invocando la shell con il comando " |
È possibile registrare le attività dell'editor per ripetere azioni complesse.
Per vim fare nel modo seguente.
"qa
": avviare la registrazione dei caratteri digitati in
un registro chiamato "a
".
… attività nell'editor
"q
": terminare la registrazione dei caratteri digitati.
"@a
": eseguire il contenuto del registro
"a
".
Per Emacs fare nel modo seguente.
"C-x (
": iniziare la definizione di una macro da
tastiera.
… attività nell'editor
"C-x )
": terminare la definizione di una macro da
tastiera.
"C-x e
": eseguire la definizione di una macro da
tastiera.
Ci sono alcuni modi per registrare l'immagine grafica di un'applicazione X,
incluso il display di un xterm
.
Tabella 9.5. Elenco di strumenti di manipolazione di immagini grafiche
pacchetto | popcon | dimensione | comando |
---|---|---|---|
xbase-clients
|
I:38 | 46 | xwd(1) |
gimp
|
V:85, I:489 | 19016 | menu della GUI |
imagemagick
|
V:43, I:549 | 209 | import(1) |
scrot
|
V:8, I:92 | 54 | scrot(1) |
Esistono strumenti specializzati per registrare i cambiamenti nei file di configurazione con l'aiuto del sistema DVCS.
Tabella 9.6. Elenco di pacchetti per registrare la cronologia della configurazione in VCS
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
etckeeper
|
V:26, I:31 | 158 | archivia i file di configurazione ed i loro metadati con Git (predefinito), Mercurial o Bazaar (nuovo) |
changetrack
|
V:0, I:0 | 63 | archivia i file di configurazione con RCS (vecchio) |
Io raccomando l'uso del pacchetto etckeeper
con
git(1)
che mette l'intera directory "/etc
" sotto il controllo di
VCS. La sua guida di installazione ed il suo tutorial si trovano in
"/usr/share/doc/etckeeper/README.gz
".
Fondamentalmente, l'esecuzione di "sudo etckeeper init
"
inizializza il repository git per "/etc
", esattamente
come nel procedimento spiegato in Sezione 10.6.5, «Git per registrare la cronologia della configurazione» ma con speciali script
attivati da eventi per impostazioni più accurate.
Quando si cambia la configurazione, si può usare normalmente git(1) per registrare i cambiamenti. Esso registra automaticamente i cambiamenti in modo comodo anche ogni volta che vengono eseguiti i comandi di gestione dei pacchetti.
Suggerimento | |
---|---|
Si può sfogliare la cronologia dei cambiamenti di " |
Le attività dei programmi possono essere monitorare e controllate usando strumenti specializzati.
Tabella 9.7. Elenco di strumenti per monitorare e controllare l'attività dei programmi.
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
coreutils
|
V:888, I:999 | 15719 | nice(1): esegue un programma con priorità di schedulazione modificata |
bsdutils
|
V:866, I:999 | 293 | renice(1): modifica la priorità di schedulazione di un processo in esecuzione |
procps
|
V:793, I:999 | 729 |
utilità per il file system "/proc ":
ps(1),
top(1),
kill(1),
watch(1),
…
|
psmisc
|
V:473, I:895 | 637 |
utilità per il file system "/proc ":
killall(1),
fuser(1),
peekfd(1),
pstree(1)
|
time
|
V:22, I:428 | 82 | time(1): esegue un programma per riportare l'uso delle risorse di sistema in funzione del tempo |
sysstat
|
V:144, I:165 | 1684 | sar(1), iostat(1), mpstat(1), …: strumenti per le prestazioni di sistema per Linux |
isag
|
V:0, I:4 | 111 | Interactive System Activity Grapher (tracciamento interattivo dell'attivita) per sysstat |
lsof
|
V:464, I:946 | 454 | lsof(8):
elenca, usando l'opzione "-p ", i file aperti da un
processo in esecuzione
|
strace
|
V:19, I:159 | 2051 | strace(1): traccia le chiamate e i segnali di sistema |
ltrace
|
V:1, I:21 | 363 | ltrace(1): traccia le chiamate di libreria |
xtrace
|
V:0, I:0 | 352 | xtrace(1): traccia la comunicazione tra client e server X11 |
powertop
|
V:6, I:231 | 604 | powertop(1): informazioni sull'uso dell'alimentazione da parte del sistema |
cron
|
V:878, I:997 | 263 | esegue processi dal demone cron(8) sullo sfondo in base ad una pianificazione |
anacron
|
V:447, I:521 | 99 | pianificatore di comandi in stile cron, per i sistemi che non sono in esecuzione 24 ore al giorno |
at
|
V:260, I:453 | 157 | at(1) o batch(1): esegue un compito ad un orario specificato o quando il carico di sistema scende sotto un certo livello |
Suggerimento | |
---|---|
Il pacchetto |
Mostrare il tempo usato dal processo invocato da un comando.
# time un_qualche_comando >/dev/null real 0m0.035s # tempo di orologio (tempo reale trascorso) user 0m0.000s # tempo in modalità utente sys 0m0.020s # tempo in modalità kernel
Per controllare la priorità di schedulazione di un processo è usato il valore di nice.
Tabella 9.8. Elenco di valori di nice per la priorità di schedulazione
valore di nice | priorità di schedulazione |
---|---|
19 | processo dalla priorità più bassa possibile (nice - gentile) |
0 | processo a priorità molto alta per l'utente |
-20 | processo a priorità molto alta per root (not-nice - non gentile) |
# nice -19 top # molto gentile # nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # molto veloce
A volte un valore molto alto di nice fa più male che bene al sistema; usare quindi questo comando con molta cautela.
Il comando ps(1) in un sistema Debian supporta sia le funzionalità BSD sia quelle SystemV ed aiuta ad identificare l'attività dei processi in modo statico.
Tabella 9.9. Elenco degli stili per il comando ps
stile | comando tipico | funzione |
---|---|---|
BSD |
ps aux
|
mostra %CPU %MEM |
System V |
ps -efH
|
mostra PPID |
È possibile uccidere i processi figli zombie (defunti) tramite l'ID di
processo del genitore identificato dal campo "PPID
".
Il comando pstree(1) mostra un albero dei processi.
top(1) in sistemi Debian ha molte funzionalità e aiuta ad identificare in modo dinamico i processi che si stanno comportando in modo strano.
È un programma interattivo a tutto schermo. Si possono ottenere le informazioni di aiuto sul suo uso premendo il tasto «h» e uscire premendo il tasto «q».
È possibile elencare tutti i file aperti da un processo attraverso il suo PID (Identificativo di processo), ad esempio 1, con il comando seguente.
$ sudo lsof -p 1
Di solito il processo con PID=1 è il programma init
.
Si può tenere traccia dell'attività di un programma con strace(1), ltrace(1) o xtrace(1) rispettivamente per quello che riguarda chiamate e segnali di sistema, chiamate di libreria o comunicazioni tra client e server X11.
Si può tenere traccia delle chiamate di sistema del comando
ls
nel modo seguente.
$ sudo strace ls
Usando
fuser(1)
è anche possibile identificare i processi in base ai file usando, ad esempio
per "/var/log/mail.log
" con il comando seguente.
$ sudo fuser -v /var/log/mail.log USER PID ACCESS COMMAND /var/log/mail.log: root 2946 F.... rsyslogd
Come si vede il file "/var/log/mail.log
" è aperto in
scrittura dal comando
rsyslogd(8).
Usando
fuser(1)
si può anche identificare i processi in base ai socket, ad esempio per
"smtp/tcp
" con il comando seguente.
$ sudo fuser -v smtp/tcp USER PID ACCESS COMMAND smtp/tcp: Debian-exim 3379 F.... exim4
Ora si può vedere che sul sistema è in esecuzione exim4(8) per gestire le connessioni TCP alla porta SMTP (25).
watch(1) esegue un programma in modo ripetitivo ad intervalli regolari mostrando il suo output sullo schermo.
$ watch w
Questo comando mostra chi è attualmente connesso al sistema in modo aggiornato ogni 2 secondi.
Ci sono svariati modi di ripetere uno stesso comando su diversi file che
rispondono ad una qualche condizione, ad esempio che corrispondono al
modello glob "*.ext
".
Metodo del ciclo for nella shell (vedere Sezione 12.1.4, «Cicli di shell»):
for x in *.ext; do if [ -f "$x"]; then comando "$x" ; fi; done
Combinazione di find(1) e xargs(1):
find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 comando
find(1)
con l'opzione "-exec
" con un comando:
find . -type f -maxdepth 1 -name '*.ext' -exec comando '{}' \;
find(1)
con l'opzione "-exec
" con un breve script di shell:
find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "comando '{}' && echo 'esecuzione con successo'" \;
Gli esempi precedenti sono stati scritti per assicurare la gestione appropriata di nomi di file particolari come quelli contenenti spazi. Per usi più avanzati di find(1), vedere Sezione 10.1.5, «Esempi di invocazione per la selezione di file».
Perl l'interfaccia a riga di comando
(CLI), viene eseguito il primo programma con un nome corrispondente
trovato nelle directory specificate nella variabile d'ambiente
$PATH
. Vedere Sezione 1.5.3, «La variabile "$PATH
"».
Per l'interfaccia utente grafica
(GUI) conforme agli standard di freedesktop.org i file
*.desktop
nella directory
/usr/share/applications/
forniscono gli attributi
necessari per la visualizzazione di ogni programma nel menu della
GUI. Vedere Sezione 7.2.2, «Menu Freedesktop.org».
Per esempio, il file chromium.desktop
definisce gli
attributi per il «Browser Web Chromium» come «Name» per il nome di
programma, «Exec» per il percorso e gli argomenti di esecuzione del
programma, «Icon» per l'icona usata, ecc. (vedere laSpecifica per le voci per
desktop), nel modo seguente:
[Desktop Entry] Version=1.0 Name=Chromium Web Browser GenericName=Web Browser Comment=Access the Internet Comment[it]=Esplorare il Web Exec=/usr/bin/chromium %U Terminal=false X-MultipleArgs=false Type=Application Icon=chromium Categories=Network;WebBrowser; MimeType=text/html;text/xml;application/xhtml_xml;x-scheme-handler/http;x-scheme-handler/https; StartupWMClass=Chromium StartupNotify=true
Questa è una descrizione molto semplificata. I file
*.desktop
vengono analizzati nel modo seguente.
L'ambiente desktop imposta le variabili d'ambiente
$XDG_DATA_HOME
e $XDG_DATA_DIR
. Per
esempio, in GNOME 3:
$XDG_DATA_HOME
non è impostata. (Viene usato il valore
predefinito: $HOME/.local/share
.)
$XDG_DATA_DIRS
è impostata a
/usr/share/gnome:/usr/local/share/:/usr/share/
.
Perciò le directory base (vedere la XDG Base Directory
Specification) e le directory applications
sono
le seguenti.
$HOME/.local/share/
→
$HOME/.local/share/applications/
/usr/share/gnome/
→
/usr/share/gnome/applications/
/usr/local/share/
→
/usr/local/share/applications/
/usr/share/
→ /usr/share/applications/
I file *.desktop
vengono analizzati all'interno di queste
directory applications
in tale ordine.
Suggerimento | |
---|---|
Una voce del menu GUI personalizzata dell'utente può essere creata
aggiungendo un file |
Suggerimento | |
---|---|
In modo analogo, se viene creato un file |
Suggerimento | |
---|---|
In modo simile, se viene creato un file |
Alcuni programmi avviano automaticamente altri programmi. Quelli che seguono sono alcuni punti fondamentali per la personalizzazione di questo processo.
Menu di configurazione delle applicazioni:
Desktop GNOME3: "Impostazioni di sistema" → "System" → "Dettagli" → "Applicazioni predefinite"
Desktop KDE: "K" → "Centro di controllo" → "Componenti di KDE" → "Scelta componenti"
Browser Iceweasel: "Modifica" → "Preferenze" → "Applicazioni"
mc(1):
"/etc/mc/mc.ext
"
Variabili d'ambiente quali "$BROWSER
",
"$EDITOR
", "$VISUAL
" e
"$PAGER
" (vedere
eviron(7))
Il sistema
update-alternatives(1)
per i programmi come "editor
", "view
",
"x-www-browser
", "gnome-www-browser
" e
"www-browser
" (vedere Sezione 1.4.7, «Impostare un editor di testi predefinito»)
Il contenuto dei file "~/.mailcap
" e
"/etc/mailcap
" che associano i tipi MIME con programmi (vedere
mailcap(5))
Il contenuto dei file "~/.mime.types
" e
"/etc/mime.types
" che associano le estensioni dei nomi di
file con tipi MIME (vedere
run-mailcap(1))
Suggerimento | |
---|---|
update-mime(8)
aggiorna il file " |
Suggerimento | |
---|---|
Il pacchetto |
Suggerimento | |
---|---|
Per eseguire un'applicazione per console, come |
# cat /usr/local/bin/mutt-term <<EOF #!/bin/sh gnome-terminal -e "mutt \$@" EOF chmod 755 /usr/local/bin/mutt-term
Per uccidere un processo (o inviare ad esso un segnale) in base al suo ID (identificativo) usare kill(1).
Per fare la stessa cosa ma in base al nome del comando del processo o ad altri attributi, usare killall(1) o pkill(1).
Tabella 9.10. Elenco dei segnali usati comunemente con il comando kill
valore del segnale | nome del segnale | funzione |
---|---|---|
1 | HUP | riavvia il demone |
15 | TERM | normale uccisione |
9 | KILL | uccisione forzata |
Per pianificare un compito da eseguire una volta soltanto eseguire il comando at(1) nel modo seguente.
$ echo 'comando -argomenti'| at 3:40 monday
Per pianificare compiti in modo regolare usare cron(8). Vedere crontab(1) e crontab(5).
Si può pianificare l'esecuzione di processi come utente normale, ad esempio
l'utente pippo
, creando un file
crontab(5)
come "/var/spool/cron/crontabs/pippo
" con il comando
"crontab -e
".
Quello seguente è un esempio di file crontab(5).
# usare /bin/sh per eseguire i comandi, qualsiasi cosa dica /etc/passwd SHELL=/bin/sh # inviare per posta l'output a paolo, chiunque sia il proprietario di questo crontab MAILTO=paolo # Min Ora GiornoMese Mese GiornoSett comando (Giorni... sono combinati con OR) # eseguito alle 00:05, ogni giorno 5 0 * * * $HOME/bin/compito.quotidiano >> $HOME/tmp/output 2>&1 # eseguito alle 14:15 il primo giorno di ogni mese -- output inviato a paolo 15 14 1 * * $HOME/bin/mensile # eseguito alle 22:00 nei giorni infrasettimanali(1-5), disturbare Gianni. % per a capo, ultimo % per cc: 0 22 * * 1-5 mail -s "Sono le 10pm" giannie%Gianni,%%dove sono i tuoi ragazzi?%.%% 23 */2 2 * echo "eseguito 23 minuti dopo le 0am, 2am, 4am ..., il giorno 1 Feb " 5 4 * * sun echo "eseguito alle 04:05 ogni domenica" # eseguito alle 03:40 il primo lunedi' di ogni mese 40 3 1-7 * * [ "$(date +%a)" == "Mon" ] && comando -opzioni
Suggerimento | |
---|---|
Per i sistemi non in esecuzione in maniera continuata, installare il
pacchetto |
Suggerimento | |
---|---|
Gli script con compiti pianificati di amministrazione del sistema possono
essere eseguiti periodicamente dall'account di root, ponendoli in
" |
L'opzione "Magic SysRq key" (tasto R Sist), di compilazione del kernel, che è ora lo standard per i kernel Debian, fornisce una garanzia contro i malfunzionamenti del sistema. Premendo Alt-R Sist seguito da uno dei tasti seguenti, si ottiene magicamente di recuperare il controllo del sistema.
Tabella 9.11. Elenco di tasti per il comando SAK
tasto premuto dopo Alt-R_Sist | descrizione dell'azione |
---|---|
r
|
ripristina la tastiera dalla modalità raw dopo un crash di X |
0
|
cambia il livello di visualizzazione del registro sulla console a 0 per ridurre i messaggi di errore |
k
|
uccide (kill) tutti i processi nella console virtuale attuale |
e
|
invia un segnale SIGTERM a tutti i processi, tranne init(8) |
i
|
invia un segnale SIGKILL a tutti i processi, tranne init(8) |
s
|
sincronizza tutti i file system montati per evitare corruzione di dati |
u
|
monta nuovamente tutti i file system in sola letturra (umount) |
b
|
riavvia (reboot) il sistema senza sincronizzare o smontare i file system |
Suggerimento | |
---|---|
Leggere le pagine di manuale signal(7), kill(1) e sync(1) per capire la descrizione soprastante. |
La combinazione di "Alt-SysRq s", "Alt-SysRq u" e "Alt-SysRq r" è buona per uscire da situazioni veramente brutte e ottenere un accesso utilizzabile alla tastiera senza fermare il sistema.
Vedere
"/usr/share/doc/linux-doc-3.*/Documentation/sysrq.txt.gz
".
Attenzione | |
---|---|
La funzione Alt-R_Sist può essere considerata un rischio per la sicurezza
dato che permette agli utenti l'accesso a funzioni con privilegi di
root. Per disabilitale la funzione Alt-R_Sist mettere " |
Suggerimento | |
---|---|
Si può usare la funzione Alt-R_Sist da un terminale SSH, ecc. scrivendo su
" |
Si può controllare chi è connesso al sistema nei modi seguenti.
who(1) mostra chi ha fatto il login ed è connesso.
w(1) mostra l'elenco di chi ha fatto il login ed è connesso e cosa sta facendo.
last(1) mostra l'elenco degli utenti che hanno fatto il login più recentemente.
lastb(1) mostra l'elenco degli utenti che hanno tentato il login non riuscendovi più recentemente.
Suggerimento | |
---|---|
Queste informazioni sugli utenti sono contenute in
" |
Si può mandare un messaggio a tutti gli utenti che sono connessi al sistema con wall(1) nel modo seguente.
$ echo "Arresto pianificato del sistema tra 1 ora" | wall
Per i dispositivi di tipo simil-PCI (AGP, PCI-Express,
CardBus, ExpressCard, ecc.),
lspci(8)
(probabilmente con l'opzione "-nn
") è un buon punto di
partenza per l'identificazione dell'hardware.
In alternativa, si può identificare l'hardware leggendo il contenuto di
"/proc/bus/pci/devices
" o sfogliando l'albero di
directory in "/sys/bus/pci
" (vedere Sezione 1.2.12, «procfs e sysfs»).
Tabella 9.12. Elenco di strumenti per l'identificazione dell'hardware
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
pciutils
|
V:158, I:994 | 1220 | utilità PCI Linux: lspci(8) |
usbutils
|
V:94, I:866 | 312 | utilità Linux USB: lsusb(8) |
pcmciautils
|
V:18, I:30 | 105 | utilità PCMCIA per Linux: pccardctl(8) |
scsitools
|
V:0, I:3 | 365 | raccosta di strumenti per la gestione dell'hardware SCSI:lsscsi(8) |
procinfo
|
V:0, I:15 | 123 |
informazioni sul sistema ottenute da "/proc ":
lsdev(8)
|
lshw
|
V:10, I:89 | 763 | informazioni sulla configurazione hardware: lshw(1) |
discover
|
V:39, I:945 | 90 | sistema di identificazione dell'hardware: discover(8) |
Sebbene nei moderni sistemi desktop con interfaccia grafica, come GNOME e KDE, la maggior parte della configurazione dell'hardware possa essere gestita attraverso strumenti di configurazione con interfaccia grafica da essi forniti, è bene conoscere alcuni metodi di base di configurazione.
Tabella 9.13. Elenco di strumenti di configurazione dell'hardware
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
console-setup
|
V:280, I:951 | 417 | utilità Linux per i tipi di carattere e la mappa di tastiera in console |
x11-xserver-utils
|
V:354, I:575 | 511 | utilità del server X: xset(1), xmodmap(1) |
acpid
|
V:262, I:484 | 146 | demone per gestire eventi inviati dall'ACPI (Advanced Configuration and Power Interface, interfaccia avanzata per configurazione ed energia) |
acpi
|
V:23, I:463 | 45 | utilità per mostrare informazioni sui device ACPI |
sleepd
|
V:0, I:0 | 86 | demone per sospendere un portatile durante l'inattività |
hdparm
|
V:435, I:653 | 255 | ottimizzazione degli accessi al disco fisso (vedere Sezione 9.5.9, «Ottimizzare il disco rigido») |
smartmontools
|
V:127, I:191 | 1846 | controllo e monitoraggio dei sistemi di archiviazione usando S.M.A.R.T. |
setserial
|
V:5, I:10 | 117 | raccolta di strumenti per la gestione delle porte seriali |
memtest86+
|
V:1, I:33 | 2391 | raccolta di strumenti per la gestione di hardware di memoria |
scsitools
|
V:0, I:3 | 365 | raccolta di strumenti per la gestione di hardware SCSI |
setcd
|
V:0, I:1 | 35 | ottimizzazione dell'accesso alle unità CD |
big-cursor
|
I:1 | 27 | puntatori del mouse più grandi per X |
ACPI è un'infrastruttura per il sistema di gestione dell'energia più nuovo di APM
Suggerimento | |
---|---|
La modifica della frequenza della CPU nei sistemi moderni è controllata da
moduli del kernel come |
I comandi seguenti impostano l'ora di sistema e hardware a MM/GG hh:mm, AAAA.
# date MMGGhhmmAAAA # hwclock --utc --systohc # hwclock --show
Nei sistemi Debian, gli orari sono mostrati normalmente come ora locale, ma l'ora di sistema e quella hardware usano di solito l'ora UTC(GMT).
Se l'ora hardware (BIOS) è impostata ad UTC, modificare l'impostazione nel
file "/etc/default/rcS
" ad "UTC=yes
".
Il comando seguente riconfigura il fuso orario utilizzato dal sistema Debian.
# dpkg-reconfigure tzdata
Se si desidera tenere aggiornata l'ora di sistema attraverso la rete, si
consideri l'uso del servizion NTP con pacchetti
come ntp
, ntpdate
e
chrony
.
Suggerimento | |
---|---|
In systemd, usare invece
|
Vedere la documentazione seguente.
Il pacchetto ntp-doc
Suggerimento | |
---|---|
ntptrace(8),
nel pacchetto |
Ci sono diversi componenti per configurare le funzionalità della console a caratteri e il sistema ncurses(3).
Il file "/etc/terminfo/*/*
"
(terminfo(5))
La variabile d'ambiente "$TERM
"
(term(7))
setterm(1), stty(1), tic(1) e toe(1)
:(Se, con un xterm
non Debian, la voce
terminfo
per xterm
non funziona,
cambiare il tipo di terminale "$TERM
" da
"xterm
" ad una delle versioni con funzionalità limitate
come "xterm-r6
" quando si fa il login ad un sistema
Debian da remoto. Per ulteriori iedere
"/usr/share/doc/libncurses5/FAQ
" .
I driver di dispositivo per le schede audio per l'attuale Linux sono forniti da ALSA (Advanced Linux Sound Architecture). ALSA fornisce una modalità di emulazione per la compatibilità con il precedente sistema OSS (Open Sound System).
Suggerimento | |
---|---|
Per testare l'altoparlante usare " |
Suggerimento | |
---|---|
Se non si ottiene l'audio, è possibile che l'altroparlante sia connesso ad
un output impostato come muto. I moderni sistemi sonori hanno svariati
output.
alsamixer(1)
nel pacchetto |
I software applicativi possono essere configurati non solo per accedere direttamente a device audio, ma anche per accedervi attraverso un qualche sistema server sonoro standardizzato.
Tabella 9.14. Elenco di pacchetti relativi all'audio
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
alsa-utils
|
V:393, I:519 | 2253 | utilità per configurare ed usare ALSA |
oss-compat
|
V:2, I:35 | 20 |
compatibilità OSS in ALSA per prevenire errori "/dev/dsp not
found "
|
jackd
|
V:3, I:27 | 9 | server JACK (JACK Audio Connection Kit) (bassa latenza) |
libjack0
|
V:0, I:14 | 337 | libreria JACK (JACK Audio Connection Kit) (bassa latenza) |
nas
|
V:0, I:0 | 239 | server NAS (Network Audio System) |
libaudio2
|
I:541 | 161 | libreria NAS (Network Audio System) |
pulseaudio
|
V:387, I:504 | 6411 | server PulseAudio, sostituto per ESD |
libpulse0
|
V:278, I:646 | 968 | libreria client PulseAudio, sostituto per ESD |
libgstreamer1.0-0
|
V:256, I:549 | 5063 | GStreamer: motore audio di GNOME |
libphonon4
|
I:192 | 680 | Phonon: motore audio di KDE |
Normalmente esiste un motore audio comune per ciascun ambiente desktop. Ciascun motore audio usato dalle applicazioni può scegliere di connettersi a diversi server audio.
Per disabilitare il salvaschermo usare i comandi seguenti.
Tabella 9.15. Elenco di comandi per disabilitare il salvaschermo
ambiente | comando |
---|---|
Console Linux |
setterm -powersave off
|
X Window (disabilitare il salvaschermo) |
xset s off
|
X Window (disabilitare DPMS) |
xset -dpms
|
X Window (configurazione tramite GUI del salvaschermo) |
xscreensaver-command -prefs
|
Per disabilitare i bip sonori è sempre possibile disconnettere
l'altoparlante del PC; la rimozione del modulo pcspkr
del
kernel fa stessa cosa per conto dell'utente.
Il comando seguente evita che il programma readline(3) usato da bash(1) emetta suoni bip quando incontra un carattere di allerta (ASCII=7).
$ echo "set bell-style none">> ~/.inputrc
Ci sono 2 risorse disponibile per l'utente per ottenere la situazione dell'uso della memoria.
I messaggi di avvio del kernel nel file "/var/log/dmesg
"
contengono la dimensione esatta della memoria disponibile.
free(1) e top(1) mostrano informazioni sulle risorse di memoria nel sistema mentre è in funzione.
Ecco un esempio.
# grep '\] Memory' /var/log/dmesg [ 0.004000] Memory: 990528k/1016784k available (1975k kernel code, 25868k reserved, 931k data, 296k init) $ free -k total used free shared buffers cached Mem: 997184 976928 20256 0 129592 171932 -/+ buffers/cache: 675404 321780 Swap: 4545576 4 4545572
Ci si potrebbe chiedere perché dmesg dice che ci sono 990 MB liberi e free -k dice che sono liberi 320 MB. Ne mancano più di 600 MB.
Non ci si deve preoccupare della grande dimensione del valore
"used
" (usata) e del piccolo valore di
"free
" (libera) nella riga "Mem:
", ma
si può invece leggere la riga sottostante (con 675404 e 321780 nell'esempio
precedente) e rilassarsi.
Per il mio MacBook con 1GB=1048576k DRAM (il sistema video ne ruba un po'), vedo le informazioni seguenti.
Tabella 9.16. Elenco di dimensioni della memoria riportate
fonte | dimensione |
---|---|
Dimensione totale in dmesg | 1016784k = 1GB - 31792k |
Libera in dmesg | 990528k |
Dimensione totale nella shell | 997184k |
Libera nella shell | 20256k (ma in effetti 321780k) |
Una cattiva manutenzione del sistema può esporlo ad attacchi esterni.
Per verificare la sicurezza e l'integrità del sistema, si dovrebbe iniziare dai punti seguenti.
Il pacchetto debsums
; vedere
debsums(1)
e Sezione 2.5.2, «File "Release" nella directory principale ed autenticità».
Il pacchetto chkrootkit
; vedere
chkrootkit(1).
La famiglia di pacchetti clamav
; vedere
clamscan(1)
e
freshclam(1).
Tabella 9.17. Elenco di strumenti per verificare la sicurezza e l'integrità del sistema
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
logcheck
|
V:10, I:12 | 102 | demone per inviare via posta anomalie nei file di registro di sistema all'amministratore |
debsums
|
V:6, I:40 | 120 | utilità per controllare i file dei pacchetti installati con le somme di controllo MD5 |
chkrootkit
|
V:6, I:26 | 934 | rilevatore di rootkit |
clamav
|
V:14, I:65 | 727 | utilità anti-virus per Unix - interfaccia a riga di comando |
tiger
|
V:3, I:3 | 2485 | riporta vulnerabilità nella sicurezza di sistema |
tripwire
|
V:2, I:3 | 12055 | strumento di controllo dell'integrità di file e directory |
john
|
V:2, I:13 | 449 | strumento di violazione delle password attive |
aide
|
V:2, I:2 | 2063 | AIDE - ambiente avanzato di rilevamento delle intrusioni - binario statico |
integrit
|
V:0, I:0 | 329 | programma di controllo dell'integrità di file |
crack
|
V:0, I:1 | 128 | programma per indovinare password |
Con il piccolo script seguente è possibile controllare la presenza di tipici errori con permessi di scrittura per tutti per i file sbagliati.
# find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)
Attenzione | |
---|---|
Data che il pacchetto |
L'avvio del sistema con un CD live Linux o un CD del debian-installer in modalità ripristino rende semplice la riconfigurazione dell'archiviazione dei dati sul dispositivo di avvio.
L'uso dello spazio su disco può essere valutato con i programmi forniti dai
pacchetti mount
, coreutils
e
xdu
:
mount(8) mostra tutti i file system (= dischi) montati.
df(1) mostra l'uso dello spazio su disco da parte dei file system.
du(1) mostra l'uso dello spazio su disco da parte dell'albero di directory.
Suggerimento | |
---|---|
Si può indirizzare l'output di
du(8)
a
xdu(1x)
per far sì che che produca la sua rappresentazione grafica e interattiva,
usando " |
Per la configurazione del partizionamento dei dischi, benché fdisk(8) sia considerato lo strumento standard, parted(8) merita un po' di attenzione. "Dati di partizionamento del disco", "tabella delle partizioni", "mappa delle partizioni" e "etichetta del disco" sono tutti sinonimi.
La maggior parte dei PC usa il classico schema basato su MBR (Master Boot Record) per contenere i dati sul partizionamento del disco nel primo settore, cioè il settore LBA 0 (512 byte).
Nota | |
---|---|
Alcuni PC più recenti con EFI (Extensible Firmware Interface), compresi i Mac basati su Intel, usano lo schema GPT (GUID Partition Table) per contenere i dati sul partizionamento del disco non nel primo settore. |
Sebbene fdisk(8) sia stato lo strumento standard per il partizionamento dei dischi, parted(8) lo sta sostituendo.
Tabella 9.18. Elenco di pacchetti di gestione delle partizioni dei dischi
pacchetto | popcon | dimensione | GPT | descrizione |
---|---|---|---|---|
util-linux
|
V:891, I:999 | 4327 | Non supportato | utilità di sistema varie inclusi fdisk(8) e cfdisk(8) |
parted
|
V:391, I:579 | 286 | Supportato | programma GNU Parted per il ridimensionamento delle partizioni dei dischi |
gparted
|
V:22, I:144 | 7537 | Supportato |
editor delle partizioni di GNOME basato su libparted
|
gdisk
|
V:71, I:515 | 811 | Supportato | editor delle partizioni per i dischi GPT |
kpartx
|
V:15, I:26 | 89 | Supportato | programma per creare la mappatura a device per le partizioni |
Attenzione | |
---|---|
Sebbene parted(8) sostenga di creare e ridimensionare anche i file system, è più sicuro fare queste cose usando gli strumenti specializzati meglio mantenuti, come mkfs(8) (mkfs.msdos(8), mkfs.ext2(8), mkfs.ext3(8), mkfs.ext4(8), …) e resize2fs(8). |
Nota | |
---|---|
Per poter commutare tra GPT e MBR, è necessario cancellare direttamente i primi pochi
blocchi del contenuto del disco (vedere Sezione 9.7.6, «Pulire il contenuto di file») e usare " |
Anche se la riconfigurazione delle partizioni o l'ordine di attivazione di supporti di archiviazione removibili può portare ad avere nomi diversi per le partizioni, è possibili accedere ad esse in modo coerente. Ciò è utile anche se si hanno più dischi ed il BIOS non assegna loro un nome di dispositivo costante.
mount(8)
con l'opzione "-U
" può montare un device a blocchi usando
l'UUID invece di usare il suo nome di file come
"/dev/sda3
".
Il file "/etc/fstab
" (vedere
fstab(5))
può usare gli UUID.
Anche i bootloader (Sezione 3.1.2, «Stadio 2: il bootloader») possono usare gli UUID.
Suggerimento | |
---|---|
Si può scoprire l'UUID di un device a blocchi speciale con blkid(8). |
Suggerimento | |
---|---|
I nodi di device dei dispositivi come i supporti di archiviazione rimovibili possono essere resi statici usando regole udev, se necessario. Vedere Sezione 3.3, «Il sistema udev». |
LVM2 è un gestore di volumi logici per il kernel Linux. Con LVM2 si possono creare partizioni dei dischi in volumi logici invece che sugli hard disk fisici.
LVM richiede quanto segue.
la gestione di device-mapper nel kernel Linux (predefinita per i kernel Debian)
la libreria per la gestione di device-mapper in spazio utente (pacchetto
libdevmapper*
)
gli strumenti LVM2 in spazio utente (pacchetto lvm2
)
Per iniziare a comprendere LVM2 guardare le pagine di manuale seguenti.
lvm(8): Principi di base del meccanismo LVM2 (elenco di tutti i comandi di LVM2)
lvm.conf(5): File di configurazione per LVM2
lvs(8): Riporta informazioni sui volumi logici
vgs(8): Riporta informazioni sui gruppi di volumi
pvs(8): Riporta informazioni sui volumi fisici
Per il file system ext4, il pacchetto
e2fsprogs
fornisce gli strumenti seguenti.
mkfs.ext3(8) per creare nuovi file system ext4
fsck.ext4(8) per controllare e riparare file system ext4 esistenti
tune2fs(8) per configurare i superblocchi di un file system ext4
debugfs(8)
per fare il debug di file system ext4 in modo
interattivo. (Ha un comando undel
per ripristinare file
eliminati.)
I comandi
mkfs(8)
e
fsck(8)
sono forniti dal pacchetto e2fsprogs
come front-end per
vari programmi dipendenti dal file syste (mkfs.tipofs
e
fsck.tipofs
). Per il file system ext4 , sono
mkfs.ext4(8)
e
fsck.ext4(8)
(sono un collegamento simbolico a
mke2fs(8)
e
e2fsck(8)).
Sono disponibili comandi simili per ciascun file system supportato da Linux.
Tabella 9.19. Elenco di pacchetti di gestione dei file system
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
e2fsprogs
|
V:598, I:999 | 1419 | utilità per i file system ext2/ext3/ext4 |
reiserfsprogs
|
V:13, I:26 | 923 | utilità per i file system Reiserfs |
dosfstools
|
V:114, I:556 | 235 | utilità per i file system FAT (Microsoft: MS-DOS, Windows) |
xfsprogs
|
V:18, I:92 | 3349 | utilità per i file system XFS (SGI: IRIX) |
ntfs-3g
|
V:273, I:548 | 1471 | utilità per i file system NTFS (Microsoft: Windows NT, …) |
jfsutils
|
V:1, I:13 | 1561 | utilità per i file system JFS (IBM: AIX, OS/2) |
reiser4progs
|
V:0, I:4 | 1325 | utilità per i file system Reiser4 |
hfsprogs
|
V:0, I:8 | 303 | utilità per i file system HFS e HFS Plus (Apple: Mac OS) |
btrfs-progs
|
V:32, I:48 | 3314 | utilità per i file system Btrfs |
zerofree
|
V:2, I:74 | 25 | programma per impostare a 0 i blocchi liberi in file system ext2/3/4 |
Suggerimento | |
---|---|
Il file system Ext4 è il predefinito per il sistema Linux e il suo uso è caldamente raccomandato a meno che non sia abbiano specifiche ragioni per non farlo. |
Suggerimento | |
---|---|
Il file system Btrfs è disponibile nel kernel
Linux 3.2 (Debian |
Avvertimento | |
---|---|
Non si dovrebbe ancora usare il file system Btrfs per i propri dati importanti prima che abbia la funzionalità fsck(8) live in spazio kernel e il supporto nel bootloader. |
Suggerimento | |
---|---|
Alcuni strumenti permettono l'accesso a file system non supportati del kernel Linux (vedere Sezione 9.7.2, «Manipolare file senza montare i dischi»). |
In un sistema Linux, il comando mkfs(8) crea i file system ed il comando fsck(8) fornisce funzioni di controllo dell'integrità e di riparazione dei file system.
Debian ora in modo predefinito non fa fsck
periodici dopo
la creazione del file system.
Attenzione | |
---|---|
In generale l'esecuzione di |
Suggerimento | |
---|---|
Si può eseguire in modo sicuro il comando
fsck(8)
su tutti i file system, incluso il file system radice, al riavvio impostando
" |
Suggerimento | |
---|---|
Per vedere i risultati del comando
fsck(8)
avviato dallo script di avvio, controllare i file in
" |
La configurazione statica di base del file system è fornita da
«/etc/fstab
». Ad esempio,
# <file system> <punto di mount> <tipo> <opzioni> <dump> <pass> proc /proc proc defaults 0 0 UUID=709cbe4c-80c1-56db-8ab1-dbce3146d2f7 / ext4 noatime,errors=remount-ro 0 1 UUID=817bae6b-45d2-5aca-4d2a-1267ab46ac23 none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
Suggerimento | |
---|---|
Per identificare un dispositivo a blocchi si può usare il suo UUID (vedere Sezione 9.5.3, «Accedere alle partizioni usando UUID») invece del normale nome di
device a blocchi quale « |
Le prestazioni e le caratteristiche di un file system possono essere ottimizzate usando per esso opzioni per il montaggio (vedere fstab(5) e mount(8)).Alcune opzioni importanti sono le seguenti.
L'opzione "defaults
" implica le opzioni predefinite:
"rw,suid,dev,exec,auto,nouser,async
". (Uso generico)
L'opzione "noatime
" o "relatime
" è
molto efficace nel velocizzare l'accesso in lettura. (Uso generico)
L'opzione "user
" permette ad un normale utente di montare
il file system. Questa opzione implica la combinazione di opzioni
"noexec,nosuid,nodev
". (Uso generico, usato per CD o
dispositivi di archiviazione USB)
La combinazione di opzioni "noexec,nodev,nosuid
" è usata
per migliorare la sicurezza. (Uso generico)
L'opzione "noauto
" limita il montaggio solamente a quando
esplicitamente richiesto. (Uso generico)
L'opzione "data=journal
" per ext3fs può migliorare la
salvaguardia dell'integrità dei dati contro interruzioni dell'alimentazione
a prezzo della perdita di un po' di velocità in scrittura.
Suggerimento | |
---|---|
Per utilizzare una modalità di journaling non predefinita per il file system
root, è necessario fornire i parametri di avvio del kernel (vedere Sezione 3.1.2, «Stadio 2: il bootloader»), ad esempio
" |
Le caratteristiche di un file system possono essere ottimizzate attraverso il suo superblocco usando il comando tune2fs(8).
L'esecuzione di "sudo tune2fs -l /dev/hda1
" mostra il
contenuto del superblocco del file system in "/dev/hda1
".
L'esecuzione di "sudo tune2fs -c 50 /dev/hda1
" cambia per
"/dev/hda1
" la frequenza dei controlli dei file system
(l'esecuzione di fsck
all'avvio) a 50 avvii.
L'esecuzione di "sudo tune2fs -j /dev/hda1
" aggiunge la
funzionalità di journaling al file system in "/dev/hda1
",
cioè converte il file system da ext2 a ext3. (Eseguire questo comando su file system non
montati.)
L'esecuzione di "sudo tune2fs -O extents,uninit_bg,dir_index
/dev/hda1 && fsck -pf /dev/hda1
" converte il filesystem in
"/dev/hda1
" da ext3 a ext4. (Eseguire questo comando su file system non
montati.)
Avvertimento | |
---|---|
Prima di giocare con la configurazione dei dischi controllare il proprio hardware e leggere la pagina man di hdparam(8), perché è una cosa piuttosto pericolosa per l'integrità dei dati. |
Si può testare la velocità di accesso ai dischi di un disco rigido, ad
esempio "/dev/hda
" con "hdparm -tT
/dev/hda
". È possibile velocizzare alcuni dischi fissi connessi
con (E)IDE con "hdparm -q -c3 -d1 -u1 -m16 /dev/hda
" che
abilita il "supporto (E)IDE per I/O a 32 bit", l'uso dell'opzione
"using_dma", imposta l'opzione "interrupt-unmask" e imposta l'"I/O di
settori multipli a 16" (pericoloso!).
Si possono testare le capacità della cache in scrittura di un disco fisso,
ad esempio "/dev/sda
", con "hdparm -W
/dev/sda
". Si può disabilitare la funzionalità di cache in
scrittura con "hdparm -W 0 /dev/sda
".
Potrebbe essere possibile leggere CDROM masterizzati male in unità CD-ROM
moderne ad alta velocità rallentandole con "setcd -x 2
".
Le prestazioni e l'usura dei dischi delle unità a stato solido (SSD) possono essere ottimizzate nel modo seguente.
Usare il kernel Linux più recente (>= 3.2).
Ridurre le scritture su disco per gli accessi in lettura.
Impostare l'opzione di montaggio "noatime
" o
"relatime
" in /etc/fstab
.
Abilitare il comando TRIM.
Abilitare lo schema di allocazione dello spazio su disco ottimizzato SSD.
Impostare l'opzione di mountaggio "ssd
" in
/etc/fstab
per Btrfs.
Fare sì che il sistema muova tutti i dati su disco ogni 10 minuti sui PC portatili.
Impostare l'opzione di montaggio "commit=600
" in
/etc/fstab
. Vedere
fstab(5).
Impostare pm-utils in modo che usi la modalità laptop-mode anche quando collegato alla rete elettrica. Vedere Debian BTS #659260.
Avvertimento | |
---|---|
Modificare l'intervallo di scrittura dei dati dai normali 5 secondi a 10 minuti rende i dati vulnerabili in caso di mancanza di corrente. |
Con il demone smartd (8) è possibile monitorare e registrare i dischi fissi che sono conformi a SMART.
Installare il pacchetto smartmontools
.
Identificare i dispositivi dei dischi fissi usando df(1).
Si supponga che uno dei dispositivi dei dischi fissi da monitorare sia
"/dev/hda
".
Controllare l'output di "smartctl -a /dev/hda
" per vedere
se la funzionalità SMART è veramente abilitata.
Se non la è, abilitarla con "smartctl -s on -a /dev/hda
".
Abilitare l'esecuzione del demone smartd(8) nel modo seguente.
Rimuovere il carattere iniziale di commento dalla riga
"start_smartd=yes
" nel file
"/etc/default/smartmontools
".
Riavviare il demone
smartd(8)
con il comando "sudo /etc/init.d/smartmontools restart
".
Suggerimento | |
---|---|
Il demone
smartd(8)
può essere personalizzato con il file |
Le applicazioni creano file temporanei normalmente nella directory di
memorizzazione temporanea «/tmp
». Se
«/tmp
» non contiene abbastanza spazio, si può specificare
una directory di memorizzazione temporanea usando la variabile
$TMPDIR
per i programmi che si comportano in modo
corretto.
Le partizioni create al momento dell'installazione su LVM (Logical Volume Manager (funzionalità di Linux) possono essere facilmente ridimensionate concatenando ad esse delle estensioni o suddividendo le loro estensioni su dispositivi di archiviazione multipli senza riconfigurazioni importanti del sistema.
Se è disponibile una nuova partizione vuota (per esempio
"/dev/sdx
"), la si può formattare con
mkfs.ext4(1)
e montarla con
mount(8)
in una directory in cui è necessario avere più spazio. (È necessario copiare
il contenuto originale della directory.)
$ sudo mv dir-da-usare vecchia-dir $ sudo mkfs.ext34 /dev/sdx $ sudo mount -t ext4 /dev/sdx dir-da-usare $ sudo cp -a vecchia-dir/* dir-da-usare $ sudo rm -rf vecchia-dir
Suggerimento | |
---|---|
In alternativa si può montare un file immagine vuoto del disco (vedere Sezione 9.6.5, «Creare un file con immagine di disco vuoto») come device loop (vedere Sezione 9.6.3, «Montare un file con un'immagine di disco»). Il reale uso del disco cresce mano a mano che vengono archiviati i dati. |
Se è disponibile una directory vuota (ad esempio
"/percorso/della/dir-vuota
") in un'altra partizione con
spazio disponibile, si può, usando mount(8) con l'opzione
"--bind
", montarla in una directory (ad esempio
"dir-di-lavoro
") dove è necessario più spazio.
$ sudo mount --bind /percorso/della/dir-vuota dir-di-lavoro
Se è disponibile dello spazio utilizzabile in un'altra partizione (ad
esempio "/percorso/della/vuota
" e
"/percorso/di/lavoro
"), si può creare in essa una
directory e impilarla in una vecchia directory (es.,
"/percorso/della/vecchia
") in cui si ha bisogno di spazio
usando OverlayFS con un kernel Linux 3.18 o
successivo (Debian Stretch 9.0 o successiva).
$ sudo mount -t overlay overlay \ -olowerdir=/percorso/della/vecchia,upperdir=/percorso/della/vuota,workdir=/percorso/di/lavoro
Qui, "/percorso/della/vuota
" e
"/percorso/di/lavoro
" devono essere nella partizione
abilitata in lettura e scrittura da scrivere in
"/percorso/della/vecchia
".
Attenzione | |
---|---|
Questo è un metodo deprecato. Certo software può non funzionare bene con i "collegamenti simbolici ad una directory". Usare invece gli approcci che usano il "mount" descritti in precedenza. |
Se è disponibile una directory vuota (ad esempio
"/percorso/della/dir-vuota
" in un'altra partizione con
spazio disponibile, si può creare un collegamento simbolico alla directory
con
ln(8).
$ sudo mv dir-da-usare vecchia-dir $ sudo mkdir -p /percorso/della/dir-vuota $ sudo ln -sf /percorso/della/dir-vuota dir-da-usare $ sudo cp -a vecchia-dir/* dir-da-usare $ sudo rm -rf vecchia-dir
Avvertimento | |
---|---|
Non usare un "collegamento simbolico ad una directory" per le directory
gestite dal sistema, come " |
Questa sezione tratta della manipolazione di immagini di dischi.
Si può creare un file di immagine del disco, "disco.img
",
di un dispositivo non montato, ad esempio la seconda unità SCSI o serial ATA
"/dev/sdb
" usando
cp(1)
o
dd(1)
nel modo seguente.
# cp /dev/sdb disco.img # dd if=/dev/sdb of=disco.img
Si può creare l'immagine del disco del MBR (master boot record) dei PC tradizionali (vedere Sezione 9.5.2, «Configurazione del partizionamento dei dischi»), che risiede nel primo settore del disco IDE primario usando dd(1) nel modo seguente.
# dd if=/dev/hda of=mbr.img bs=512 count=1 # dd if=/dev/hda of=mbr-nopart.img bs=446 count=1 # dd if=/dev/hda of=mbr-part.img skip=446 bs=1 count=66
"mbr.img
": MBR con tabella delle partizioni
"mbr-nopart.img
": MBR senza tabella delle partizioni
"mbr-part.img
": solamente la tabella delle partizioni
nell'MBR
Se il disco di avvio è un un dispositivo SCSI o serial ATA, sostituire
"/dev/hda
" con "/dev/sda
".
Se si sta creando l'immagine di una partizione del disco originale,
sostituire "/dev/hda
" con "/dev/hda1
",
ecc.
Il file immagine del disco, "disco.img
" può essere
scritto in un dispositivo non montato, ad esempio la seconda unità SCSI
"/dev/sdb
" di dimensione corrispondente nel modo
seguente.
# dd if=disco.img of=/dev/sdb
Analogamente il file immagine di una partizione del disco,
"partizione.img
" può essere scritto in una partizione non
montata, ad esempio la prima partizione della seconda unità SCSI
"/dev/sdb1
" di dimensione corrispondente nel modo
seguente.
# dd if=partizione.img of=/dev/sdb1
Un'immagine di disco "partizione.img
" contenente
l'immagine di un'unica partizione, può essere montata e smontata usando il
device loop nel modo seguente.
# losetup -v -f partizione.img Loop device is /dev/loop0 # mkdir -p /mnt/loop0 # mount -t auto /dev/loop0 /mnt/loop0 ...bla...bla...bla # umount /dev/loop0 # losetup -d /dev/loop0
Questo può essere semplificato nel modo seguente.
# mkdir -p /mnt/loop0 # mount -t auto -o loop partizione.img /mnt/loop0 ...bla...bla...bla # umount partizione.img
Ogni partizione di un'immagine di disco "disco.img
"
contentente più partizioni, può essere montata usando il device loop. Dato che quest'ultimo non gestisce
in modo predefinito le partizioni, è necessario riconfigurarlo nel modo
seguente.
# modinfo -p loop # verifica la capacita del kernel max_part:Maximum number of partitions per loop device max_loop:Maximum number of loop devices # losetup -a # verifica che nulla stia usando il device loop # rmmod loop # modprobe loop max_part=16
Ora il device loop può gestire fino a 16 partizioni.
# losetup -v -f disco.img Loop device is /dev/loop0 # fdisk -l /dev/loop0 Disk /dev/loop0: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x452b6464 Device Boot Start End Blocks Id System /dev/loop0p1 1 600 4819468+ 83 Linux /dev/loop0p2 601 652 417690 83 Linux # mkdir -p /mnt/loop0p1 # mount -t ext4 /dev/loop0p1 /mnt/loop0p1 # mkdir -p /mnt/loop0p2 # mount -t ext4 /dev/loop0p2 /mnt/loop0p2 ...bla...bla...bla # umount /dev/loop0p1 # umount /dev/loop0p2 # losetup -d /dev/loop0
In alternativa, un risultato simile può essere ottenuto utilizzando i device mapper creati da
kpartx(8),
contenuto nel pacchetto kpartx
, nel modo seguente.
# kpartx -a -v disco.img ... # mkdir -p /mnt/loop0p2 # mount -t ext4 /dev/mapper/loop0p2 /mnt/loop0p2 ... ...bla...bla...bla # umount /dev/mapper/loop0p2 ... # kpartx -d /mnt/loop0
Nota | |
---|---|
È anche possibile montare una singola partizione di una tale immagine di disco con un device loop indicando un offset per saltare l'MBR, ecc., ma questo metodo è più esposto agli errori. |
Si può pulire un file con immagine di disco "disco.img
"
da tutti i file cancellati creando un'immagine pulita
"nuova.img
" nel modo seguente.
# mkdir vecchia; mkdir nuova # mount -t auto -o loop disco.img vecchia # dd bs=1 count=0 if=/dev/zero of=nuova.img seek=5G # mount -t auto -o loop nuova.img nuova # cd vecchia # cp -a --sparse=always ./ ../nuova/ # cd .. # umount nuova.img # umount disco.img
Se "disco.img
" è in ext2, ext3 o ext4, si può anche usare
zerofree(8),
contenuto nel pacchetto zerofree
, nel modo seguente.
# losetup -f -v disco.img Loop device is /dev/loop3 # zerofree /dev/loop3 # cp --sparse=always disco.img nuovo.img
Si può creare un'immagine di disco vuota "disco.img
", che
può crescere fino a 5GiB, usando
dd(1)
nel modo seguente.
$ dd bs=1 count=0 if=/dev/zero of=disco.img seek=5G
È possibile creare un file system ext4 in questa immagine di disco,
"disco.img
" usando il device
loop nel modo seguente.
# losetup -f -v disco.img Loop device is /dev/loop1 # mkfs.ext4 /dev/loop1 ...bla...bla...bla # losetup -d /dev/loop1 $ du --apparent-size -h disco.img 5.0G disco.img $ du -h disco.img 83M disco.img
La dimensione del file "disco.img
" è di 5.0GiB e il suo
effettivo uso del disco è di soli 83MiB. Questa discrepanza è resa possibile
dal fatto che il file system ext4 può contentere
file sparsi.
Suggerimento | |
---|---|
L'uso effettivo del disco dei file sparsi cresce insieme ai dati che in essi sono scritti. |
Usando operazioni simili su device creati dal device loop o dal device mapper, come in Sezione 9.6.3, «Montare un file con un'immagine di disco», si può partizionare tale immagine
di disco "disco.img
" usando
parted(8)
o
fdisk(8)
e si può creare in essa file system usando
mkfs.ext4(8),
mkswap(8),
ecc.
Si può creare un file immagine ISO9660
"cd.iso
" dell'albero di directory originale in
"directory_sorgente
" usando
genisoimage(1)
fornito da cdrkit nel modo seguente.
# genisoimage -r -J -T -V ID_volume -o cd.iso directory_sorgente
Analogamente, si può creare un file immagine ISO9660 avviabile,
"cdboot.iso
", da un albero di directory simile a quello
del debian-installer
in
"directory_sorgente
" nel modo seguente.
# genisoimage -r -o cdboot.iso -V ID_volume \ -b isolinux/isolinux.bin -c isolinux/boot.cat \ -no-emul-boot -boot-load-size 4 -boot-info-table directory_sorgente
In questo esempio viene usato per l'avvio il bootloader Isolinux (vedere Sezione 3.1.2, «Stadio 2: il bootloader»).
Si può calcolare il valore md5sum e creare l'immagine ISO9660 direttamente dal device CD-ROM nel modo seguente.
$ isoinfo -d -i /dev/cdrom CD-ROM is in ISO 9660 format ... Logical block size is: 2048 Volume size is: 23150592 ... # dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror | md5sum # dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror > cd.iso
Avvertimento | |
---|---|
Per ottenere un risultato corretto, si deve accuratamente evitare il bug di Linux riguardante il read ahead del file system ISO9660, come nell'esempio precedente. |
Suggerimento | |
---|---|
Per wodim(1), fornito da cdrkit, un DVD è semplicemente un grande CD. |
Si può trovare un device utilizzabile usando il comando seguente.
# wodim --devices
Poi si inserisce un CD-R vergine nell'unità CD e si scrive il file immagine
ISO9660 "cd.iso
" su questo device, ad esempio
"/dev/hda
", usando
wodim(1)
nel modo seguente.
# wodim -v -eject dev=/dev/hda cd.iso
Se viene usato un CD-RW invece di un CD-R, usare quest'altro comando.
# wodim -v -eject blank=fast dev=/dev/hda cd.iso
Suggerimento | |
---|---|
Se il sistema desktop usato monta automaticamente i CD, prima di usare
wodim(1)
smontarlo usando dalla console " |
Se "cd.iso
" contiene un'immagine ISO9660, lo si può
montare manualmente in "/cdrom
" usando il comando
seguente.
# mount -t iso9660 -o ro,loop cd.iso /cdrom
Suggerimento | |
---|---|
I sistemi desktop moderni possono montare automaticamente i supporti removibili come i CD in formato ISO9660 (vedere Sezione 10.1.7, «Supporti di archiviazione removibili»). |
Questa sezione tratta della manipolazione diretta dei dati binari su supporti di archiviazione.
Il metodo di visualizzazione dei dati binai più basilare è l'uso del comando
"od -t x1
".
Tabella 9.20. Elenco di pacchetti che visualizzano e modificano dati binari
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
coreutils
|
V:888, I:999 | 15719 | pacchetto base che contiene od(1) per fare il dump di file (HEX, ASCII, OCTAL, …) |
bsdmainutils
|
V:861, I:999 | 587 | pacchetto di utilità che contiene hd(1) per fare il dump di file (HEX, ASCII, OCTAL, …) |
hexedit
|
V:1, I:12 | 71 | visualizzatore ed editor binario (HEX, ASCII) |
bless
|
V:0, I:5 | 1028 | editor esadecimale completo (GNOME) |
okteta
|
V:1, I:18 | 1446 | editor esadecimale completo (KDE4) |
ncurses-hexedit
|
V:0, I:2 | 132 | visualizzatore ed editor binario (HEX, ASCII, EBCDIC) |
beav
|
V:0, I:0 | 133 | visualizzatore ed editor binario (HEX, ASCII, EBCDIC, OCTAL, …) |
Suggerimento | |
---|---|
HEX è usato come acronimo per il formato esadecimale con base 16. OCTAL è usato per il formato ottale con base 8. ASCII è usato per American Standard Code for Information Interchange, cioè la normale codifica per testi in inglese. EBCDIC è usato per Extended Binary Coded Decimal Interchange Code usato nei sistemi operativi deimainframe IBM. |
Esistono strumenti per leggere e scrivere file senza montare i dischi.
I sistemi software RAID offerti dal kernel Linux forniscono un livello di ridondanza dei dati nel file system a livello del kernel, allo scopo di ottenere una più alta affidabilità dell'archiviazione.
Esistono strumenti per aggiungere dati ridondanti a file a livello di programmi applicativi per ottenere anche in questo modo una più alta affidabilità dell'archiviazione.
Tabella 9.22. Elenco di strumenti per aggiungere dati ridondanti a file
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
par2
|
V:1, I:9 | 246 | insiemi di volumi di archivi di parità, per controllare e riparare file |
dvdisaster
|
V:0, I:2 | 1737 | protezione contro perdita di dati/graffi/invecchiamento di supporti CD/DVD |
dvbackup
|
V:0, I:0 | 412 | strumento di backup che usa camcorder MiniDV (fornisce rsbep(1)) |
vdmfec
|
V:0, I:0 | 97 | recupera blocchi perduti usando Forward Error Correction |
Esistono strumenti per recuperare file dati e fare analisi forensi.
Tabella 9.23. Elenco di pacchetti per recupero di file dati ed analisi forensi.
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
testdisk
|
V:3, I:39 | 1339 | utilità per scansione delle partizione e ripristino di dischi |
magicrescue
|
V:0, I:3 | 254 | utilità per ripristinare file cercando byte magici |
scalpel
|
V:0, I:4 | 87 | strumento di escavazione di file frugale e ad alte prestazioni |
myrescue
|
V:0, I:3 | 82 | recupera dati da dischi fissi danneggiati |
extundelete
|
V:1, I:11 | 148 | utilità per decancellare file da file system ext3/4 |
ext4magic
|
V:0, I:4 | 233 | utilità per decancellare file da file system ext3/4 |
ext3grep
|
V:0, I:3 | 281 | strumento per aiutare a recuperare file cancellati da file system ext3 |
scrounge-ntfs
|
V:0, I:3 | 49 | programma di recupero di dati da file system NTFS |
gzrt
|
V:0, I:0 | 57 | insieme di strumenti di recupero di gzip |
sleuthkit
|
V:2, I:18 | 1212 | strumenti per analisi forensi (Sleuthkit) |
autopsy
|
V:0, I:2 | 1021 | interfaccia grafica per SleuthKit |
foremost
|
V:0, I:7 | 100 | applicazione forense per il recupero dei dati |
guymager
|
V:0, I:1 | 1067 | strumento forense per immagini basato su Qt |
dcfldd
|
V:0, I:5 | 95 |
versione migliorata di dd per analisi forensi e sicurezza
|
Suggerimento | |
---|---|
Si possono ripristinare i file sui file system ext2 usando i comandi
|
Quando dei dati sono troppo grandi affinché ne venga fatto il backup in un file singolo, si può fare il backup dei suoi contenuti dopo averlo suddiviso in pezzi di, ad esempio 2000MiB, che saranno successivamente riuniti a formare il file originale.
$ split -b 2000m file_grande $ cat x* >file_grande
Attenzione | |
---|---|
Assicurarsi di non avere altri file che iniziano con " |
Per ripulire i contenuti di un file, come un file di registro, non usare rm(1) per cancellarlo e poi crearne un altro, perché nell'intervallo tra i due comandi potrebbe essere ancora possibile accedere al file. Quello che segue è il metodo sicuro per pulire il contenuto di un file.
$ :>file_da_pulire
I comandi seguenti creano file fittizi o vuoti.
$ dd if=/dev/zero of=5kb.file bs=1k count=5 $ dd if=/dev/urandom of=7mb.file bs=1M count=7 $ touch zero.file $ : > semprezero.file
Dovrebbero essere ora presenti i seguenti file.
"5kb.file
" è costituito da 5KB di zero.
"7mb.file
" è costituito da 7MB di dati casuali.
"zero.file
" potrebbe essere un file di 0 byte. Se fosse
stato preesistente, il suo orario mtime
sarebbe stato
aggiornato mentre sarebbero stati mantenuti i suoi contenuti e la sua
grandezza.
"semprezero.file
" è sempre un file di 0 byte. Se fosse
stato preesistente, il suo orario mtime
sarebbe stato
aggiornato e il suo contenuto azzerato.
Esistono diversi modi di cancellare completamente i dati da un intero device
simile ad un disco fisso, ad esempio una chiavetta USB in
"/dev/sda
".
Attenzione | |
---|---|
Prima di eseguire i comandi indicati in seguito controllare la posizione
della chiavetta USB con
mount(8).
Il device a cui punta " |
Cancellare tutti i contenuti del disco reimpostando tutti i dati a 0 con il comando seguente.
# dd if=/dev/zero of=/dev/sda
Cancellare tutto sovrascrivendo dati casuali con il comando seguente.
# dd if=/dev/urandom of=/dev/sda
Cancellare tutto sovrascrivendo dati casuali in modo molto efficiente con il comando seguente.
# shred -v -n 1 /dev/sda
Dato che
dd(1)
è disponibile dalla shell di molti CD Linux avviabili, come il CD
dell'installatore Debian, si può cancellare completamente il sistema
installato su un disco fisso, ad esemio "/dev/hda
",
"/dev/sda
", ecc., eseguendo un comando di cancellazione
da un supporto CD simile.
Area inutilizzate di un disco fisso (o di una chiavetta USB), ad esempio
"/dev/sdb1
", potrebbero contenere ancora i dati
cancellati stessi, dato che questi sono semplicemente scollegati dal file
system. È possibile pulire queste aree sovrascrivendole.
# mount -t auto /dev/sdb1 /mnt/pippo # cd /mnt/pippo # dd if=/dev/zero of=spazzatura dd: writing to `spazzatura': No space left on device ... # sync # umount /dev/sdb1
Avvertimento | |
---|---|
Solitamente questo procedimento è sufficientemente buono per le chiavette USB. Ma non è perfetto. La maggior parte dei nomi di file cancellati e dei loro attributi potrebbe ancora essere nascosta e rimanere nel file system. |
Anche se un file è stato cancellato per errore, fintanto che è usato da un'applicazione (in lettura o scrittura), è possibile recuperarlo.
Per esempio, provare a fare quanto segue.
$ echo pippo > pluto $ less pluto $ ps aux | grep ' less[ ]' bozo 4775 0.0 0.0 92200 884 pts/8 S+ 00:18 0:00 less pluto $ rm pluto $ ls -l /proc/4775/fd | grep bar lr-x------ 1 bozo bozo 64 2008-05-09 00:19 4 -> /home/bozo/pluto (deleted) $ cat /proc/4775/fd/4 >pluto $ ls -l -rw-r--r-- 1 bozo bozo 4 2008-05-09 00:25 pluto $ cat pluto pippo
Quando si ha il pacchetto lsof
installato, eseguire in un
altro terminale quanto segue.
$ ls -li pluto 2228329 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:02 pluto $ lsof |grep pluto|grep less less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/pluto $ rm pluto $ lsof |grep pluto|grep less less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/pluto (deleted) $ cat /proc/4775/fd/4 >pluto $ ls -li pluto 2228302 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:05 pluto $ cat pluto pippo
I file con collegamenti fisici possono essere identificati usando
"ls -li
".
$ ls -li total 0 2738405 -rw-r--r-- 1 root root 0 2008-09-15 20:21 paperino 2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 pippo 2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 pluto
Entrambi "pippo
" e "pluto
" hanno il
numero di collegamenti uguale a "2" (>1), il che mostra che hanno
collegamenti fisici. Hanno il numero di inode,
"2738404", in comune. Ciò significa che sono lo stesso file con un
collegamento fisico. Nell'eventualità che non si trovino tutti i file con
collegamento fisico, li si possono cercare in base all'inode, ad esempio "2738404", nel modo seguente.
# find /percorso/del/punto/di/mount -xdev -inum 2738404
Avendo l'accesso fisico alla macchina, chiunque può facilmente ottenere privilegi di root e accedere a tutti i file nel PC (vedere Sezione 4.7.4, «Rendere sicura la password di root»). Ciò significa che il sistema delle password di login non può mettere al sicuro i dati privati e sensibili contro un possibile furto del PC. Per farlo deve essere usata una tecnologia di cifratura dei dati. Sebbene GNU Privacy Guard (vedere Sezione 10.3, «Infrastruttura di sicurezza dei dati») possa cifrare file, richiede un po' di lavoro da parte dell'utente.
dm-crypt e eCryptfs facilitano la cifratura automatica dei dati in modo nativo attraverso moduli del kernel Linux con un minimo lavoro da parte dell'utente.
Tabella 9.24. Elenco di utilità per la cifratura dei dati
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
cryptsetup
|
V:32, I:80 | 67 | utilità per device a blocchi cifrati (dm-crypt / LUKS) |
cryptmount
|
V:3, I:5 | 228 | utilità per device a blocchi cifrati (dm-crypt / LUKS) con particolare attenzione al montaggio/smontaggio da parte di utenti normali |
ecryptfs-utils
|
V:5, I:8 | 396 | utilità per file system stack cifrati (eCryptfs) |
Dm-crypt è un file system crittografico che usa device-mapper. Device mapper mappa un blocco di un device ad un altro.
eCryptfs è un altro file system crittografico che usa un file system stack; quest'ultimo si sovrappone ad una directory esistente in un file system montato.
Attenzione | |
---|---|
La cifratura dei dati consuma tempo CPU, ecc. Valutare bene i suoi costi e i benefici. |
Nota | |
---|---|
È possibile installare un intero file system Debian in un disco cifrato con l'Installatore Debian (lenny o successivo) usando dm-crypt/LUKS e initramfs. |
Suggerimento | |
---|---|
Per lo strumento di cifratura in spazio utente GNU Privacy Guard vedere Sezione 10.3, «Infrastruttura di sicurezza dei dati». |
Si può cifrare il contenuto di dispositivi di memorizzazione di massa
removibili, ad esempio una chiavetta USB in "/dev/sdx
",
usando dm-crypt/LUKS. Formattarla semplicemente nel modo seguente.
# badblocks -c 1024 -s -w -t random -v /dev/sdx # fdisk /dev/sdx ... "n" "p" "1" "return" "return" "w" # cryptsetup luksFormat /dev/sdx1 ... # cryptsetup open --type luks /dev/sdx1 sdx1 ... # ls -l /dev/mapper/ total 0 crw-rw---- 1 root root 10, 60 2008-10-04 18:44 control brw-rw---- 1 root disk 254, 0 2008-10-04 23:55 sdx1 # mkfs.vfat /dev/mapper/sdx1 ... # cryptsetup luksClose sdx1
Si può poi montarla come una chiavetta qualunque in
"/media/<etichetta_disco>
", tranne per il fatto che
verrà chiesta la password (vedere Sezione 10.1.7, «Supporti di archiviazione removibili») nei moderni ambienti desktop, come
GNOME che usa
gnome-mount(1).
La differenza è che ogni dato scritto in essa è cifrato. In alternativa è
possibile formattare il supporto con un file system diverso, ad esempio ext4
usando "mkfs.ext4 /dev/sdx1
".
Nota | |
---|---|
Se si è veramente paranoici per ciò che riguarda la sicurezza dei propri
dati, potrebbe essere necessario sovrascrivere diverse volte (il comando
" |
In questo esempio si suppone che il file "/etc/fstab
"
originale contenga quanto segue.
/dev/sda7 swap sw 0 0
Si può abilitare la cifratura della partizione di swap usando dm-crypt nel modo seguente.
# aptitude install cryptsetup # swapoff -a # echo "cswap /dev/sda7 /dev/urandom swap" >> /etc/crypttab # perl -i -p -e "s/\/dev\/sda7/\/dev\/mapper\/cswap/" /etc/fstab # /etc/init.d/cryptdisks restart ... # swapon -a
Una partizione di disco cifrata creata con dm-crypt/LUKS su
"/dev/sdc5
" può essere montata in
"/mnt
" nel modo seguente:
$ sudo cryptsetup open /dev/sdc5 ninja --type luks Enter passphrase for /dev/sdc5: **** $ sudo lvm lvm> lvscan inactive '/dev/ninja-vg/root' [13.52 GiB] inherit inactive '/dev/ninja-vg/swap_1' [640.00 MiB] inherit ACTIVE '/dev/goofy/root' [180.00 GiB] inherit ACTIVE '/dev/goofy/swap' [9.70 GiB] inherit lvm> lvchange -a y /dev/ninja-vg/root lvm> exit Exiting. $ sudo mount /dev/ninja-vg/root /mnt
È possibile cifrare automaticamente i file scritti in
"~/Private/
" usando eCryptfs e il pacchetto
ecryptfs-utils
.
Eseguire
ecryptfs-setup-private(1)
e impostare "~/Private/
" nei prompt mostrati.
Attivare "~/Private/
" eseguendo
ecryptfs-mount-private(1).
Spostare i file con dati sensibili in "~/Private/
" e
creare i collegamenti simbolici necessari.
File candidati sono:"~/.fetchmailrc
",
"~/.ssh/identity
", "~/.ssh/id_rsa
",
"~/.ssh/id_dsa
" e altri file con permessi
"go-rwx
"
Spostare le directory con dati sensibili in una sottodirectory in
"~/Private/
" e creare i collegamenti simbolici necessari.
Directory candidate sono: "~/.gnupg
" e altre directory
con permessi "go-rwx
"
Creare un collegamento simbolico da "~/Desktop/Private/
"
a "~/Private/
" per facilitare le operazioni dal desktop.
Disattivare "~/Private/
" eseguendo
ecryptfs-umount-private(1).
Attivare "~/Private/
" eseguendo
ecryptfs-mount-private(1)
quando sono necessari dati cifrati..
Suggerimento | |
---|---|
Dato che eCryptfs cifra selettivamente solo
i file sensibili, il suo costo in termini di risorse di sistema è molto
minore dell'uso di dm-crypt sull'intero
device root o " |
Se si usa la propria password di login come wrapper per le chiavi di cifratura, si può automatizzare il montaggio di eCryptfs tramite PAM (Pluggable Authentication Modules).
Inserire la riga seguente immediatamente prima di
"pam_permit.so
" in
"/etc/pam.d/common-auth
".
auth required pam_ecryptfs.so unwrap
Inserire la riga seguente come ultima riga in
"/etc/pam.d/common-session
".
session optional pam_ecryptfs.so unwrap
Insrire la riga seguente come prima riga attiva in
"/etc/pam.d/common-password
".
password required pam_ecryptfs.so
Ciò risulta molto comodo.
Avvertimento | |
---|---|
Errori di configurazione di PAM possono lasciare l'utente chiuso fuori dal proprio sistema. Vedere Capitolo 4, Autenticazione. |
Attenzione | |
---|---|
Se si usa la propria password di login per fare da wrapper alle chiavi di cifratura, i dati cifrati sono sicuri tanto quanto la password di login dell'utente (vedere Sezione 4.3, «Password buone»). A meno che non si scelga prudentemente una password forte, i propri dati saranno a rischio se qualcuno esegue software di forzatura della password dopo aver rubato il portatile (vedere Sezione 4.7.4, «Rendere sicura la password di root»). |
Debian distribuisce, per le architetture supportate, kernel Linux modulari contenuti in pacchetti.
Nel kernel Linux 2.6/3.x ci sono alcune funzionalità degne di nota rispetto alla versione 2.4.
I device vengono creati dal sistema udev (vedere Sezione 3.3, «Il sistema udev»).
L'accesso in lettura/scrittura ai dispositivi CD/DVD IDE non usa il modulo
ide-scsi
.
Le funzioni di filtraggio dei pacchetti di rete usando i moduli
iptables
del kernel.
Il salto di versione da Linux 2.6.39 a Linux 3.0 non è dovuto a cambiamenti tecnologici fondamentali, ma al ventesimo anniversario.
Molte caratteristiche di Linux possono essere configurate tramite parametri del kernel, nei modi seguenti.
Parametri del kernel inizializzati dal bootloader (vedere Sezione 3.1.2, «Stadio 2: il bootloader»)
Se accessibili attraverso sysfs (vedere Sezione 1.2.12, «procfs e sysfs»), parametri del kernel modificati da sysctl(8) durante l'esecuzione del sistema.
Parametri di moduli impostati dagli argomenti di modprobe(8) al momento dell'attivazione di un modulo (vedere Sezione 9.6.3, «Montare un file con un'immagine di disco»)
Vedere "kernel-parameters.txt(.gz)
" e altri documenti
correlati nella documentazione del kernel Linux
("/usr/share/doc/linux-doc-3.*/Documentation/filesystems/*
")
fornita dai pacchetti linux-doc-3.*
.
La maggior parte dei normali programmi
non ha bisogno degli header del kernel per essere compilata, anzi di fatto
può corrompersi se si usano direttamente gli header. Questi programmi
dovrebbero essere compilati nel sistema Debian usando gli header in
"/usr/include/linux
" e
"/usr/include/asm
" forniti dal pacchetto
libc6-dev
(creato dal pacchetto sorgente
glibc
).
Nota | |
---|---|
Per compilare alcuni programmi specifici per il kernel, come moduli per il
kernel da fonti esterne e il demone automounter ( |
Debian ha un proprio metodo di compilazione del kernel e dei moduli relativi.
Tabella 9.25. Elenco di pacchetti chiave da installare per la ricompilazione del kernel in un sistema Debian
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
build-essential
|
I:454 | 20 |
pacchetti essenziali per compilare pacchetti Debian:
make , gcc , …
|
bzip2
|
V:178, I:953 | 196 | utilità di compressione e decompressione per file bz2 |
libncurses5-dev
|
V:13, I:139 | 6 | librerie di sviluppo e documentazione per ncurses |
git
|
V:301, I:458 | 35266 | git: sistema distribuito di controllo delle revisioni usato dal kernel Linux |
fakeroot
|
V:31, I:501 | 215 | fornisce un ambiente fakeroot per compilare pacchetti da utente non root |
initramfs-tools
|
V:367, I:990 | 111 | strumento per compilare un initramfs (specifico di Debian) |
dkms
|
V:89, I:214 | 278 | DKMS (Dynamic Kernel Module Support, supporto dinamico per i noduli del kernel) (generico) |
devscripts
|
V:8, I:62 | 2485 | script di aiuto per i manutentori di pacchetti Debian (specifico di Debian) |
Se si usa initrd
nello Sezione 3.1.2, «Stadio 2: il bootloader», ci si assicuri di leggere le
informazioni relative in
initramfs-tools(8),
update-initramfs(8),
mkinitramfs(8)
e
initramfs.conf(5).
Avvertimento | |
---|---|
Quando si compilano i sorgenti del kernel Linux, non mettere collegamenti
simbolici alle directory nell'albero dei sorgenti (ad esempio,
" |
Nota | |
---|---|
Quando si compila il kernel Linux più recente nel sistema Debian
|
Nota | |
---|---|
Il DKMS (Dynamic Kernel Module Support, supporto dinamico per i moduli del kernel) è un nuova infrastruttura indipendente dalla distribuzione progettata per permettere l'aggiornamento di singoli moduli del kernel senza cambiare tutto il kernel. È utilizzata per il mantenimento dei moduli esterni all'albero dei sorgenti. Rende anche molto facile la ricompilazione dei moduli quando si aggiornano i kernel. |
Per compilare pacchetti binari del kernel personalizzati a partire dai
sorgenti originali del kernel, si deve usare il target
"deb-pkg
fornito.
$ sudo apt-get build-dep linux $ cd /usr/src $ wget http://www.kernel.org/pub/linux/kernel/v3.11/linux-<version>.tar.bz2 $ tar -xjvf linux-<version>.tar.bz2 $ cd linux-<version> $ cp /boot/config-<version> .config $ make menuconfig ... $ make deb-pkg
Suggerimento | |
---|---|
Il pacchetto linux-source-<versione> fornisce i sorgenti del kernel
Linux con le patch Debian come
" |
Per compilare pacchetti binari specifici a partire dal pacchetto Debian dei
sorgenti del kernel, si devono usare i target
"binary-arch_<architettura>_<featureset>_<flavour>
"
in "debian/rules.gen
".
$ sudo apt-get build-dep linux $ apt-get source linux $ cd linux-3.* $ fakeroot make -f debian/rules.gen binary-arch_i386_none_686
Ulteriori informazioni:
Wiki Debian: FAQ del Kernel
Wiki Debian: Kernel Debian
Debian Linux Kernel Handbook: https://kernel-handbook.debian.net
Un driver hardware è il codice eseguito nel sistema target. La maggior parte
dei driver hardware sono ora disponibili come software libero e sono inclusi
nei normali pacchetti Debian dei kernel nell'area main
.
Il firmware è il codice o i dati caricati sul dispositivo (ad esempio microcodice della CPU, codice di rendering eseguito nella GPU oppure dati FPGA/CPLD, …). Alcuni pacchetti firmware sono disponibili come software libero, ma molti pacchetti firmware non lo sono dato che contengono dati binari senza sorgenti.
firmware-linux-free (main
)
firmware-linux-nonfree (non-free
)
firmware-linux-* (non-free
)
*-firmware (non-free
)
intel-microcode (non-free
)
amd64-microcode (non-free
)
Notare che i pacchetti non-free
e
contrib
non fanno parte del sistema Debian. La
configurazione per abilitare e disabilitare le aree
non-free
e contrib
è descritta in
Sezione 2.1.4, «Nozioni di base sugli archivi Debian». Si dovrebbe essere consapevoli
degli aspetti negativi legati all'uso dei pacchetti
non-free
e contrib
come descritto in
Sezione 2.1.5, «Debian è al 100% software libero».
L'uso di sistemi virtualizzati permette di eseguire più istanze di un sistema simultaneamente su un singolo hardware.
Suggerimento | |
---|---|
Ci sono diversi pacchetti in Debian relativi alla virtualizzazione ed emulazione di sistema che vanno oltre il semplice chroot. Alcuni pacchetti aiutano anche nell'impostazione di tali sistemi.
Tabella 9.26. Elenco di strumenti di virtualizzazione
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
schroot
|
V:7, I:10 | 2728 | strumento specializzato per eseguire pacchetti Debian binari in chroot |
sbuild
|
V:1, I:4 | 298 | strumento per compilare pacchetti Debian binari da sorgenti Debian |
pbuilder
|
V:1, I:16 | 966 | creatore di pacchetti personali per pacchetti Debian |
debootstrap
|
V:6, I:63 | 283 | avviare un sistema Debian base (scritto in sh) |
cdebootstrap
|
V:0, I:3 | 116 | avviare un sistema Debian (scritto in C) |
virt-manager
|
V:9, I:34 | 6770 | Virtual Machine Manager: applicazione desktop per gestire macchine virtuali |
libvirt-clients
|
V:30, I:51 | 2139 | programmi per la libreria libvirt |
bochs
|
V:0, I:1 | 6706 | Bochs: emulatore PC IA-32 |
qemu
|
I:35 | 95 | QEMU: veloce emulatore generico di processore |
qemu-system
|
I:32 | 96 | QEMU: binari per emulazione completa del sistema |
qemu-user
|
V:2, I:30 | 84481 | QEMU: binari per emulazione in spazio utente |
qemu-utils
|
V:9, I:97 | 5536 | QEMU: utilità |
qemu-kvm
|
V:16, I:70 | 105 | KVM: virtualizzazione completa su hardware x86 convirtualizzazione assistita da hardware |
virtualbox
|
V:33, I:41 | 127956 | VirtualBox: soluzione per virtualizzazione i dx86 su i386 e amd64 |
xen-tools
|
V:0, I:5 | 704 | strumenti per gestire server virtuali XEN Debian |
wine
|
V:21, I:95 | 189 | Wine: implementazione della API Windows (suite standard) |
dosbox
|
V:2, I:19 | 2778 | DOSBox: emulatore x86 con grafica Tandy/Herc/CGA/EGA/VGA/SVGA, suono e DOS |
dosemu
|
V:0, I:3 | 4891 | DOSEMU: emulatore DOS di Linux |
vzctl
|
V:1, I:2 | 1112 | OpenVZ, soluzione per virtualizzazione server - strumenti di controllo |
vzquota
|
V:1, I:2 | 236 | OpenVZ, soluzione per virtualizzazione server - strumenti per quote |
lxc
|
V:9, I:14 | 2412 | strumenti in spazio utente per contenitori Linux containers |
Vedere l'articolo di Wikipedia Comparison of platform virtual machines per una comparazione dettagliata di diverse soluzioni per la virtualizzazione di piattaforme.
Nota | |
---|---|
Alcune funzionalità descritte in seguito sono disponibili solamente in
|
Nota | |
---|---|
I kernel Debian predefiniti hanno il supporto per KVM a partire da |
Il tipico processo di virtualizzazione comporta diverse fasi.
Creare un file system vuoto (un albero di file o un'immagine di disco).
L'albero di file può essere creato con "mkdir -p
/percorso/di/chroot
".
Il file immagine raw del disco può essere creato con dd(1) (vedere Sezione 9.6.1, «Creare un file con un'immagine di disco» e Sezione 9.6.5, «Creare un file con immagine di disco vuoto»).
Si può usare qemu-img(1) per creare e convertire file immagine di dischi supportati da QEMU.
I formati di file raw e VMDK possono essere usati come formati comuni tra i vari strumenti di virtualizzazione.
Montare l'immagine del disco con mount(8) nel file system (opzionale).
Per il file immagine raw sel disco, montarlo come device loop o device mapper (vedere Sezione 9.6.3, «Montare un file con un'immagine di disco»).
Per le immagini disco supportate da QEMU, montarle come device a blocchi di rete (vedere Sezione 9.10.3, «Montare il file immagine di disco virtuale»).
Popolare il file system obiettivo con i dati di sistema necessari.
L'uso di programmi come debootstrap
e
cdebootstrap
aiuta questo processo (vedere Sezione 9.10.4, «Sistema chroot»).
Usare gli installatori di sistemi operativi nell'emulazione di sistemi completi.
Eseguire un programma in un ambiente virtualizzato.
chroot fornisce un ambiente di virtualizzazione base sufficiente a compilare programmi, eseguire applicazioni in console ed eseguire demoni al suo interno.
QEMU fornisce emulazione di CPU inter-piattaforma.
QEMU con KVM fornisce una completa emulazione di sistema con virtualizzazione assistita da hardware.
VirtualBox fornisce una completa emulazione del sistema in i386 e amd64 con o senza virtualizzazione assistita da hardware.
Per i file immagine raw di disco, vedere Sezione 9.6, «Immagine del disco».
Per altri file immagine di dischi virtuali, si può usare
qemu-nbd(8)
per esportarli usando il protocollo per device a blocchi di rete e montarli
usando il modulo nbd
del kernel.
qemu-nbd(8) supporta i formati di disco supportati da QEMU; QEMU supporta i seguenti formati di dischi: raw, qcow2, qcow, vmdk, vdi, bochs, cow (copy-on-write di user-mode Linux), parallels, dmg, cloop, vpc, vvfat (VFAT virtuale) e host_device.
I device a blocchi di rete possono
supportare partizioni nello stesso modo dei device loop (vedere Sezione 9.6.3, «Montare un file con un'immagine di disco»). Si può montare la prima
partizione di "disk.img
" nel modo seguente.
# modprobe nbd max_part=16 # qemu-nbd -v -c /dev/nbd0 disk.img ... # mkdir /mnt/part1 # mount /dev/nbd0p1 /mnt/part1
Suggerimento | |
---|---|
È possibile esportare solamente la prima partizione di
" |
chroot(8) offre il metodo più basilare per eseguire diverse istanze dell'ambiente GNU/Linux simultaneamente in un singolo sistema senza riavviare.
Attenzione | |
---|---|
Gli esempi seguenti presuppongono che entrambi i sistemi, quello genitore e quello chroot, condividano la stessa architettura. |
Si può imparare a impostare ed usare chroot(8) eseguendo il programma pbuilder(8) in script(1) nel modo seguente.
$ sudo mkdir /sid-root $ sudo pbuilder --create --no-targz --debug --buildplace /sid-root
Si può vedere come
debootstrap(8)
o
cdebootstrap(1)
popoli i dati di sistema per l'ambiente sid
in
"/sid-root
".
Suggerimento | |
---|---|
L'installatore Debian usa debootstrap(8) o cdebootstrap(1) per l'installazione Debian. Possono anche essere usati per installare Debian in un sistema senza usare un disco di installazione Debian, ma invece uno di un'altra distribuzione GNU/Linux. |
$ sudo pbuilder --login --no-targz --debug --buildplace /sid-root
Si può vedere come venga creata una shell di sistema in esecuzione
nell'ambiente sid
, nel modo seguente.
Copiare la configurazione locale ("/etc/hosts
",
"/etc/hostname
", "/etc/resolv.conf
")
Montare il file system "/proc
"
Montare il file system "/dev/pts
"
Creare "/usr/sbin/policy-rc.d
" che restituisca sempre il
codice 101
Esegiore "chroot /sid-root bin/bash -c 'exec -a -bash
bin/bash'
"
Nota | |
---|---|
Alcuni programmi in chroot per funzionare possono aver bisogno dell'accesso
ad più file nel sistema genitore di quanti ne fornisca
|
Nota | |
---|---|
Il file " |
Suggerimento | |
---|---|
Lo scopo originale del pacchetto specializzato chroot,
|
Suggerimento | |
---|---|
Il pacchetto simile |
Io raccomando l'uso di QEMU o VirtualBox per eseguire, in un sistema Debian
stable
, sistemi desktop multipli in maniera sicura usando
la virtualizzazione. Permettono di
eseguire applicazioni desktop di Debian unstable
e
testing
senza i comuni rischi ad essi associati.
Dato che QEMU puro è molto lento, è raccomandata la sua velocizzazione con KVM quando il sistema host lo permette.
L'immagine disco virtuale "virtdisk.qcow2
" contenente un
sistema Debian per QEMU si può creare con i
piccoli CD dell'installatore
Debian nel modo seguente.
$ wget http://cdimage.debian.org/debian-cd/5.0.3/amd64/iso-cd/debian-503-amd64-netinst.iso $ qemu-img create -f qcow2 virtdisk.qcow2 5G $ qemu -hda virtdisk.qcow2 -cdrom debian-503-amd64-netinst.iso -boot d -m 256 ...
Vedere altri suggerimenti su Debian Wiki: QEMU.
VirtualBox è fornito con strumenti con interfaccia utente grafica Qt piuttosto intuitivi. I suoi strumenti grafici e a riga di comando sono spiegati nel Manuale utente di VirtualBox e Manuale utente di VirtualBox (PDF).
Suggerimento | |
---|---|
Eseguire altre distribuzioni GNU/Linux come Ubuntu e Fedora in una virtualizzazione è un ottimo metodo per imparare trucchetti di configurazione. Anche altri sistemi operativi proprietari possono essere eseguiti tranquillamente in queste virtualizzazioni GNU/Linux. |