Indice
In questa sezione vengono descritti suggerimenti base per configurare e gestire il sistema, per lo più dalla console.
There are some utility programs to help your console activities.
Tabella 9.1. List of programs to support console activities
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
mc
|
V:56, I:227 | 1508 | See Sezione 1.3, «Midnight Commander (MC)» |
bsdutils
|
V:681, I:999 | 402 | script command to make typescript of terminal session |
screen
|
V:106, I:270 | 1014 | multiplexer per terminale con emulazione di terminale VT100/ANSI |
tmux
|
V:35, I:140 | 1045 | alternativa per multiplexer per terminale (usare invece "Control-B") |
fzf
|
V:3, I:8 | 2637 | fuzzy text finder |
fzy
|
V:0, I:0 | 54 | fuzzy text finder |
rlwrap
|
V:1, I:19 | 297 | readline feature command line wrapper |
ledit
|
V:0, I:14 | 306 | readline feature command line wrapper |
rlfe
|
V:0, I:0 | 49 | readline feature command line wrapper |
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 started, file is typescript
Fare tutto quello che si vuole … e poi premere Ctrl-D
per
uscire da script
.
$ col -bx < typescript > cleanedfile $ vim cleanedfile
There are alternative methods to record the shell activities:
Use tee
(usable during the boot process in the
initramfs):
$ sh -i 2>&1 | tee typescript
Use gnome-terminal
with the extend line buffer for
scrollback.
Use screen
with "^A H
" (see Sezione 9.1.2, «Il programma screen») to perform recording of console.
Use vim
with ":terminal
" to enter the
terminal mode. Use "Ctrl-W N
" to exit from terminal mode
to normal mode. Use ":w typescript
" to write the buffer
to a file.
Use emacs
with "M-x shell
",
"M-x eshell
", or "M-x term
" to enter
recording console. Use "C-x C-w
" to write the buffer to
a file.
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.
See tmux
(1) for functionalities of the alternative
command.
In Sezione 1.4.2, «Personalizzare bash», 2 tips to allow quick navigation
around directories are described: $CDPATH
and
mc
.
If you use fuzzy text filter program, you can do without typing the exact
path. For fzf
, include following in
~/.bashrc
.
FZF_KEYBINDINGS_PATH=/usr/share/doc/fzf/examples/key-bindings.bash if [ -f $FZF_KEYBINDINGS_PATH ]; then . $FZF_KEYBINDINGS_PATH fi FZF_COMPLETION_PATH=/usr/share/doc/fzf/examples/completion.bash if [ -f $FZF_COMPLETION_PATH ]; then . $FZF_COMPLETION_PATH fi
For example:
You can jump to a very deep subdirectory with minimal efforts. You first
type "cd **
" and press Tab
. Then you
will be prompted with candidate paths. Typing in partial path strings,
e.g., s/d/b foo
, will narrow down candidate paths. You
select the path to be used by cd
with cursor and return
keys.
You can select a command from the command history more efficiently with
minimal efforts. You press Ctrl-R
at the command
prompt. Then you will be prompted with candidate commands. Typing in
partial command strings, e.g., vim d
, will narrow down
candidates. You select the one to be used with cursor and return keys.
Some commands such as /usr/bin/dash
which lacks command
line history editing capability can add such functionality transparently by
running under rlwrap
or its equivalents.
$ rlwrap dash -i
This provides convenient platform to test subtle points for
dash
with friendly bash
-like
environment.
After you learn basics of vim
(1) through Sezione 1.4.8, «Using vim», please read Bram Moolenaar's "Seven habits of effective text
editing (2000)" to understand how vim
should be
used.
![]() |
Attenzione |
---|---|
Don't try to change the default key bindings without very good reasons. |
The behavior of vim
can be changed significantly by
enabling its internal features through the Ex
-mode
commands such as "set ...
" to set vim options.
These Ex
-mode commands can be included in user's vimrc
file, traditional "~/.vimrc
" or git-friendly
"~/.vim/vimrc
". Here is a very simple example
[2]:
colorscheme murphy " from /usr/share/vim/vim??/colors/*.vim filetype plugin indent on " filetype aware behavior syntax enable " Syntax highlight "set spelllang=en_us " Spell check language as en_us "set spell " Enable spell check set autoindent " Copy indent from current line set smartindent " More than autoindent (Drop/Pop after {/}) set nosmarttab " <Tab>-key always inserts blanks set backspace=indent,eol,start " Back space through everything set laststatus=2 " Always show status line set statusline=%<%f%m%r%h%w%=%y[U+%04B]%2l/%2L=%P,%2c%V
Simple customization to enable secure-modelines and classical IDE can be enabled by installing vim-scripts package and appending the following to user's vimrc file.
packadd! secure-modelines packadd! winmanager let mapleader = ' ' " Toggle paste mode with <SPACE>p set pastetoggle=<leader>p " IDE-like UI for files and buffers with <space>w nnoremap <leader>w :WMToggle<CR> " Use safer keys <SPACE>? for moving to another window nnoremap <leader>h <C-W>h nnoremap <leader>j <C-W>j nnoremap <leader>k <C-W>k nnoremap <leader>l <C-W>l
The new native Vim package system works nicely with "git
"
and "git submodule
". One such example configuration can
be found at my git repository:
dot-vim. This does essentially:
By using "git
" and "git submodule
",
latest external packages, such as
"name
", are placed into
~/.vim/pack/*/opt/name
and similar.
By adding :packadd! name
line to
user's vimrc file, these packages are placed on
runtimepath
.
Vim loads these packages on runtimepath
during its
initialization.
At the end of its initialization, tags for the installed documents are
updated with "helptags ALL
".
For more, please start vim
with "vim
--startuptime vimstart.log
" to check actual execution sequence and
time spent for each step.
Interesting external plugin packages can be found:
Vim - the ubiquitous text editor -- The official upstream site of Vim and vim scripts
VimAwsome -- The listing of Vim plugins
vim-scripts -- Debian package: a collection of vim scripts
It is quite confusing to see too many ways[3] to manage and load these external packages to
vim
. Checking the original information is the best cure.
Tabella 9.3. Information on the initialization of vim
key strokes | information |
---|---|
:help package |
explanation on the vim package mechanism |
:help runtimepath |
explanation on the runtimepath mechanism |
:version |
internal states including candidates for the vimrc file |
:echo $VIM |
the environment variable "$VIM " used to locate the vimrc
file |
:set runtimepath? |
list of directories which will be searched for all runtime support files |
:echo $VIMRUNTIME |
the environment variable "$VIMRUNTIME " used to locate
various system provided runtime support files |
Many traditional programs record their activities in the text file format
under the "/var/log/
" directory.
logrotate
(8) is used to simplify the administration of
log files on a system which generates a lot of log files.
Many new programs record their activities in the binary file format using
systemd-journald
(8) Journal service under the
"/var/log/journal
" directory.
You can log data to the systemd-journald
(8) Journal from
a shell script by using the systemd-cat
(1) command.
Vedere Sezione 3.4, «I messaggi di sistema» e Sezione 3.3, «I messaggi del kernel».
Quelli che seguono sono alcuni analizzatori di registro degni di nota
("~Gsecurity::log-analyzer
" in
aptitude
(8)).
Tabella 9.4. Elenco di analizzatori del registro di sistema
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
logwatch
|
V:14, I:17 | 2276 | analizzatore di registro scritto in Perl con un bell'output |
fail2ban
|
V:109, I:122 | 2092 | strumento per interdire IP che causano errori di autenticazione multipli |
analog
|
V:3, I:104 | 3534 | analizzatore del registro di server web |
awstats
|
V:9, I:13 | 6910 | analizzatore potente e ricco di funzionalità per registro di server web |
sarg
|
V:2, I:2 | 843 | generatore di rapporti sull'analisi di squid |
pflogsumm
|
V:2, I:4 | 111 | strumento per riassunti delle voci di registro di Postfix |
syslog-summary
|
V:0, I:1 | 30 | riassume i contenuti di un file di registro di sistema |
fwlogwatch
|
V:0, I:0 | 478 | 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 | 44 | 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. |
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 |
The default display format of time and date by the "ls
-l
" command depends on the locale (see Sezione 1.2.6, «Orari» for
value). The "$LANG
" variable is referred first and it
can be overridden by the "$LC_TIME
" or
"$LC_ALL
" exported environment variables.
The actual default display format for each locale depends on the version of
the standard C library (the libc6
package) used. I.e.,
different releases of Debian had different defaults. For iso-formats, see
ISO 8601.
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.5. Display examples of time and date for the "ls -l
" command
with the time style value
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 |
---|---|
You can eliminate typing long option on commandline using command alias (see Sezione 1.5.9, «Alias di comandi»): alias ls='ls --time-style=+%d.%m.%y %H:%M' |
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}RED-TEXT${NORMAL} ${REVERSE}REVERSE-TEXT${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.6. Elenco di strumenti di manipolazione di immagini grafiche
pacchetto | popcon | dimensione | screen | comando |
---|---|---|---|---|
gnome-screenshot
|
V:29, I:283 | 1172 | Wayland | screenshot application for GNOME |
flameshot
|
V:6, I:12 | 1722 | Wayland | screenshot application on steroid |
gimp
|
V:63, I:312 | 19729 | Wayland + X | screenshot in GUI menu |
x11-apps
|
V:29, I:469 | 2437 | per X | xwd (1) |
imagemagick
|
I:365 | 220 | per X | import (1) |
scrot
|
V:7, I:77 | 126 | per X | scrot (1) |
There are specialized tools to record changes in configuration files with help of DVCS and to make system snapshots on Btrfs.
Tabella 9.7. List of packages which can record configuration history
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
etckeeper
|
V:27, I:31 | 176 | archivia i file di configurazione ed i loro metadati con Git (predefinito), Mercurial o Bazaar (nuovo) |
timeshift
|
V:2, I:5 | 3142 | system restore utility using rsync or BTRFS snapshots |
snapper
|
V:2, I:3 | 2170 | Linux filesystem snapshot management tool |
You may also think about local script Sezione 10.2.3, «Personal backup» approach.
Le attività dei programmi possono essere monitorare e controllate usando strumenti specializzati.
Tabella 9.8. Elenco di strumenti per monitorare e controllare l'attività dei programmi.
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
coreutils
|
V:892, I:999 | 17372 | nice (1): esegue un programma con priorità di
schedulazione modificata |
bsdutils
|
V:681, I:999 | 402 | renice (1): modifica la priorità di schedulazione di un
processo in esecuzione |
procps
|
V:738, I:999 | 1648 | utilità per il file system "/proc ":
ps (1), top (1),
kill (1), watch (1), … |
psmisc
|
V:407, I:828 | 793 | utilità per il file system "/proc ":
killall (1), fuser (1),
peekfd (1), pstree (1) |
time
|
V:12, I:228 | 129 | time (1): esegue un programma per riportare l'uso delle
risorse di sistema in funzione del tempo |
sysstat
|
V:160, I:183 | 1923 | sar (1), iostat (1),
mpstat (1), …: strumenti per le prestazioni di sistema per
Linux |
isag
|
V:0, I:3 | 117 | Interactive System Activity Grapher (tracciamento interattivo dell'attivita) per sysstat |
lsof
|
V:383, I:945 | 451 | lsof (8): elenca, usando l'opzione
"-p ", i file aperti da un processo in esecuzione |
strace
|
V:15, I:144 | 2367 | strace (1): traccia le chiamate e i segnali di sistema |
ltrace
|
V:1, I:20 | 363 | ltrace (1): traccia le chiamate di libreria |
xtrace
|
V:0, I:0 | 353 | xtrace (1): traccia la comunicazione tra client e server
X11 |
powertop
|
V:11, I:213 | 680 | powertop (1): informazioni sull'uso dell'alimentazione da
parte del sistema |
cron
|
V:796, I:996 | 263 | esegue processi dal demone cron (8) sullo sfondo in base
ad una pianificazione |
anacron
|
V:407, I:482 | 107 | pianificatore di comandi in stile cron, per i sistemi che non sono in esecuzione 24 ore al giorno |
at
|
V:143, I:255 | 161 | 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 some_command >/dev/null real 0m0.035s # time on wall clock (elapsed real time) user 0m0.000s # time in user mode sys 0m0.020s # time in kernel mode
Per controllare la priorità di schedulazione di un processo è usato il valore di nice.
Tabella 9.9. 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 # very nice # nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # very fast
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.10. 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
![]() |
Suggerimento |
---|---|
Use strace-graph script found in /usr/share/doc/strace/examples/ to make a nice tree view |
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 command "$x" ; fi; done
Combinazione di find
(1) e xargs
(1):
find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 command
find
(1) con l'opzione "-exec
" con un
comando:
find . -type f -maxdepth 1 -name '*.ext' -exec command '{}' \;
find
(1) con l'opzione "-exec
" con un
breve script di shell:
find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "command '{}' && echo 'successful'" \;
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
"».
For the graphical user interface
(GUI) compliant to the freedesktop.org standards, the
*.desktop
files in the
/usr/share/applications/
directory provide necessary
attributes for the GUI menu display of each program. Each package which is
compliant to Freedesktop.org's xdg menu system installs its menu data
provided by "*.desktop" under "/usr/share/applications/". Modern desktop
environments which are compliant to Freedesktop.org standard use these data
to generate their menu using the xdg-utils package. See
"/usr/share/doc/xdg-utils/README".
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[fr]=Explorer le 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 |
---|---|
|
![]() |
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.11. Elenco dei segnali usati comunemente con il comando kill
valore del segnale | nome del segnale | azione | note |
---|---|---|---|
0 | --- | no signal is sent (see kill (2)) |
check if process is running |
1 | SIGHUP | terminate the process | disconnected terminal (signal hang up) |
2 | SIGINT | terminate the process | interrupt from keyboard (CTRL-C ) |
3 | SIGQUIT | terminate the process and dump core | quit from keyboard (CTRL-\ ) |
9 | SIGKILL | terminate the process | unblockable kill signal |
15 | SIGTERM | terminate the process | blockable termination signal |
Per pianificare un compito da eseguire una volta soltanto eseguire il
comando at
(1) nel modo seguente.
$ echo 'command -args'| 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).
# use /bin/sh to run commands, no matter what /etc/passwd says SHELL=/bin/sh # mail any output to paul, no matter whose crontab this is MAILTO=paul # Min Hour DayOfMonth Month DayOfWeek command (Day... are OR'ed) # run at 00:05, every day 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # run at 14:15 on the first of every month -- output mailed to paul 15 14 1 * * $HOME/bin/monthly # run at 22:00 on weekdays(1-5), annoy Joe. % for newline, last % for cc: 0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%.%% 23 */2 1 2 * echo "run 23 minutes after 0am, 2am, 4am ..., on Feb 1" 5 4 * * sun echo "run at 04:05 every Sunday" # run at 03:40 on the first Monday of each month 40 3 1-7 * * [ "$(date +%a)" == "Mon" ] && command -args
![]() |
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
" |
Systemd has low level capability to schedule
programs to run without cron
daemon. For example,
/lib/systemd/system/apt-daily.timer
and
/lib/systemd/system/apt-daily.service
set up daily apt
download activities. See systemd.timer
(5) .
Pressing Alt-SysRq (PrtScr) followed by one keys does the magic of rescuing control of the system.
Tabella 9.12. List of notable SAK command keys
tasto premuto dopo Alt-R_Sist | descrizione dell'azione |
---|---|
k |
kill all processes on the current virtual console (SAK) |
s |
sincronizza tutti i file system montati per evitare corruzione di dati |
u |
monta nuovamente tutti i file system in sola letturra (umount) |
r |
ripristina la tastiera dalla modalità raw dopo un crash di X |
See more on Linux kernel user’s and administrator’s guide » Linux Magic System Request Key Hacks
![]() |
Suggerimento |
---|---|
Si può usare la funzione Alt-R_Sist da un terminale SSH, ecc. scrivendo su
" |
The current (2021) Debian amd64 Linux kernel has
/proc/sys/kernel/sysrq=438=0b110110110
:
2 = 0x2 - enable control of console logging level (ON)
4 = 0x4 - enable control of keyboard (SAK, unraw) (ON)
8 = 0x8 - enable debugging dumps of processes etc. (OFF)
16 = 0x10 - enable sync command (ON)
32 = 0x20 - enable remount read-only (ON)
64 = 0x40 - enable signaling of processes (term, kill, oom-kill) (OFF)
128 = 0x80 - allow reboot/poweroff (ON)
256 = 0x100 - allow nicing of all RT tasks (ON)
Si può controllare chi è connesso al sistema nei modi seguenti.
who
(1) shows who is logged on.
w
(1) shows who is logged on and what they are doing.
last
(1) shows listing of last logged in user.
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 "We are shutting down in 1 hour" | 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.13. Elenco di strumenti per l'identificazione dell'hardware
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
pciutils
|
V:208, I:991 | 196 | utilità PCI Linux: lspci (8) |
usbutils
|
V:73, I:862 | 325 | utilità Linux USB: lsusb (8) |
nvme-cli
|
V:4, I:11 | 779 | NVMe utilities for Linux: nvme (1) |
pcmciautils
|
V:10, I:17 | 97 | utilità PCMCIA per Linux: pccardctl (8) |
scsitools
|
V:0, I:3 | 375 | raccosta di strumenti per la gestione dell'hardware
SCSI:lsscsi (8) |
procinfo
|
V:0, I:12 | 136 | informazioni sul sistema ottenute da "/proc ":
lsdev (8) |
lshw
|
V:12, I:94 | 906 | informazioni sulla configurazione hardware: lshw (1) |
discover
|
V:37, I:951 | 97 | 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.14. Elenco di strumenti di configurazione dell'hardware
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
console-setup
|
V:106, I:963 | 420 | utilità Linux per i tipi di carattere e la mappa di tastiera in console |
x11-xserver-utils
|
V:292, I:530 | 570 | utilità del server X: xset (1),
xmodmap (1) |
acpid
|
V:124, I:258 | 169 | demone per gestire eventi inviati dall'ACPI (Advanced Configuration and Power Interface, interfaccia avanzata per configurazione ed energia) |
acpi
|
V:14, I:243 | 45 | utilità per mostrare informazioni sui device ACPI |
sleepd
|
V:0, I:0 | 86 | demone per sospendere un portatile durante l'inattività |
hdparm
|
V:343, I:610 | 256 | ottimizzazione degli accessi al disco fisso (vedere Sezione 9.6.9, «Ottimizzare il disco rigido») |
smartmontools
|
V:164, I:224 | 2117 | controllo e monitoraggio dei sistemi di archiviazione usando S.M.A.R.T. |
setserial
|
V:4, I:8 | 117 | raccolta di strumenti per la gestione delle porte seriali |
memtest86+
|
V:1, I:26 | 2391 | raccolta di strumenti per la gestione di hardware di memoria |
scsitools
|
V:0, I:3 | 375 | 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 MMDDhhmmCCYY # 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).
If the hardware time is set to UTC, change the setting to
"UTC=yes
" in the "/etc/default/rcS
".
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 |
---|---|
|
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).
Application softwares may be configured not only to access sound devices directly but also to access them via some standardized sound server system. Currently, PulseAudio, JACK, and PipeWire are used as sound server system. See Debian wiki page on Sound for the latest situation.
Normalmente esiste un motore audio comune per ciascun ambiente desktop. Ciascun motore audio usato dalle applicazioni può scegliere di connettersi a diversi server audio.
![]() |
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. |
Tabella 9.15. Elenco di pacchetti relativi all'audio
Per disabilitare il salvaschermo usare i comandi seguenti.
Tabella 9.16. 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.17. 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.18. Elenco di strumenti per verificare la sicurezza e l'integrità del sistema
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
logcheck
|
V:8, I:9 | 102 | demone per inviare via posta anomalie nei file di registro di sistema all'amministratore |
debsums
|
V:5, I:41 | 108 | utilità per controllare i file dei pacchetti installati con le somme di controllo MD5 |
chkrootkit
|
V:5, I:22 | 972 | rilevatore di rootkit |
clamav
|
V:12, I:53 | 776 | utilità anti-virus per Unix - interfaccia a riga di comando |
tiger
|
V:2, I:3 | 7822 | riporta vulnerabilità nella sicurezza di sistema |
tripwire
|
V:2, I:3 | 11701 | strumento di controllo dell'integrità di file e directory |
john
|
V:2, I:11 | 460 | strumento di violazione delle password attive |
aide
|
V:1, I:1 | 2049 | 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 | 152 | 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.
You may need to umount
(8) some devices manually from the
command line before operating on them if they are automatically mounted by
the GUI desktop system.
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 |
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.
Older PCs use the classic Master Boot Record (MBR) scheme to hold disk partitioning data in the first sector, i.e., LBA sector 0 (512 bytes).
Recent PCs with Unified Extensible Firmware Interface (UEFI), including Intel-based Macs, use GUID Partition Table (GPT) scheme to hold disk partitioning data not in the first sector.
Sebbene fdisk
(8) sia stato lo strumento standard per il
partizionamento dei dischi, parted
(8) lo sta sostituendo.
Tabella 9.19. Elenco di pacchetti di gestione delle partizioni dei dischi
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
util-linux
|
V:884, I:999 | 4843 | utilità di sistema varie inclusi fdisk (8) e
cfdisk (8) |
parted
|
V:365, I:562 | 307 | programma GNU Parted per il ridimensionamento delle partizioni dei dischi |
gparted
|
V:16, I:121 | 2063 | editor delle partizioni di GNOME basato su libparted |
gdisk
|
V:321, I:518 | 874 | partition editor for the GPT/MBR hybrid disk |
kpartx
|
V:19, I:32 | 88 | programma per creare la mappatura a device per le partizioni |
![]() |
Attenzione |
---|---|
Sebbene |
![]() |
Nota |
---|---|
Per poter commutare tra GPT e MBR, è necessario cancellare direttamente i primi pochi
blocchi del contenuto del disco (vedere Sezione 9.8.6, «Pulire il contenuto di file») e usare " |
Although reconfiguration of your partition or activation order of removable storage media may yield different names for partitions, you can access them consistently. This is also helpful if you have multiple disks and your BIOS/UEFI doesn't give them consistent device names.
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 You can also probe it and other information with " |
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.20. Elenco di pacchetti di gestione dei file system
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
e2fsprogs
|
V:601, I:999 | 1529 | utilità per i file system ext2/ext3/ext4 |
btrfs-progs
|
V:38, I:67 | 4183 | utilità per i file system Btrfs |
reiserfsprogs
|
V:9, I:28 | 1132 | utilità per i file system Reiserfs |
zfsutils-linux
|
V:19, I:24 | 1499 | utilities for the OpenZFS filesystem |
dosfstools
|
V:138, I:524 | 315 | utilità per i file system FAT (Microsoft: MS-DOS, Windows) |
exfatprogs
|
V:1, I:24 | 171 | utilities for the exFAT filesystem maintained by Samsung. |
exfat-fuse
|
V:21, I:426 | 71 | read/write exFAT filesystem (Microsoft) driver for FUSE. |
exfat-utils
|
V:18, I:423 | 231 | utilities for the exFAT filesystem maintained by the exfat-fuse author. |
xfsprogs
|
V:20, I:99 | 3311 | utilità per i file system XFS (SGI: IRIX) |
ntfs-3g
|
V:129, I:509 | 1482 | read/write NTFS filesystem (Microsoft: Windows NT, …) driver for FUSE. |
jfsutils
|
V:1, I:11 | 1577 | utilità per i file system JFS (IBM: AIX, OS/2) |
reiser4progs
|
V:0, I:3 | 1373 | utilità per i file system Reiser4 |
hfsprogs
|
V:0, I:7 | 389 | utilità per i file system HFS e HFS Plus (Apple: Mac OS) |
zerofree
|
V:3, I:106 | 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. Btrfs status can be found at Debian wiki on btrfs and kernel.org wiki on btrfs. It is expected to be the next default filesystem after the ext4 filesystem. Alcuni strumenti permettono l'accesso a file system non supportati del kernel Linux (vedere Sezione 9.8.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 Per vedere i risultati del comando |
La configurazione statica di base del file system è fornita da
«/etc/fstab
». Ad esempio,
«file system» «mount point» «type» «options» «dump» «pass» proc /proc proc defaults 0 0 UUID=709cbe4c-80c1-56db-8ab1-dbce3146d2f7 / ext4 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.6.3, «Accedere alle partizioni usando UUID») invece del normale nome di
device a blocchi quale « |
Since Linux 2.6.30, the kernel defaults to the behavior provided by
"relatime
" option.
See fstab
(5) and mount
(8).
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 |
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
".
Solid state drive (SSD) is auto detected now.
Reduce unnecessary disk accesses to prevent disk wear out by mounting
"tmpfs
" on volatile data path in
/etc/fstab
.
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
".
restart the smartd
(8) daemon by "sudo systemctl
restart smartmontools
".
![]() |
Suggerimento |
---|---|
Il demone |
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 work-dir old-dir $ sudo mkfs.ext4 /dev/sdx $ sudo mount -t ext4 /dev/sdx work-dir $ sudo cp -a old-dir/* work-dir $ sudo rm -rf old-dir
![]() |
Suggerimento |
---|---|
In alternativa si può montare un file immagine vuoto del disco (vedere Sezione 9.7.5, «Creare un file con immagine di disco vuoto») come device loop (vedere Sezione 9.7.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 /path/to/emp-dir work-dir
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=/path/to/old-dir,upperdir=/path/to/empty,workdir=/path/to/work
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 work-dir old-dir $ sudo mkdir -p /path/to/emp-dir $ sudo ln -sf /path/to/emp-dir work-dir $ sudo cp -a old-dir/* work-dir $ sudo rm -rf old-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 disk.img # dd if=/dev/sdb of=disk.img
Si può creare l'immagine del disco del MBR (master boot record) dei PC
tradizionali (vedere Sezione 9.6.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=disk.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=partition.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 partition.img Loop device is /dev/loop0 # mkdir -p /mnt/loop0 # mount -t auto /dev/loop0 /mnt/loop0 ...hack...hack...hack # umount /dev/loop0 # losetup -d /dev/loop0
Questo può essere semplificato nel modo seguente.
# mkdir -p /mnt/loop0 # mount -t auto -o loop partition.img /mnt/loop0 ...hack...hack...hack # umount partition.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 # verify kernel capability max_part:Maximum number of partitions per loop device max_loop:Maximum number of loop devices # losetup -a # verify nothing using the loop device # rmmod loop # modprobe loop max_part=16
Ora il device loop può gestire fino a 16 partizioni.
# losetup -v -f disk.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 ...hack...hack...hack # 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 disk.img ... # mkdir -p /mnt/loop0p2 # mount -t ext4 /dev/mapper/loop0p2 /mnt/loop0p2 ... ...hack...hack...hack # 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 old; mkdir new # mount -t auto -o loop disk.img old # dd bs=1 count=0 if=/dev/zero of=new.img seek=5G # mount -t auto -o loop new.img new # cd old # cp -a --sparse=always ./ ../new/ # cd .. # umount new.img # umount disk.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 disk.img Loop device is /dev/loop3 # zerofree /dev/loop3 # cp --sparse=always disk.img new.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=disk.img seek=5G
Instead of using dd
(1), specialized
fallocate
(8) may be used here.
È possibile creare un file system ext4 in questa immagine di disco,
"disco.img
" usando il device
loop nel modo seguente.
# losetup -f -v disk.img Loop device is /dev/loop1 # mkfs.ext4 /dev/loop1 ...hack...hack...hack # losetup -d /dev/loop1 $ du --apparent-size -h disk.img 5.0G disk.img $ du -h disk.img 83M disk.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.7.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 volume_id -o cd.iso source_directory
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 volume_id \ -b isolinux/isolinux.bin -c isolinux/boot.cat \ -no-emul-boot -boot-load-size 4 -boot-info-table source_directory
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 |
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
|
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.21. Elenco di pacchetti che visualizzano e modificano dati binari
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
coreutils
|
V:892, I:999 | 17372 | pacchetto base che contiene od (1) per fare il dump di
file (HEX, ASCII, OCTAL, …) |
bsdmainutils
|
V:36, I:762 | 27 | pacchetto di utilità che contiene hd (1) per fare il dump
di file (HEX, ASCII, OCTAL, …) |
hexedit
|
V:1, I:11 | 73 | visualizzatore ed editor binario (HEX, ASCII) |
bless
|
V:0, I:3 | 1028 | editor esadecimale completo (GNOME) |
okteta
|
V:1, I:13 | 1505 | 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.23. Elenco di strumenti per aggiungere dati ridondanti a file
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
par2
|
V:9, I:50 | 271 | insiemi di volumi di archivi di parità, per controllare e riparare file |
dvdisaster
|
V:0, I:2 | 1742 | protezione contro perdita di dati/graffi/invecchiamento di supporti CD/DVD |
dvbackup
|
I:0 | 413 | strumento di backup che usa camcorder MiniDV (fornisce
rsbep (1)) |
Esistono strumenti per recuperare file dati e fare analisi forensi.
Tabella 9.24. Elenco di pacchetti per recupero di file dati ed analisi forensi.
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
testdisk
|
V:3, I:35 | 1430 | utilità per scansione delle partizione e ripristino di dischi |
magicrescue
|
V:0, I:3 | 259 | 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 | 83 | recupera dati da dischi fissi danneggiati |
extundelete
|
V:0, I:10 | 147 | utilità per decancellare file da file system ext3/4 |
ext4magic
|
V:0, I:5 | 233 | utilità per decancellare file da file system ext3/4 |
ext3grep
|
V:0, I:3 | 293 | strumento per aiutare a recuperare file cancellati da file system ext3 |
scrounge-ntfs
|
V:0, I:3 | 50 | programma di recupero di dati da file system NTFS |
gzrt
|
V:0, I:0 | 33 | insieme di strumenti di recupero di gzip |
sleuthkit
|
V:2, I:25 | 1602 | strumenti per analisi forensi (Sleuthkit) |
autopsy
|
V:0, I:1 | 1027 | interfaccia grafica per SleuthKit |
foremost
|
V:0, I:6 | 101 | applicazione forense per il recupero dei dati |
guymager
|
V:0, I:1 | 1035 | strumento forense per immagini basato su Qt |
dcfldd
|
V:0, I:4 | 106 | 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 large_file $ cat x* >large_file
![]() |
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_to_be_cleared
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 $ : > alwayszero.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 |
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
You may alternatively use badblocks
(8) with -t
random
option.
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/foo # cd /mnt/foo # dd if=/dev/zero of=junk dd: writing to `junk': 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 foo > bar $ less bar $ ps aux | grep ' less[ ]' bozo 4775 0.0 0.0 92200 884 pts/8 S+ 00:18 0:00 less bar $ rm bar $ ls -l /proc/4775/fd | grep bar lr-x------ 1 bozo bozo 64 2008-05-09 00:19 4 -> /home/bozo/bar (deleted) $ cat /proc/4775/fd/4 >bar $ ls -l -rw-r--r-- 1 bozo bozo 4 2008-05-09 00:25 bar $ cat bar foo
Quando si ha il pacchetto lsof
installato, eseguire in un
altro terminale quanto segue.
$ ls -li bar 2228329 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:02 bar $ lsof |grep bar|grep less less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar $ rm bar $ lsof |grep bar|grep less less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar (deleted) $ cat /proc/4775/fd/4 >bar $ ls -li bar 2228302 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:05 bar $ cat bar foo
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 bar 2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 baz 2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 foo
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 /path/to/mount/point -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.6.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 facilitates automatic data encryption via native Linux kernel modules with minimal user efforts using device-mapper.
Tabella 9.25. Elenco di utilità per la cifratura dei dati
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
cryptsetup
|
V:21, I:78 | 444 | utilità per device a blocchi cifrati (dm-crypt / LUKS) |
cryptmount
|
V:3, I:4 | 228 | utilità per device a blocchi cifrati (dm-crypt / LUKS) con particolare attenzione al montaggio/smontaggio da parte di utenti normali |
fscrypt
|
V:0, I:1 | 4316 | utilities for Linux filesystem encryption (fscrypt) |
libpam-fscrypt
|
V:0, I:0 | 4411 | PAM module for Linux filesystem encryption (fscrypt) |
![]() |
Attenzione |
---|---|
Data encryption costs CPU time etc. Encrypted data becomes inaccessible if its password is lost. Please weigh its benefits and costs. |
![]() |
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.
# fdisk /dev/sdx ... "n" "p" "1" "return" "return" "w" # cryptsetup luksFormat /dev/sdx1 ... # cryptsetup open /dev/sdx1 secret ... # ls -l /dev/mapper/ total 0 crw-rw---- 1 root root 10, 60 2021-10-04 18:44 control lrwxrwxrwx 1 root root 7 2021-10-04 23:55 secret -> ../dm-0 # mkfs.vfat /dev/mapper/secret ... # cryptsetup close secret
Then, it can be mounted just like normal one on to
"/media/username/disk_label
", except
for asking password (see Sezione 10.1.7, «Supporti di archiviazione removibili») under
modern desktop environment using the udisks2
package.
The difference is that every data written to it is encrypted. The password
entry may be automated using keyring (see Sezione 10.3.6, «Password keyring»).
You may alternatively format media in different filesystem, e.g., ext4 with
"mkfs.ext4 /dev/mapper/sdx1
". If btrfs is used instead,
the udisks2-btrfs
package needs to be installed. For
these filesystems, the file ownership and permissions may need to be
configured.
For example, an encrypted disk partition created with dm-crypt/LUKS on
"/dev/sdc5
" by Debian Installer can be mounted onto
"/mnt
" as follows:
$ 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
Debian distribuisce, per le architetture supportate, kernel Linux modulari contenuti in pacchetti.
If you are reading this documentation, you probably don't need to compile Linux kernel by yourself.
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.7.3, «Montare un file con un'immagine di disco»)
See "The Linux kernel user’s and administrator’s guide » The kernel’s command-line parameters" for the detail.
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 |
---|---|
For compiling some kernel-specific programs such as the kernel modules from
the external source and the automounter daemon ( |
Debian ha un proprio metodo di compilazione del kernel e dei moduli relativi.
Tabella 9.26. Elenco di pacchetti chiave da installare per la ricompilazione del kernel in un sistema Debian
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
build-essential
|
I:492 | 20 | pacchetti essenziali per compilare pacchetti Debian:
make , gcc , … |
bzip2
|
V:161, I:974 | 122 | utilità di compressione e decompressione per file bz2 |
libncurses5-dev
|
I:105 | 6 | librerie di sviluppo e documentazione per ncurses |
git
|
V:318, I:498 | 36744 | git: sistema distribuito di controllo delle revisioni usato dal kernel Linux |
fakeroot
|
V:32, I:510 | 228 | fornisce un ambiente fakeroot per compilare pacchetti da utente non root |
initramfs-tools
|
V:347, I:990 | 112 | strumento per compilare un initramfs (specifico di Debian) |
dkms
|
V:47, I:200 | 293 | DKMS (Dynamic Kernel Module Support, supporto dinamico per i noduli del kernel) (generico) |
module-assistant
|
V:1, I:29 | 391 | helper tool to make module package (Debian specific) |
devscripts
|
V:8, I:51 | 2672 | 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
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
The hardware driver is the code running on the main CPUs of the target
system. Most hardware drivers are available as free software now and are
included in the normal Debian kernel packages in the main
area.
The firmware is the code or data loaded on the device attach to the target system (e.g., CPU microcode, rendering code running on GPU, or FPGA / CPLD data, …). Some firmware packages are available as free software but many firmware packages are not available as free software since they contain sourceless binary data. Installing these firmware data is essential for the device to function as expected.
The firmware data packages containing data loaded to the volatile memory on the target device.
firmware-linux-free (main
)
firmware-linux-nonfree (non-free
)
firmware-linux-* (non-free
)
*-firmware (non-free
)
intel-microcode (non-free
)
amd64-microcode (non-free
)
The firmware update program packages which update data on the non-volatile memory on the target device.
fwupd (main
): Firmware
update daemon which downloads firmware data from Linux Vendor Firmware Service.
gnome-firmware (main
): GTK front end for fwupd
plasma-discover-backend-fwupd (main
): Qt front end for
fwupd
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».
Please also note that the firmware data downloaded by fwupd from Linux Vendor Firmware Service and
loaded to the running Linux kernel may be non-free
.
L'uso di sistemi virtualizzati permette di eseguire più istanze di un sistema simultaneamente su un singolo hardware.
![]() |
Suggerimento |
---|---|
There are several virtualization and emulation tool platforms.
Complete hardware emulation packages such as ones installed by the games-emulator metapackage
Mostly CPU level emulation with some I/O device emulations such as QEMU
Mostly CPU level virtualization with some I/O device emulations such as Kernel-based Virtual Machine (KVM)
OS level container virtualization with the kernel level support such as LXC (Linux Containers), Docker, ...
OS level filesystem access virtualization with the system library call override on the file path such as chroot
OS level filesystem access virtualization with the system library call override on the file ownership such as fakeroot
OS API emulation such as Wine
Interpreter level virtualization with its executable selection and run-time library overrides such as virtualenv and venv for Python
The container virtualization uses Sezione 4.7.4, «Linux security features» and it is the backend technology of Sezione 7.6, «Sandbox».
Here are some packages to help you to setup the virtualized system.
Tabella 9.27. Elenco di strumenti di virtualizzazione
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
schroot
|
V:7, I:9 | 2708 | strumento specializzato per eseguire pacchetti Debian binari in chroot |
sbuild
|
V:1, I:4 | 271 | strumento per compilare pacchetti Debian binari da sorgenti Debian |
debootstrap
|
V:5, I:61 | 308 | avviare un sistema Debian base (scritto in sh) |
cdebootstrap
|
V:0, I:2 | 116 | avviare un sistema Debian (scritto in C) |
virt-manager
|
V:11, I:42 | 2298 | Virtual Machine Manager: applicazione desktop per gestire macchine virtuali |
libvirt-clients
|
V:43, I:62 | 1185 | programmi per la libreria libvirt |
games-emulator
|
I:0 | 26 | games-emulator: Debian's emulators for games |
bochs
|
V:0, I:1 | 6999 | Bochs: emulatore PC IA-32 |
qemu
|
I:29 | 100 | QEMU: veloce emulatore generico di processore |
qemu-system
|
I:21 | 101 | QEMU: binari per emulazione completa del sistema |
qemu-user
|
V:0, I:10 | 106589 | QEMU: binari per emulazione in spazio utente |
qemu-utils
|
V:12, I:105 | 6471 | QEMU: utilità |
qemu-kvm
|
V:5, I:37 | 107 | KVM: virtualizzazione completa su hardware x86 convirtualizzazione assistita da hardware |
virtualbox
|
V:11, I:14 | 106967 | VirtualBox: soluzione per virtualizzazione i dx86 su i386 e amd64 |
xen-tools
|
V:0, I:3 | 727 | strumenti per gestire server virtuali XEN Debian |
wine
|
V:17, I:73 | 191 | Wine: implementazione della API Windows (suite standard) |
dosbox
|
V:2, I:17 | 2718 | DOSBox: emulatore x86 con grafica Tandy/Herc/CGA/EGA/VGA/SVGA, suono e DOS |
lxc
|
V:10, I:14 | 21166 | strumenti in spazio utente per contenitori Linux containers |
python3-venv
|
I:52 | 6 | venv for creating virtual python environments (system library) |
python3-virtualenv
|
V:9, I:59 | 415 | virtualenv for creating isolated virtual python environments |
pipx
|
V:0, I:1 | 885 | pipx for installing python applications in isolated environments |
Vedere l'articolo di Wikipedia Comparison of platform virtual machines per una comparazione dettagliata di diverse soluzioni per la virtualizzazione di piattaforme.
![]() |
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.7.1, «Creare un file con un'immagine di disco» e Sezione 9.7.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.7.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.11.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.11.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.7, «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.7.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
" |
If you wish to try a new Debian environment from a terminal console, I
recommend you to use chroot. This enables you
to run console applications of Debian unstable
and
testing
without usual risks associated and without
rebooting. chroot
(8) is the most basic way.
![]() |
Attenzione |
---|---|
Examples below assumes both parent system and chroot system share the same
|
Although you can manually create a chroot
(8) environment
using debootstrap
(1). But this requires non-trivial
efforts.
The sbuild package to build Debian packages
from source uses the chroot environment managed by the schroot package. It comes with helper script
sbuild-createchroot
(1). Let's learn how it works by
running it under script
(1) as follows.
$ sudo mkdir -p /srv/chroot $ sudo sbuild-createchroot -v --include=eatmydata,ccache unstable /srv/chroot/unstable-amd64-sbuild http://deb.debian.org/debian
You see how debootstrap
(8) populates system data for
unstable
environment under
"/srv/chroot/unstable-amd64-sbuild
" for a minimal build
system.
You can login to this environment using schroot
(1).
$ sudo schroot -v -c chroot:unstable-amd64-sbuild
You see how a system shell running under unstable
environment is created.
![]() |
Nota |
---|---|
The " |
![]() |
Nota |
---|---|
Some programs under chroot may require access to more files from the parent
system to function than |
![]() |
Suggerimento |
---|---|
The |
If you wish to try a new GUI Desktop environment of any OS, I recommend you
to use QEMU, KVM, or
VirtualBox on a Debian
stable
system to run multiple desktop systems safely
using virtualization. These enable
you to run any desktop applications including ones of Debian
unstable
and testing
without usual
risks associated with them and without rebooting. The configuration of
these tools are relatively straight forward.
Since pure QEMU is very slow, it is recommended to accelerate it with KVM when the host system supports it.
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. |
[2] More elaborate customization examples: "Vim Galore", "sensible.vim", "#vim Recommendations" ...
[3] vim-pathogen was popular.