Índice
Aqui, descrevo dicas básicas para configurar e gerir sistemas, a maioria a partir da consola.
O screen(1) é uma ferramenta muito útil para se aceder a sites remotos via ligações não confiáveis e intermitentes porque suporta interrupções nas ligações de rede.
Tabela 9.1. Lista de programas para suportar ligações à rede interrompidas
pacote | popcon | tamanho | descrição |
---|---|---|---|
screen
|
V:127, I:281 | 1013 | terminal multiplexador com emulação de terminal VT100/ANSI |
tmux
|
V:34, I:136 | 830 | multiplexador alternativo de terminal (Use "Control-B" em vez disto) |
O screen(1) não apenas permite que uma janela terminal funcione com múltiplos processos, mas também permite que os processos de shell remota sobrevivam a ligações interrompidas. Aqui está um cenário típico de utilização do screen(1).
Faz login numa máquina remota.
Arranca o screen
numa consola única.
Executa múltiplos programas na janela criada do screen
com ^A c
("Ctrl-A" seguido de "c").
Muda entre as múltiplas janelas do screen
com ^A
n
("Ctrl-A" seguido de "n").
Subitamente precisa de abandonar o seu terminal, mas não quer perder o seu trabalho ativo a manter a ligação.
Pode separar a sessão do
screen
por quaisquer métodos.
Desligar a sua ligação de rede à bruta
Escrever ^A d
("Ctrl-A" seguido de "d") e manualmente
terminar a sessão da ligação remota
Escrever ^A DD
("Ctrl-A" seguido de "DD") para separar o
screen
e terminar a sua sessão
Faz login de novo à mesma máquina remota (mesmo a partir de um terminal diferente).
Inicia o screen
como "screen -r
".
O screen
magicamente reagrupa todas as janelas screen
anteriores com todos os programas a funcionar activamente.
![]() |
Dica |
---|---|
Pode poupar despesas de ligação com o |
Numa sessão do screen
, todas as entradas do teclado são
enviadas à sua janela atual excepto as teclas de comandos. Todas as teclas
de comando do screen
são inseridas ao escrever
^A
("Control-A") mais uma única tecla [mais quaisquer
parâmetros]. Aqui estão alguns importantes para fazer lembrar.
Tabela 9.2. Lista de ligações de teclas para o screen
tecla de atalho | significado |
---|---|
^A ?
|
mostra um écran de ajuda (mostra as teclas de atalho) |
^A c
|
cria uma nova janela e muda para lá |
^A n
|
vai à janela seguinte |
^A p
|
vai à janela anterior |
^A 0
|
vaia à janela número 0 |
^A 1
|
vai à janela número 1 |
^A w
|
mostra uma lista de janelas |
^A a
|
envia Ctrl-A à janela atual como entrada do teclado |
^A h
|
escreve uma cópia física da janela atual para um ficheiro |
^A H
|
inicia/termina o registo da janela atual para um ficheiro |
^A ^X
|
bloqueia o terminal (protegido por palavra-passe) |
^A d
|
separa a sessão do ecrã do terminal |
^A DD
|
separa a sessão do ecrã e termina a sessão |
Veja screen(1) para detalhes.
Muitos programas registam as suas atividades sob o diretório
"/var/log/
".
O daemon de log do sistema: rsyslogd(8)
Veja Secção 3.2.5, “A mensagem do sistema” e Secção 3.2.4, “A mensagem do kernel”.
Aqui estão analisadores de relatórios notáveis
("~Gsecurity::log-analyzer
" no
aptitude(8)).
Tabela 9.3. Lista de analisadores de log do sistema
pacote | popcon | tamanho | descrição |
---|---|---|---|
logwatch
|
V:16, I:18 | 2265 | analisador de log com saída bonita escrito em Perl |
fail2ban
|
V:112, I:123 | 2092 | banir IPs que causam vários erros de autenticação |
analog
|
V:4, I:109 | 3534 | analisador de log do servidor web |
awstats
|
V:9, I:15 | 6910 | analisador de logs de servidor web poderoso e cheio de funcionalidades |
sarg
|
V:3, I:3 | 843 | gerador de relatórios de análises do squid |
pflogsumm
|
V:1, I:4 | 111 | resumidor de entradas do relatório do Postfix |
syslog-summary
|
V:0, I:2 | 30 | resume o conteúdo do um ficheiro de log do syslog |
fwlogwatch
|
V:0, I:0 | 479 | analisador de log da firewall |
squidview
|
V:0, I:1 | 189 | monitoriza e analisa ficheiros access.log do squid |
swatch
|
V:0, I:0 | 101 | visualizador de ficheiros de registo com correspondência de expressões regulares, destaque e hooks |
crm114
|
V:0, I:0 | 1119 | Mutilador de Expressões Regulares Controlável e Filtro de Spam (CRM114) |
icmpinfo
|
V:0, I:0 | 44 | interpretar mensagens ICMP |
![]() |
Nota |
---|---|
CRM114 disponibiliza uma infraestrutura de linguagem para escrever filtros fuzzy com a biblioteca de expressões regulares TRE. O uso popular dela é o filtro de spam de mail, mas pode ser usado como um analisador de registos. |
O uso simples de script(1) (veja Secção 1.4.9, “Gravar as atividades da shell”) para gravar a atividade da shell produz um ficheiro com caracteres de controle. Isto pode ser evitado ao usar o col(1) como o seguinte.
$ script Script iniciado, ficheiro é typescript
Faça o que tem a fazer ... e carregue em Ctrl-D
para
terminar o script
.
$ col -bx <typescript >ficheiro_limpo $ vim ficheiro_limpo
Se não tem o script
(por exemplo, durante o processo de
arranque no initramfs), então use antes o seguinte.
$ sh -i 2>&1 | tee typescript
![]() |
Dica |
---|---|
Alguns |
![]() |
Dica |
---|---|
Pode usar o
screen(1)
com " |
![]() |
Dica |
---|---|
Pode usar o
emacs(1)
com " |
Apesar de ferramentas paginadoras com o more(1) e less(1) (veja Secção 1.4.5, “O pager”) e ferramentas personalizadas para destaque e formatação (veja Secção 11.1.8, “Destacar e formatar dados de texto simples”) poderem mostrar dados de texto muito bem, os editores de objetivos gerais (veja Secção 1.4.6, “O editor de texto”) são mais versáteis e personalizáveis.
![]() |
Dica |
---|---|
Para o
vim(1)
e o aliás de modo paginador dele
view(1),
" |
O formato de amostragem predefinido da hora e data pelo comando "ls
-l
" depende do locale (veja
Secção 1.2.6, “Marcas temporais (Timestamps)” para o valor). A variável
"$LANG
" é referida primeiro e pode ser sobreposta pela
variável "$LC_TIME
".
O formato mostrado predefinido atual para cada locale depende da versão da
biblioteca C standard (o pacote libc6
) usada. Isto é,
lançamentos diferentes de Debian tiveram diferentes predefinições.
Se deseja realmente personalizar este formato de amostragem da hora e data
para além do locale, deve definir o
valor de estilo de hora com o argumento
"--time-style
" ou com o valor
"$TIME_STYLE
" (veja
ls(1),
date(1),
"info coreutils 'ls invocation'
").
Tabela 9.4. Mostrar exemplos de hora e data para o comando "ls -l
"
para wheezy
valor do estilo de hora | localização | mostra a hora e data |
---|---|---|
iso
|
qualquer |
01-19 00:15
|
long-iso
|
qualquer |
2009-01-19 00:15
|
full-iso
|
qualquer |
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
|
qualquer |
19.01.09 00:15
|
+%d.%b.%y %H:%M
|
C ou en_US.UTF-8
|
19.Jan.09 00:15
|
+%d.%b.%y %H:%M
|
es_ES.UTF-8
|
19.ene.09 00:15
|
![]() |
Dica |
---|---|
Pode eliminar a escrita de opções longas na linha de comandos a usar nomes
alternativos de comandos, ex. " |
![]() |
Dica |
---|---|
ISO 8601 é seguido por estes formatos iso. |
A escrita da shell nos terminais mais modernos pode ser colorida a usar
código de escape de ANSI (veja
"/usr/share/doc/xterm/ctlseqs.txt.gz
").
Por exemplo, tente o seguinte:
$ RED=$(printf "\x1b[31m") $ NORMAL=$(printf "\x1b[0m") $ REVERSE=$(printf "\x1b[7m") $ echo "${RED}RED-TEXT${NORMAL} ${REVERSE}REVERSE-TEXT${NORMAL}"
Comandos coloridos são úteis para inspeccionar os seus resultados no
ambiente interativo. Incluí o seguinte no meu
"~/.bashrc
".
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
O uso de alias limita os efeitos coloridos da utilização interactiva do
comando. Tem vantagem sobre exportar a variável de ambiente "export
GREP_OPTIONS='--color=auto'
" porque a cor pode ser vista sob
programas paginadores como o
less(1).
Se deseja suprimir a cor quando canaliza (pipe) para outros programas, use
antes "--color=auto
" no exemplo em cima para
"~/.bashrc
".
![]() |
Dica |
---|---|
Pode desligar estes nomes alternativos coloridos no ambiente interativo ao
invocar a shell com " |
Pode recordar as atividades do editor para repetições complexas.
Para o Vim, como a seguir.
"qa
": inicia a gravação de caracteres teclados no registo
nomeado "a
".
... atividades do editor
"q
": termina a gravação de caracteres escritos.
"@a
": executa o conteúdo do registo
"a
".
Para Emacs, como a seguir.
"C-x (
": começa a definir uma macro de teclado.
... atividades do editor
"C-x )
": termina de definir uma macro de teclado.
"C-x e
": executa uma macro de teclado.
Existem algumas maneiras de gravar a imagem gráfica de uma aplicação X, a
incluir um ecrã xterm
.
Tabela 9.5. Lista de ferramentas gráficas de manipulação de imagens
pacote | popcon | tamanho | comando |
---|---|---|---|
xbase-clients
|
I:26 | 46 | xwd(1) |
gimp
|
V:68, I:341 | 22313 | Menu GUI |
imagemagick
|
I:400 | 218 | import(1) |
scrot
|
V:8, I:80 | 70 | scrot(1) |
Existem ferramentas especializadas para gravar alterações em ficheiros de configuração com a ajuda do sistema DVCS.
Tabela 9.6. Lista de pacotes para gravar histórico de configuração em VCS
pacote | popcon | tamanho | descrição |
---|---|---|---|
etckeeper
|
V:27, I:32 | 162 | armazenar ficheiros de configuração e os seus meta-dados com Git (predefinido), Mercurial, ou Bazaar (novo) |
changetrack
|
V:0, I:0 | 71 | armazenar ficheiros de configuração com RCS (antigo) |
Recomendo usar o pacote etckeeper
com o
git(1)
o qual põe o "/etc
" inteiro sob controle de VCS. O guia
de instalação e tutorial dele encontram-se em
"/usr/share/doc/etckeeper/README.gz
".
Essencialmente , executar "sudo etckeeper init
"
inicializa o repositório git para "/etc
" tal como o
processo explicado em Secção 10.6.5, “Git para gravar o histórico de configuração” mas com scripts hook
especiais para configurações mais cuidadosas.
Conforme muda a sua configuração, pode usar o git(1) normalmente para gravá-la. Ele também grava as alterações automaticamente de todas as vezes que executa comandos de gestão de pacote.
![]() |
Dica |
---|---|
Pode explorar o histórico de alterações de " |
As atividades de programas podem ser monitorizadas e controladas a usar ferramentas especiais.
Tabela 9.7. Lista de ferramentas para monitorizar e controlar as atividades de programas
pacote | popcon | tamanho | descrição |
---|---|---|---|
coreutils
|
V:891, I:999 | 17478 | nice(1): correr um programa com prioridade de agendamento modificada |
bsdutils
|
V:673, I:999 | 393 | renice(1): modifica a prioridade de agendamento de um processo em execução |
procps
|
V:739, I:999 | 792 |
"/proc " utilitários de sistema de ficheiros:
ps(1),
top(1),
kill(1)
,
watch(1),
…
|
psmisc
|
V:427, I:845 | 679 |
"/proc " utilitários de sistema de ficheiros:
killall(1),
fuser(1),
peekfd(1),
pstree(1)
|
time
|
V:15, I:279 | 82 | time(1): corre um programa para reportar as utilizações de recursos do sistema no que respeita a tempo |
sysstat
|
V:161, I:183 | 1918 | sar(1), iostat(1), mpstat(1), …: ferramentas de performance do sistema para Linux |
isag
|
V:0, I:3 | 116 | Interactive System Activity Grapher para sysstat |
lsof
|
V:391, I:946 | 451 | lsof(8):
lista os ficheiro abertos por um processo em execução a usar a opção
"-p "
|
strace
|
V:16, I:153 | 2367 | strace(1): rastreia chamadas e sinais do sistema |
ltrace
|
V:1, I:21 | 363 | ltrace(1): rastreia chamadas de bibliotecas |
xtrace
|
V:0, I:0 | 353 | xtrace(1): rastreia a comunicação entre cliente X11 e servidor |
powertop
|
V:9, I:217 | 662 | powertop(1): informação sobre a utilização do sistema de energia |
cron
|
V:805, I:997 | 263 | corre processos de acordo com uma agenda nos bastidores a partir do daemon cron(8) |
anacron
|
V:409, I:482 | 99 | agenda de comandos tipo cron para sistemas que não funcionam 24 horas por dia |
at
|
V:162, I:310 | 161 | at(1) ou batch(1): executam um trabalho a uma hora especificada ou abaixo de um certo nível de carga |
![]() |
Dica |
---|---|
Os pacotes |
Mostrar o tempo usado pelo processo invocado pelo comando.
# time qualquer_comando >/dev/null real 0m0.035s # tempo no relógio (tempo real) user 0m0.000s # tempo em modo de utilizador sys 0m0.020s # tempo em modo de kernel
Um valor nice é usado para controlar a prioridade de agendamento para o processo.
Tabela 9.8. Lista de valores nice para a prioridade de agendamento
o valor nice | prioridade de agendamento |
---|---|
19 | processo de prioridade menor (nice) |
0 | processo de prioridade muito alta para o utilizador |
-20 | processo de prioridade muito alta para o root (não-nice) |
# nice -19 top # muito bom # nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # muito rápido
Por vezes um valor nice extremo faz mais danos que benefícios ao sistema. Use este comando com cuidado.
O comando ps(1) num sistema Debian suporta ambas funcionalidades do BSD e SystemV e ajuda-o a identificar estaticamente a atividade do processo.
Tabela 9.9. Lista dos estilos do comando ps
estilo | comando típico | funcionalidade |
---|---|---|
BSD |
ps aux
|
mostrar %CPU %MEM |
System V |
ps -efH
|
mostra PPID |
Para o processo filho zombie (defunto), pode matá-lo pelo ID do processo pai
identificado no campo "PPID
".
O comando pstree(1) mostra uma árvore de processos.
O top(1) no sistema Debian tem funcionalidades ricas e ajuda-o a identificar dinamicamente que processo está a actuar de modo esquisito.
É um programa interativo de ecrã total. Pode obter a ajuda de utilização dele ao pressionar a tecla "h" e terminá-lo ao pressionar a tecla "q".
Pode listar todos os ficheiros abertos por um processo com o ID do processo (PID), ex. 1, com o seguinte.
$ sudo lsof -p 1
PID=1 é geralmente o programa de init
.
Pode rastrear a atividade do programa com o strace(1), ltrace(1), ou xtrace(1) para chamadas de sistema e sinais, chamadas de bibliotecas, ou comunicação entre cliente e servidor do X11.
Pode rastrear as chamadas do sistema do comando ls
como a
seguir.
$ sudo strace ls
Também pode identificar processos que usam ficheiros pelo
fuser(1),
ex. para "/var/log/mail.log
" com o seguinte.
$ sudo fuser -v /var/log/mail.log USER PID ACCESS COMMAND /var/log/mail.log: root 2946 F.... rsyslogd
Vê que o ficheiro "/var/log/mail.log
" está aberto para
escrita pelo comando
rsyslogd(8).
Também pode identificar processos que usam sockets pelo
fuser(1),
ex. para "smtp/tcp
" com o seguinte.
$ sudo fuser -v smtp/tcp USER PID ACCESS COMMAND smtp/tcp: Debian-exim 3379 F.... exim4
Agora sabe que o seu sistema executa o exim4(8) para lidar com as ligações TCP para a porta SMTP (25).
O watch(1) executa um programa repetidamente num intervalo constante enquanto mostra os seus resultados em ecrã completo.
$ watch w
Isto mostra quem tem sessão iniciada (logged) no sistema e é atualizado a cada 2 segundos.
Existem várias maneiras de repetir um ciclo de comandos sobre ficheiros que
correspondem a alguma condição, ex. que correspondem ao modelo glob
"*.ext
".
Método for-loop da shell (veja Secção 12.1.4, “Ciclos (loops) da shell”):
for x in *.ext; do if [ -f "$x"]; then command "$x" ; fi; done
combinação do find(1) e do xargs(1):
find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 command
find(1)
com a opção "-exec
" com um comando:
find . -type f -maxdepth 1 -name '*.ext' -exec command '{}' \;
find(1)
com a opção "-exec
" com um script de shell curto:
find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "command '{}' && echo 'sucesso'" \;
Os exemplos em cima foram escritos para assegurar o lidar apropriado dos nomes de ficheiros esquisitos como os que contêm espaços. Veja Secção 10.1.5, “Idiomas para a seleção de ficheiros” para utilizações mais avançadas do find(1).
Para a interface de linha de comandos
(CLI), é executado o primeiro programa com o nome correspondente
encontrado nos diretórios especificados na variável de ambiente
$PATH
. Veja Secção 1.5.3, “A variável "$PATH
"”.
Para a interface gráfica de
utilizador ((GUI) em conformidade com os standards do freedesktop.org, os ficheiros
*.desktop
no diretório
/usr/share/applications/
fornecem os atributos
necessários para se mostrar o menu GUI de cada programa. Veja Secção 7.2.2, “Menu Freedesktop.org”.
Por exemplo, os atributos do ficheiro chromium.desktop
para o "Navegador Web Chromium" tais como "Nome" para o nome do programa,
"Exec" para o caminho de execução do programa e argumentos, "Icon" para o
ícone usado, etc. (veja Desktop
Entry Specification) como a seguir:
[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
Esta é uma descrição muito simplificada. Os ficheiros
*.desktop
são examinados como a seguir:
O ambiente de trabalho define as variáveis de ambiente
$XDG_DATA_HOME
e $XDG_DATA_DIR
. Por
exemplo, sob o GNOME 3:
$XDG_DATA_HOME
é desconfigurada. (É usado o valor
predefinido de $HOME/.local/share
.)
$XDG_DATA_DIRS
é definida para
/usr/share/gnome:/usr/local/share/:/usr/share/
.
Para que os diretórios base (veja Especificação de Diretório Base
XDG) e os diretórios applications
sejam como a
seguir:
$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/
Os ficheiros *.desktop
são examinados nestes diretórios
applications
por esta ordem.
![]() |
Dica |
---|---|
Pode ser criada uma entrada personalizada no menu da GUI ao adicionar um
ficheiro |
![]() |
Dica |
---|---|
Se modo semelhante, se um ficheiro |
![]() |
Dica |
---|---|
De modo semelhante, se um ficheiro |
Alguns programas iniciam outros programas automaticamente. Aqui estão alguns pontos de controle para personalizar este processo.
Menu de configuração da aplicação:
Ambiente GNOME3: "Definições" → "Sistema" → "Detalhes" → "Aplicações Predefinidas"
Ambiente KDE: "K" → "Centro de Controle" → "Componentes do KDE" → "selcionar Componente"
Navegador Iceweasel: "Editar" → "Preferências" → "Aplicações"
mc(1):
"/etc/mc/mc.ext
"
Variáveis de ambiente como a "$BROWSER
",
"$EDITOR
", "$VISUAL
" e
"$PAGER
" (veja
eviron(7))
O sistema
update-alternatives(1)
para programas como o "editor
",
"view
", "x-www-browser
",
"gnome-www-browser
" e "www-browser
"
(veja Secção 1.4.7, “Definir um editor de texto predefinido”)
os conteúdos dos ficheiros "~/.mailcap
" e
"/etc/mailcap
" com a associação do tipo MIME com o programa (veja
mailcap(5))
Os conteúdos dos ficheiros "~/.mime.types
" e
"/etc/mime.types
" que associam a extensão do nome do
ficheiro com o tipo MIME (veja
run-mailcap(1))
![]() |
Dica |
---|---|
update-mime(8)
atualiza o ficheiro " |
![]() |
Dica |
---|---|
O pacote |
![]() |
Dica |
---|---|
De modo a correr uma aplicação de consola como o |
# cat /usr/local/bin/mutt-term <<EOF #!/bin/sh gnome-terminal -e "mutt \$@" EOF chmod 755 /usr/local/bin/mutt-term
Use kill(1) para matar (ou enviar um sinal para) um processo pelo ID do processo.
Use killall(1) ou pkill(1) para fazer o mesmo pelo nome do comando do processo ou outro atributo.
Tabela 9.10. Lista dos sinais frequentemente usados para o comando kill
valor do sinal | nome do sinal | função |
---|---|---|
1 | HUP | reiniciar daemon |
15 | TERM | morte normal |
9 | KILL | morte forçada |
Corra o comando at(1) para agendar uma tarefa de uma-vez com o seguinte.
$ echo 'command -args'| at 3:40 monday
Use cron(8) para agendar tarefas regularmente. Veja crontab(1) e crontab(5).
Pode agendar a execução de processos como um utilizador normal,
ex. foo
ao criar um ficheiro
crontab(5)
como "/var/spool/cron/crontabs/foo
" com o comando
"crontab -e
".
Aqui está um exemplo de um ficheiro 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
![]() |
Dica |
---|---|
Para o sistema que não corre continuamente, instale o pacote
|
![]() |
Dica |
---|---|
Para scripts agendados de manutenção do sistema, pode executá-los
periodicamente a partir da conta root ao pôr tais scripts em
" |
A segurança contra falhas do sistema é disponibiliza pela opção de compilação do kernel "Magic SysRq key" (tecla SAK) a qual é agora a predefinição para o kernel Debian. Pressionar Alt-SysRq seguido de uma das seguintes teclas faz a magia de recuperar o controle do sistema.
Tabela 9.11. Lista de teclas de comando SAK
tecla que segue a Alt-SysRq | descrição da acção |
---|---|
r
|
restaurar o teclado a partir de modo raw após crash do X |
0
|
mudar o nível de log da consola para 0 para reduzir as mensagens de erro |
k
|
kill (mata) todos os processos da consola virtual atual |
e
|
enviar um SIGTERM a todos os processos, excepto para init(8) |
i
|
enviar um SIGKILL a todos os processos, excepto para init(8) |
s
|
sincroniza todos os sistemas de ficheiros montados para evitar corrupção de dados |
u
|
remontar todos os sistemas de ficheiros montados em modo de apenas-leitura (umount) |
b
|
reboot (reiniciar) o sistema sem sincronização ou desmontagem |
![]() |
Dica |
---|---|
Leia os manuais de signal(7), kill(1) e sync(1) para compreender a descrição em cima. |
A combinação de "Alt-SysRq s", "Alt-SysRq u" e "Alt-SysRq r" é boa para sair de situações realmente más e ganhar acesso utilizável ao teclado sem parar o sistema.
Veja
"/usr/share/doc/linux-doc-3.*/Documentation/sysrq.txt.gz
".
![]() |
Cuidado |
---|---|
A funcionalidade Alt-SysRq pode ser considerada um risco de segurança ao
permitir que os utilizadores tenham acesso a funções com privilégios de
root. Pôr " |
![]() |
Dica |
---|---|
A partir de um terminal SSH etc., pode usar a funcionalidade Alt-SysRq ao
escrever para o " |
Pode verificar quem está no sistema com o seguinte.
who(1) mostra quem tem sessão iniciada.
w(1) mostra quem tem sessão iniciada e o que estão a fazer.
last(1) mostra a listagem do último utilizador a iniciar sessão.
lastb(1 )mostra a listagem dos últimos utilizadores a falharem o inicio de sessão.
![]() |
Dica |
---|---|
" |
Pode mandar uma mensagem para todos os que têm sessão iniciada no sistema com wall(1) com o seguinte.
$ echo "Vamos desligar dentro de 1 hora" | wall
Para os aparelhos tipo PCI (AGP, PCI-Express,
CardBus, ExpressCard, etc.), o
lspci(8)
(provavelmente com a opção "-nn
") é um bom inicio para a
identificação do hardware.
Alternativamente, pode identificar o hardware ao ler os conteúdos de
"/proc/bus/pci/devices
" ou explorar a árvore de
diretórios sob "/sys/bus/pci
" (veja Secção 1.2.12, “procfs e sysfs”).
Tabela 9.12. Lista de ferramenta de identificação de hardware
pacote | popcon | tamanho | descrição |
---|---|---|---|
pciutils
|
V:195, I:992 | 196 | Utilitários PCI do Linux: lspci(8) |
usbutils
|
V:84, I:862 | 324 | Utilitários USB do Linux: lsusb(8) |
pcmciautils
|
V:13, I:21 | 97 | Utilitários PCMCIA par Linux: pccardctl(8) |
scsitools
|
V:0, I:3 | 390 | colecção de ferramentas para gestão de hardware SCSI: lsscsi(8) |
procinfo
|
V:0, I:13 | 135 |
informação do sistema obtida de "/proc ":
lsdev(8)
|
lshw
|
V:12, I:94 | 842 | informação acerca da configuração do hardware: lshw(1) |
discover
|
V:41, I:947 | 90 | sistema de identificação de hardware: discover(8) |
Apesar da maioria da configuração de hardware nos sistemas de ambiente de trabalho GUI modernos como o GNOME e KDE poder ser gerida através de acompanhamento por ferramentas de configuração com GUI, é uma boa ideia conhecer alguns métodos básicos de o configurar.
Tabela 9.13. Lista de ferramentas de configuração do hardware
pacote | popcon | tamanho | descrição |
---|---|---|---|
console-setup
|
V:137, I:959 | 411 | tipo de letra da consola Linux e utilitários da tabela de teclas |
x11-xserver-utils
|
V:282, I:534 | 511 | Utilitários do servidor X: xset(1), xmodmap(1) |
acpid
|
V:145, I:318 | 176 | daemon para gerir eventos entregues pelo Advanced Configuration and Power Interface (ACPI) |
acpi
|
V:17, I:302 | 45 | utilitário para mostrar informação em aparelhos ACPI |
sleepd
|
V:0, I:0 | 86 | daemon para pôr um portátil em modo de adormecimento durante a inatividade |
hdparm
|
V:408, I:718 | 256 | optimização do acesso ao disco rígido (veja Secção 9.5.9, “Optimização do disco rígido”) |
smartmontools
|
V:134, I:197 | 2117 | controlar e monitorizar sistemas de armazenamento a usar S.M.A.R.T. |
setserial
|
V:5, I:9 | 117 | colecção de ferramentas para gestão de portas série |
memtest86+
|
V:1, I:29 | 2391 | colecção de ferramentas para gestão de hardware de memória |
scsitools
|
V:0, I:3 | 390 | colecção de ferramentas para gestão de hardware SCSI |
setcd
|
V:0, I:1 | 35 | optimização de acesso a drives de discos compactos |
big-cursor
|
I:1 | 27 | cursores de rato maiores para o X |
Aqui, o ACPI é uma estrutura mais recente para o sistema de gestão de energia que o APM.
![]() |
Dica |
---|---|
O escalar de frequências da CPU em sistemas modernos é governado por módulos
do kernel como o |
O seguinte define a hora do sistema e hardware para MM/DD hh:mm, AAAA.
# date MMDDhhmmAAAA # hwclock --utc --systohc # hwclock --show
A horas são mostradas normalmente na hora local no sistema Debian mas o hardware e a hora do sistema geralmente usam UTC(GMT).
Se a hora do hardware (BIOS) estiver definida para UTC, mude a definição
para "UTC=yes
" em "/etc/default/rcS
".
O seguinte reconfigura a zona horária usada pelo sistema Debian.
# dpkg-reconfigure tzdata
Se desejar atualizar a hora do sistema através da rede, considere usar o
serviço NTP como pacotes como os
ntp
, ntpdate
e
chrony
.
![]() |
Dica |
---|---|
Sob systemd, use
|
Veja o seguinte.
O pacote ntp-doc
![]() |
Dica |
---|---|
O
ntptrace(8)
no pacote |
Existem vários componentes para configurar a consola de caracteres e as funcionalidades do sistema ncurses(3).
O ficheiro "/etc/terminfo/*/*
"
(terminfo(5))
A variável de ambiente "$TERM
"
(term(7))
setterm(1), stty(1), tic(1) e toe(1)
Se a entrada terminfo
para o xterm
não
funcionar com um xterm
não Debian, mude o seu tipo e
terminal, "$TERM
", de "xterm
" para uma
das versões de funcionalidades limitadas como o
"xterm-r6
" quando iniciar sessão num sistema Debian
remotamente. Veja "/usr/share/doc/libncurses5/FAQ
" para
mais. O "dumb
" é o denominador comum mais baixo para
"$TERM
".
As drivers para placas de som para o Linux atual são disponibilizadas pelo Advanced Linux Sound Architecture (ALSA). ALSA disponibiliza um modo de emulação para o anterior Open Sound System (OSS) para compatibilidade.
![]() |
Dica |
---|---|
Use " |
![]() |
Dica |
---|---|
Se não conseguir obter som, os seus altifalantes podem estar ligados a uma
saída silenciada (mute). Os sistemas de som modernos têm muitas saídas. O
alsamixer(1)
no pacote |
As aplicações de software podem ser configuradas para não só aceder directamente a aparelhos de som, mas também para aceder-les através de alguns sistemas servidores de som normalizados.
Tabela 9.14. Lista de pacotes de som
pacote | popcon | tamanho | descrição |
---|---|---|---|
alsa-utils
|
V:341, I:476 | 2283 | utilitários para configurar e utilizar ALSA |
oss-compat
|
V:2, I:29 | 20 |
compatibilidade de OSS sob ALSA para prevenir erros de "/dev/dsp
não encontrado "
|
jackd
|
V:4, I:27 | 9 | servidor (baixa latência) JACK Audio Connection Kit. (JACK) |
libjack0
|
V:1, I:13 | 338 | biblioteca (baixa latência) JACK Audio Connection Kit. (JACK) |
nas
|
V:0, I:0 | 243 | servidor Network Audio System (NAS) |
libaudio2
|
V:60, I:488 | 165 | biblioteca Network Audio System (NAS) |
pulseaudio
|
V:350, I:471 | 6398 | servidor PulseAudio, substituto para o ESD |
libpulse0
|
V:289, I:604 | 969 | biblioteca cliente PulseAudio, substituto para o ESD |
libgstreamer1.0-0
|
V:372, I:574 | 5280 | GStreamer: motor de som do GNOME |
libphonon4
|
I:121 | 680 | Phonon: motor de som do KDE |
Existe normalmente um motor de som comum para cada ambiente de trabalho popular. Cada motor de som usado pela aplicação pode escolher ligar a diferentes servidores de som.
Para desativar o protector de ecrã, utilize os seguintes comandos.
Tabela 9.15. Lista de comandos para desativar o protector de ecrã
ambiente | comando |
---|---|
A consola do Linux |
setterm -powersave off
|
O X Window (desativar o protector de ecrã) |
xset s off
|
O X Window (desativar o dpms) |
xset -dpms
|
O X Window (GUI de configuração do protector de ecrã) |
xscreensaver-command -prefs
|
Pode-se sempre desligar o altifalante do PC para desativar os
apitos. Remover o módulo de kernel pcspkr
faz isso por
si.
O seguinte previne o programa readline(3) usado pelo bash(1) de apitar quando encontra um caractere de alerta (ASCII=7).
$ echo "set bell-style none">> ~/.inputrc
Existem 2 recursos disponíveis para obter o estado da utilização de memória.
A mensagem de arranque do kernel em "/var/log/dmesg
"
contém o tamanho total exacto da memória disponível.
free(1) e top(1) mostram informação sobre os recursos de memória no sistema em execução.
Aqui está um exemplo.
# 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
Pode estar a pensar "o dmesg fala-me em 990 MB livres e o free -k diz 320 MB livres. Faltam mais de 600 MB ...".
Não se preocupe com o grande tamanho de "used
" e o
pequeno tamanho de "free
" na linha
"Mem:
", mas leia a que está sob elas (675404 e 321780 no
exemplo em cima) e relaxe.
Para o meu MacBook com 1GB=1048576k de DRAM (o sistema de vídeo rouba alguma), vejo o seguinte.
Tabela 9.16. Lista dos tamanhos de memória reportados
relatório | tamanho |
---|---|
Tamanho total no dmesg | 1016784k = 1GB - 31792k |
Livre no dmesg | 990528k |
Total sob a shell | 997184k |
Livre sob a shell | 20256k (mas efectivamente 321780k) |
Uma manutenção pobre do sistema pode expor o seu sistema à exploração externa.
Para segurança do sistema e verificação de integridade, deve começar com o seguinte.
O pacote debsums
, veja
debsums(1)
e Secção 2.5.2, “Ficheiro "Release" de nível de topo e autenticidade:”.
O pacote chkrootkit
, veja
chkrootkit(1).
A família de pacotes clamav
, veja
clamscan(1)
e
freshclam(1).
Tabela 9.17. Lista de ferramentas para segurança do sistema e verificação de integridade
pacote | popcon | tamanho | descrição |
---|---|---|---|
logcheck
|
V:8, I:10 | 102 | daemon para enviar as anomalias nos ficheiros de log do sistema ao administrador por mail |
debsums
|
V:5, I:42 | 107 | utilitário para verificar os pacotes instalados contra chaves de verificação MD5 |
chkrootkit
|
V:5, I:24 | 970 | detector de rootkit |
clamav
|
V:13, I:58 | 774 | utilitário de anti-vírus para Unix - interface de linha de comandos |
tiger
|
V:2, I:3 | 7822 | relatar vulnerabilidades de segurança do sistema |
tripwire
|
V:2, I:3 | 11521 | verificador de integridade de ficheiros e diretórios |
john
|
V:2, I:12 | 452 | ferramenta activa de crack de palavras-passe |
aide
|
V:1, I:2 | 2063 | Ambiente de Detecção de Intrusão Avançado - binário estático |
integrit
|
V:0, I:0 | 329 | programa de verificação de integridade de ficheiros |
crack
|
V:0, I:1 | 149 | programa de adivinhação de palavra-passe |
Aqui está um script simples para verificar as típicas permissões de ficheiros escritas incorrectamente.
# find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)
![]() |
Cuidado |
---|---|
Como o pacote |
Arrancar o seu sistema com live CDs de Linux ou CDs de instalação de debian em modo de recuperação torna fácil para si reconfigurar o armazenamento de dados no seu aparelho de arranque.
A utilização do espaço em disco pode ser avaliada por programas
disponibilizados pelos pacotes mount
,
coreutils
e xdu
:
mount(8) reporta todos os sistemas de ficheiros montados (= discos).
df(1) reporta a utilização do espaço em disco para o sistema de ficheiros.
du(1) reporta a utilização do espaço em disco para a árvore do diretório.
![]() |
Dica |
---|---|
Pode alimentar a saída de
du(8)
a
xdu(1x)
para produzir a apresentação gráfica dele e interactiva com " |
Para configuração de partições de disco, apesar do fdisk(8) ser considerado o standard, o parted(8) merece alguma atenção. "Dados de particionamento do disco", "Tabela de partições", "Mapa de partições" e "Etiqueta do disco" são todos sinónimos.
A maioria dos PCs usa o esquema clássico do Master Boot Record (MBR) para manter os dados de partições do disco no primeiro sector, isto é, LBA sector 0 (512 bytes).
![]() |
Nota |
---|---|
Alguns PCs novos com Extensible Firmware Interface (EFI), incluindo os Macs baseados em Intel, usam o esquema GUID Partition Table (GPT) para manter os dados de partições do disco não no primeiro sector. |
Apesar do fdisk(8) ter sido o standard como ferramenta de particionamento de disco, o parted(8) está a substituí-lo.
Tabela 9.18. Lista de pacotes de gestão de partições do disco
pacote | popcon | tamanho | GPT | descrição |
---|---|---|---|---|
util-linux
|
V:891, I:999 | 4598 | Não suportado | vários utilitários de sistema incluindo fdisk(8) e cfdisk(8) |
parted
|
V:363, I:561 | 304 | Suportado | GNU Parted programa de redimensionamento de partições do disco |
gparted
|
V:19, I:132 | 2046 | Suportado |
Editor de partições do GNOME baseado na libparted
|
gdisk
|
V:278, I:513 | 852 | Suportado | editor de partições para o disco GPT |
kpartx
|
V:16, I:29 | 87 | Suportado | programa para criar mapeamentos de aparelho para partições |
![]() |
Cuidado |
---|---|
Apesar do parted(8) afirmar também criar e redimensionar sistemas de ficheiros, é mais seguro fazer tais coisas a usar ferramentas especializadas e com melhor manutenção como as ferramentas mkfs(8) (mkfs.msdos(8), mkfs.ext2(8), mkfs.ext3(8), mkfs.ext4(8), …) e resize2fs(8). |
![]() |
Nota |
---|---|
De modo a mudar entre GPT e MBR, precisa de apagar os primeiros blocos de conteúdo
do disco directamente (veja Secção 9.7.6, “Limpar conteúdo de ficheiro”) e
usar " |
Apesar da reconfiguração da sua partição ou ordem de activação de medias de armazenamento amovíveis poder apresentar nomes diferentes para as partições, pode aceder-lhes de modo consistente. Isto é também útil se tem múltiplos discos e a sua BIOS não lhes fornecer nomes de aparelho consistentes.
mount(8)
com a opção "-U
" pode montar um aparelho de bloco a usar
o UUID, em vez de usar o nome de ficheiro dele
tal como "/dev/sda3
".
"/etc/fstab
" (veja
fstab(5))
pode usar UUID.
Os gestores de arranque (Secção 3.1.2, “Estágio 2: o gestor de arranque”) também podem usar UUID.
![]() |
Dica |
---|---|
Pode testar o UUID de um aparelho especial de bloco com blkid(8). |
![]() |
Dica |
---|---|
Nós de aparelhos de aparelhos como medias de armazenamento amovíveis podem ser tornados estáticos ao usar regras do udev, caso necessário. Veja Secção 3.3, “O sistema udev”. |
LVM2 é um gestor de volumes lógicos para o kernel Linux. Com o LVM2, podem ser criadas partições de disco em volumes lógicos em vez de discos rijos físicos.
O LVM requer o seguinte.
suporte a device-mapper no kernel Linux (predefinido para os kernels Debian)
a biblioteca de suporte a device-mapper no espaço de utilizador (pacote
(libdevmapper*
)
as ferramentas LVM2 do espaço de utilizador (pacote lvm2
)
Por favor comece a aprender LVM2 a partir dos seguintes manuais.
lvm(8): Bases do mecanismo LVM2 (lista de todos os comandos LVM2)
lvm.conf(5): Ficheiro de configuração para LVM2
lvs(8): Reporta informação acerca de volumes lógicos
vgs(8): Reporta informação acerca de grupos de volumes
pvs(8): Reporta informação acerca de volumes físicos
Para o sistema de ficheiro ext4, o pacote
e2fsprogs
disponibiliza o seguinte.
mkfs.ext4(8) para criar um novo sistema de ficheiros ext4
fsck.ext4(8) para verificar e reparar um sistema de ficheiros ext4 existente
tune2fs(8) para configurar o super-bloco do sistema de ficheiros ext4
debugfs(8)
para depurar um sistema de ficheiros ext4
interativamente. (Era o comando undel
para recuperar
ficheiros apagados.)
Os comandos
mkfs(8)
e
fsck(8)
são disponibilizados pelo pacote e2fsprogs
como frontends
para vários programas dependentes do sistema de ficheiros
(mkfs.fstype
e fsck.fstype
). Para o
sistema de ficheiros ext4 existem os
mkfs.ext4(8)
e o
fsck.ext4(8)
(estão ligados simbolicamente ao
mke2fs(8)
and
e2fsck(8)).
Estão disponíveis comandos semelhantes para cada sistema de ficheiros suportado pelo Linux.
Tabela 9.19. Lista de pacotes de gestão de sistemas de ficheiros
pacote | popcon | tamanho | descrição |
---|---|---|---|
e2fsprogs
|
V:576, I:999 | 1449 | utilitários para os sistemas de ficheiros ext2/ext3/ext4 |
reiserfsprogs
|
V:11, I:29 | 1132 | utilitários para o sistema de ficheiros Reiserfs |
dosfstools
|
V:128, I:524 | 235 | utilitários para o sistema de ficheiros FAT. (Microsoft: MS-DOS, Windows) |
xfsprogs
|
V:21, I:98 | 3191 | utilitários para o sistema de ficheiros XFS. (SGI: IRIX) |
ntfs-3g
|
V:186, I:512 | 1479 | utilitários para o sistema de ficheiros NTFS. (Microsoft: Windows NT, …) |
jfsutils
|
V:1, I:12 | 1577 | utilitários para o sistema de ficheiros JFS. (IBM: AIX, OS/2) |
reiser4progs
|
V:0, I:4 | 1373 | utilitários para o sistema de ficheiros Reiser4 |
hfsprogs
|
V:0, I:8 | 356 | utilitários para os sistemas de ficheiros HFS e HFS Plus. (Apple: Mac OS) |
btrfs-progs
|
V:38, I:64 | 4027 | utilitários para o sistema de ficheiros btrfs |
zerofree
|
V:3, I:94 | 25 | programa para zerar blocos livres de sistemas de ficheiros ext2/3/4 |
![]() |
Dica |
---|---|
O sistema de ficheiros Ext4 é o sistema de ficheiros predefinido para o sistema Linux e a utilização é fortemente recomendada a menos que tenha razões especificas para não o fazer. |
![]() |
Dica |
---|---|
O sistema de ficheiros Btrfs está disponível no
kernel Linux 3.2 (Debian |
![]() |
Atenção |
---|---|
Não deve utilizar o sistema de ficheiros Btrfs para os seus dados críticos antes de este obter a funcionalidade de fsck(8) do kernel ao vivo e suporte de gestores de arranque. |
![]() |
Dica |
---|---|
Algumas ferramentas permitem acesso a sistemas de ficheiros sem suporte do kernel do Linux (veja Secção 9.7.2, “Manipular ficheiros sem montar o disco”). |
O comando mkfs(8) cria o sistema de ficheiros num sistema Linux. O comando fsck(8) disponibiliza a verificação de integridade e reparação do sistema de ficheiros num sistema Linux.
Debian agora, por predefinição, não faz fsck
periódicos
após a criação do sistema de ficheiros.
![]() |
Cuidado |
---|---|
Geralmente não é seguro correr o |
![]() |
Dica |
---|---|
Pode executar o comando
fsck(8)
com segurança em todos os sistemas de ficheiros incluindo o sistema raiz
durante o arranque da máquina ao definir
" |
![]() |
Dica |
---|---|
Verifique os ficheiros em " |
A configuração estática básica dos sistemas de ficheiros é dada por
"/etc/fstab
". Por exemplo,
# <file system> <mount point> <type> <options> <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
![]() |
Dica |
---|---|
O UUID (veja Secção 9.5.3, “Aceder a partição a usar UUID”) pode ser utilizado para
identificar um aparelho de bloco em vez de nomes vulgares de aparelhos de
bloco, tal como " |
A performance e características de um sistema de ficheiros pode ser optimizada pelas opções de montagem usadas (veja fstab(5) e mount(8)). As mais notáveis são as seguintes.
A opção "defaults
" implica opções predefinidas:
"rw,suid,dev,exec,auto,nouser,async
". (geral)
A opção "noatime
" ou "relatime
" é
muito eficaz para acelerar o acesso de leitura. (geral)
A opção "user
" permite que um utilizador normal monte o
sistema de ficheiros. Esta opção implica a combinação com a opção
"noexec,nosuid,nodev
". (geralmente, usada para CDs ou
aparelhos de armazenamento usb)
A combinação de opções "noexec,nodev,nosuid
" é usada para
melhorar a segurança. (geral)
A opção "noauto
" limita a montagem apenas por operação
explícita. (geral)
A opção "data=journal
" para ext3fs pode melhorar a
integridade dos dados contra falhas de energia com alguma perda na
velocidade de gravação.
![]() |
Dica |
---|---|
Precisa de disponibilizar o parâmetro de boot do kernel (veja Secção 3.1.2, “Estágio 2: o gestor de arranque”),
ex. " |
As características de um sistema de ficheiros podem ser optimizadas via o super-bloco dele a usar o comando tune2fs(8).
A execução de "sudo tune2fs -l /dev/hda1
" mostra o
conteúdo do super-bloco do sistema de ficheiros em
"/dev/hda1
".
A execução de "sudo tune2fs -c 50 /dev/hda1
" muda a
frequência das verificações do sistema de ficheiros (execução do
fsck
durante o arranque) para cada 50 arranques em
"/dev/hda1
".
A execução de "sudo tune2fs -j /dev/hda1
" adiciona
capacidade de journal ao sistema de ficheiros, isto é, conversão de ext2 para ext3 em
"/dev/hda1
". (Faça isto no sistema de ficheiros
desmontado.)
A execução de "sudo tune2fs -O extents,uninit_bg,dir_index
/dev/hda1 && fsck -pf /dev/hda1
" converte-o de ext3 para ext4 em
"/dev/hda1
". (Faça isto no sistema de ficheiros
desmontado.)
![]() |
Atenção |
---|---|
Por favor verifique o seu hardware e leia o manual do hdparam(8) antes de brincar com a configuração do disco rígido porque isto pode ser bastante perigoso para a integridade dos dados. |
Pode testar a velocidade de acesso ao disco de um disco rígido,
p.e. "/dev/hda
", por "hdparm -tT
/dev/hda
". Para algum disco rígido ligado com (E)IDE, pode
acelerá-lo com "hdparm -q -c3 -d1 -u1 -m16 /dev/hda
" ao
ativar o suporte a "(E)IDE 32-bit I/O", a ativar a flag "using_dma", a
definir a flag "interrupt-unmask" e a definir o "multiple 16 sector I/O"
(perigoso!).
Pode testar a funcionalidade de cache de escrita de um disco rígido, por
exemplo "/dev/sda
", com "hdparm -W
/dev/sda
". Pode desativar a funcionalidade de cache de escrita
dele com "hdparm -W 0 /dev/sda
".
Pode ser capaz de ler CDROMs muito pressionados em drives de CDROM modernas
de alta velocidade ao abrandá-la com "setcd -x 2
".
O desempenho e desgaste do disco de estado sólido (SSD) podem ser optimizados como a seguir.
Utilize o kernel Linux mais recente. (>= 3.2)
Reduz as escritas em disco para acessos de leitura ao disco.
Defina a opção de mount "noatime
" ou
"relatime
" em /etc/fstab
.
ativar o comando TRIM.
ativar o esquema de alocação de espaço em disco optimizado para SSD.
Para Btrfs defina a opção "ssd
", de mount, em
/etc/fstab
.
Para computadores portáteis fazer o sistema esvaziar os dados para o disco a cada 10 minutos.
Defina a opção, de mount,"commit=600
" em
/etc/fstab
. Veja
fstab(5).
Faça o pm-utils utilizar o laptop-mode mesmo quando ligado à corrente. Veja Debian BTS #659260.
![]() |
Atenção |
---|---|
Alterar o intervalo de esvaziamento dos normais 5 segundos para 10 minutos torna os seus dados vulneráveis a falhas de alimentação. |
Pode monitorizar e registar em log o seu disco rígido que é compatível com SMART com o daemon smartd(8).
Instalar o pacote smartmontools
.
Identificar os seus discos rígidos ao listá-los com df(1).
Vamos assumir uma drive de disco rígido a ser monitorizada como
"/dev/hda
".
Verifique o resultado de "smartctl -a /dev/hda
" para ver
se a funcionalidade SMART está atualmente
ligada.
Se não, active-o com "smartctl -s on -a /dev/hda
".
Active o daemon smartd(8) ao correr o seguinte.
retire a marca de comentário na linha "start_smartd=yes
"
no ficheiro "/etc/default/smartmontools
".
reinicie o daemon
smartd(8)
com "sudo /etc/init.d/smartmontools restart
".
![]() |
Dica |
---|---|
O daemon
smartd(8)
pode ser personalizado com o ficheiro |
As aplicações criam ficheiros temporários normalmente sob o diretório de
armazenamento temporário "/tmp
". Se
"/tmp
" não disponibilizar espaço suficiente, pode
especificar um diretório de espaço temporário, a programas bem-comportados,
através da variável $TMPDIR
.
Para partições criadas em Logical Volume Manager (LVM) (funcionalidade do Linux) durante a instalação, elas podem ser redimensionadas facilmente ao concatenar extensões nelas ou ao truncar extensões delas sobre múltiplos aparelhos de armazenamento sem grandes reconfigurações do sistema.
Se tiver uma partição vazia (ex. "/dev/sdx
"), pode
formatá-la com
mkfs.ext4(1)
e
mount(8)
para um diretório onde precise de mais espaço. (necessita copiar os
conteúdos originais.)
$ 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
![]() |
Dica |
---|---|
Pode em alternativa montar um ficheiro de imagem de disco vazio (veja Secção 9.6.5, “Criar um ficheiro de imagem de disco vazio”) como um aparelho de loop (veja Secção 9.6.3, “Montar o ficheiro de imagem de disco”). A utilização real do disco cresce com os dados reais armazenados. |
Se tiver um diretório vazio
(p.e. "/caminho/para/diretório-vazio
") com espaço
utilizável noutra partição, pode fazer mount(8) ao mesmo com a opção
"--bind
para um diretório (p.e.,
"diretório-de-trabalho
") onde necessite de mais espaço.
$ sudo mount --bind /caminho/para/diretório-vazio diretório-de-trabalho
Se tem espaço utilizável noutra partição
(ex. "/path/to/empty
") e
"/path/to/work
"), pode criar um diretório nela e
empilhá-lo no diretório antigo (ex, "/path/to/old
") onde
precisa de espaço a usar o OverlayFS para
Linux kernel 3.18 ou mais recente (Debian Stretch 9.0 ou posterior).
$ sudo mount -t overlay overlay \ -olowerdir=/path/to/old-dir,upperdir=/path/to/empty,workdir=/path/to/work
Aqui, "/path/to/empty
" e
"/path/to/work
" devem estar na partição com
Escrita-Leitura activa a escrever em "/path/to/old
".
![]() |
Cuidado |
---|---|
Este é um método descontinuado. Alguns programas podem não funcionar bem com uma "ligação simbólica a um diretório". Em vez disso, use as opções de "montagem" descritas em cima. |
Se tem um diretório vazio
(ex. "/caminho/para/diretório-vazio
") noutra partição com
espaço utilizável, pode criar uma ligação simbólica ao diretório com o
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
![]() |
Atenção |
---|---|
Não utilize uma "ligação simbólica para um diretório" para diretórios
geridos pelo sistema, tais como o " |
Aqui discutimos manipulações da imagem do disco.
O ficheiro de imagem de disco, "disco.img
", de um
aparelho não montado, ex., a segunda drive SCSI ou serial ATA
"/dev/sdb
", pode ser feito a usar o
cp(1)
ou o
dd(1)
com o seguinte.
# cp /dev/sdb disco.img # dd if=/dev/sdb of=disco.img
O master boot record (MBR) da imagem de disco dos PC's tradicionais (veja Secção 9.5.2, “Configuração das partições do disco”) que reside no primeiro sector no disco IDE primário pode ser feito a usar o dd(1) com o seguinte.
# 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
": O MBR com a tabela de partições
"mbr-nopart.img
": O MBR sem a tabela de partições
"mbr-part.img
": A tabela de partições apenas do MBR
Se tem um aparelho SCSI ou serial ATA como disco de arranque, substitua
"/dev/hda
" por "/dev/sda
".
Se está a criar uma imagem de uma partição de disco do disco original,
substitua "/dev/hda
" por "/dev/hda1
"
etc.
O ficheiro de imagem de disco "disk.img
" pode ser escrito
para um aparelho desmontado, ex. a segunda drive SCSI
"/dev/sdb
" como tamanho correspondente, com o seguinte.
# dd if=disk.img of=/dev/sdb
Se modo semelhante, o ficheiro de imagem de partição de disco,
"partition.img
" pode ser escrito para uma partição
desmontada, ex., a primeira partição do segundo disco SCSI
"/dev/sdb1
" com tamanho correspondente, com o seguinte.
# dd if=partition.img of=/dev/sdb1
A imagem de disco "partition.img
" que contém uma partição
única pode ser montada e desmontada ao usar o aparelho loop como a seguir.
# 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
Isto pode ser simplificado como a seguir.
# mkdir -p /mnt/loop0 # mount -t auto -o loop partition.img /mnt/loop0 ...hack...hack...hack # umount partition.img
Cada partição da imagem de disco "disk.img
" que contém
múltiplas partições pode ser montada a usar o aparelho loop. Como o aparelho loop não gere
partições por predefinição, temos que o redefinir como a seguir.
# 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
Agora, o aparelho loop pode lidar com 16 partições (máximo).
# 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
Alternativamente, podem-se fazer efeitos semelhantes ao usar os aparelhos
device mapper criados pelo
kpartx(8)
do pacote kpartx
como a seguir.
# 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 |
---|---|
Também pode montar uma única partição de tal imagem de disco com o aparelho loop a usar um offset para saltar o MBR etc. Mas isto é mais inclinado a erros. |
Um ficheiro de imagem de disco, "disk.img
" pode ser limpo
de todos os ficheiros removidos numa imagem limpa
"new.img
" com o seguinte.
# 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 o "disk.img
" está em ext2, ext3 ou ext4, você também
pode usar o
zerofree(8)
do pacote zerofree
como a seguir.
# losetup -f -v disk.img Loop device is /dev/loop3 # zerofree /dev/loop3 # cp --sparse=always disco.img novo.img
A imagem de disco vazia "disk.img
" que pode crescer até
aos 5GiB pode ser feita a usar o
dd(1)
como a seguir.
$ dd bs=1 count=0 if=/dev/zero of=disk.img seek=5G
Pode criar um sistema de ficheiros ext4 nesta imagem de disco
"disk.img
" a usar o aparelho
loop como a seguir.
# 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
Para "disk.img
", o tamanho de ficheiro dele é 5.0 Gb e a
utilização real do disco dele é apenas 83 Mb. Esta discrepância é possível
porque o ext4 pode manter o ficheiro sparse.
![]() |
Dica |
---|---|
A utilização de disco real do ficheiro sparse cresce com os dados que são escritos nele. |
A usar uma operação semelhante em aparelhos criados pelo aparelho loop ou o mapeador de aparelhos como Secção 9.6.3, “Montar o ficheiro de imagem de disco”, pode particionar esta imagem de
disco "disk.img
" a usar o
parted(8)
ou o
fdisk(8)
e pode criar um sistema de ficheiros nela a usar
mkfs.ext4(8),
mkswap(8),
etc.
O ficheiro de imagem ISO9660,
"cd.iso
", a partir da árvore de diretórios fonte em
"source_diretory
" pode ser feito a usar o
genisoimage(1)
disponibilizado pelo cdrkit com o seguinte.
# genisoimage -r -J -T -V volume_id -o cd.iso diretório_fonte
De modo semelhante, o ficheiro de imagem ISO9660 de arranque,
"cdboot.iso
", pode ser feito a partir do
instalador-debian
como árvore de diretórios em
"source_diretory
" com o seguinte.
# 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 diretório_fonte
Aqui é usado para arranque o boot loader Isolinux (veja Secção 3.1.2, “Estágio 2: o gestor de arranque”).
Pode calcular o valor md5sum e fazer a imagem ISO9660 directamente a partir do aparelho CD-ROM como a seguir.
$ 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
![]() |
Atenção |
---|---|
Tem de ter o cuidado de evitar o bug de leitura antecipada do sistema de ficheiros ISO9660 do Linux como em cima para obter o resultado correcto. |
![]() |
Dica |
---|---|
Um DVD é apenas um CD grande para o wodim(1) disponibilizado pelo cdrkit. |
Pode procurar um aparelho utilizável com o seguinte.
# wodim --devices
Então o CD-R vazio é inserido na drive de CD e o ficheiro de imagem ISO9660,
"cd.iso
" é escrito neste aparelho,
ex. "/dev/hda
", a usar o
wodim(1)
com o seguinte.
# wodim -v -eject dev=/dev/hda cd.iso
Se for usado um CD-RW em vez de um CD-R, faça antes o seguinte.
# wodim -v -eject blank=fast dev=/dev/hda cd.iso
![]() |
Dica |
---|---|
Se o seu ambiente montar CDs automaticamente, desmonte-o com " |
Se "cd.iso
" conter uma imagem ISO9660, então o seguinte
monta-o manualmente em "/cdrom
".
# mount -t iso9660 -o ro,loop cd.iso /cdrom
![]() |
Dica |
---|---|
Os sistemas de ambiente de trabalho modernos podem montar medias amovíveis, tais como um CD formatado em ISO9660, automaticamente (veja Secção 10.1.7, “Aparelho de armazenamento amovível”). |
Aqui, discutimos manipulação directa de dados binários em meios de armazenamento.
o método de visualização mais básico de dados binários é usar o comando
"od -t x1
".
Tabela 9.20. Lista de pacote para ver e editar dados binários
pacote | popcon | tamanho | descrição |
---|---|---|---|
coreutils
|
V:891, I:999 | 17478 | pacote básico que tem od(1) para despejar ficheiros (HEX, ASCII, OCTAL, …) |
bsdmainutils
|
V:60, I:996 | 26 | pacote utilitário que tem hd(1) para despejar ficheiros (HEX, ASCII, OCTAL, …) |
hexedit
|
V:1, I:12 | 72 | editor binário e visualizador (HEX, ASCII) |
bless
|
V:0, I:4 | 1028 | editor hexadecimal cheiro de funcionalidades (GNOME) |
okteta
|
V:1, I:15 | 1508 | editor hexadecimal cheiro de funcionalidades (KDE4) |
ncurses-hexedit
|
V:0, I:2 | 132 | editor binário e visualizador (HEX, ASCII, EBCDIC) |
beav
|
V:0, I:0 | 133 | editor binário e visualizador (HEX, ASCII, EBCDIC, OCTAL, …) |
![]() |
Dica |
---|---|
HEX é usado como um acrónimo para o formato hexadecimal com radix 16. OCTAL é para formato octal com radix 8. ASCII é para American Standard Code for Information Interchange, isto é, código de texto Inglês normal. EBCDIC é para Extended Binary Coded Decimal Interchange Code usado em sistemas operativos com infraestrutura da IBM. |
Existem ferramentas para ler e escrever ficheiros sem montar o disco.
Os sistemas RAID por software oferecidos pelo kernel Linux oferecem redundância de dados ao nível do sistema de ficheiros do kernel, para se conseguir altos níveis de fiabilidade de armazenamento.
Também existem ferramentas para adicionar redundância a ficheiros ao nível de programa aplicação, para se conseguir altos níveis de fiabilidade de armazenamento.
Tabela 9.22. Lista de ferramentas para adicionar redundância de dados a ficheiros
pacote | popcon | tamanho | descrição |
---|---|---|---|
par2
|
V:4, I:15 | 271 | Parity Archive Volume Set, para verificação e reparação de ficheiros |
dvdisaster
|
V:0, I:2 | 1741 | protecção de dados contra percas/riscos/envelhecimento para medias CD/DVD |
dvbackup
|
V:0, I:0 | 413 | ferramenta de backup que usa câmaras de filmar MiniDV (a disponibilizar rsbep(1)) |
vdmfec
|
V:0, I:0 | 97 | recuperar blocos perdidos a usar o Forward Error Correction |
Existem ferramentas para recuperação de ficheiros e dados e análise forense.
Tabela 9.23. Lista de pacotes para recuperação de ficheiros e dados e análise forense
pacote | popcon | tamanho | descrição |
---|---|---|---|
testdisk
|
V:3, I:38 | 1426 | utilitários para sondagem de partições e recuperação de discos |
magicrescue
|
V:0, I:3 | 259 | utilitário para recuperar ficheiros ao procurar por bytes mágicos |
scalpel
|
V:0, I:4 | 87 | frugal, entalhador de ficheiros de alta performance |
myrescue
|
V:0, I:3 | 83 | recuperar dados de discos rígidos danificados |
extundelete
|
V:1, I:11 | 148 | utilitários para recuperar ficheiros apagados no sistema de ficheiros ext3/4 |
ext4magic
|
V:0, I:4 | 233 | utilitários para recuperar ficheiros apagados no sistema de ficheiros ext3/4 |
ext3grep
|
V:0, I:3 | 281 | ferramenta para ajudar a recuperar ficheiros apagados no sistema de ficheiros ext3 |
scrounge-ntfs
|
V:0, I:3 | 50 | programa de recuperação de dados para sistemas de ficheiros NTFS |
gzrt
|
V:0, I:0 | 33 | conjunto de ferramentas de recuperação gzip |
sleuthkit
|
V:2, I:24 | 1511 | ferramentas para análise forense. (Sleuthkit) |
autopsy
|
V:0, I:2 | 1027 | interface gráfica para o SleuthKit |
foremost
|
V:0, I:7 | 104 | aplicação forense para recuperar dados |
guymager
|
V:0, I:1 | 1030 | ferramenta de imagem forense baseada em Qt |
dcfldd
|
V:0, I:5 | 106 |
versão melhorada do dd para forenses e segurança
|
![]() |
Dica |
---|---|
Pode recuperar ficheiros apagados no sistema de ficheiros ext2 a usar os
comandos |
Quando os dados são muito grandes para fazer backup num ficheiro único, pode fazer backup ao conteúdo dele após dividi-lo em fatias de, por exemplo, 2000Mb e mais tarde fundir essas fatias de volta para o ficheiro original.
$ split -b 2000m ficheiro_grande $ cat x* >ficheiro_grande
![]() |
Cuidado |
---|---|
Por favor certifique-se que não tem nenhuns ficheiros que começam com
" |
De modo a limpar o conteúdo de um ficheiro como um ficheiro log, não use o rm(1) para apagar o ficheiro e depois crie um ficheiro vazio, porque o ficheiro pode ainda estar a ser acedido no intervalo entre comandos. O seguinte é o modo seguro de limpar o conteúdo do ficheiro.
$ :>ficheiro_a_ser_limpo
Os seguintes comandos criam ficheiros dummy ou vazios.
$ 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
Deve encontrar os seguintes ficheiros.
"5kb.file
" é 5KB de zeros.
"7mb.file
" são 7MB de dados aleatórios.
"zero.file
" pode ser um ficheiro de 0 bytes. Se existir,
o mtime
dele é atualizado enquanto o conteúdo e tamanho
dele são mantidos.
"alwayszero.file
" é sempre um ficheiro de 0 bytes. Se
existir, o mtime
dele é atualizado e o conteúdo dele é
reposto.
Existem várias maneiras de apagar completamente os dados de um aparelho
inteiro tipo disco rígido, ex., pen de memória USB em
"/dev/sda
".
![]() |
Cuidado |
---|---|
Primeiro verifique a localização da sua pen de memória USB com o
mount(8)
antes de executar os comandos aqui. O aparelho apontado por
" |
Apagar todo o conteúdo do disco ao repor os dados a 0 com o seguinte.
# dd if=/dev/zero of=/dev/sda
Apagar tudo ao sobrescrever com dados aleatórios como a seguir.
# dd if=/dev/urandom of=/dev/sda
Apagar tudo muito eficientemente ao sobrescrever com dados aleatórios como a seguir.
# shred -v -n 1 /dev/sda
Como o
dd(1)
está disponível a partir da shell de muitos CDs de arranque de Linux como o
CD de instalação de Debian, pode apagar completamente o seu sistema
instalado no disco rígido, por exemplo, "/dev/hda
",
"/dev/sda
", etc., ao correr um comando de limpeza a
partir de tal media de arranque.
A área não utilizada de um disco rígido (ou duma pen USB ), por exemplo
"/dev/sdb1
" pode ainda conter os próprios dados apagados
pois eles são apenas 'desligados' do sistema de ficheiros. Estes podem ser
limpos ao sobrescrever a área onde estão.
# 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
![]() |
Atenção |
---|---|
Normalmente isto é suficientemente bom para a sua pen de memória USB. Mas não é perfeito. A maioria das partes dos nomes de ficheiros apagados e os atributos deles podem ficar escondidos e permanecerem no sistema de ficheiros. |
Mesmo que tenha acidentalmente apagado um ficheiro, desde que esse ficheiro esteja ainda a ser usado por alguma aplicação (em modo de leitura ou escrita), é possível recuperar tal ficheiro.
Por exemplo, tente o seguinte:
$ 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 (apagado) $ cat /proc/4775/fd/4 >bar $ ls -l -rw-r--r-- 1 bozo bozo 4 2008-05-09 00:25 bar $ cat bar foo
Execute em outro terminal (quando tem o pacote lsof
instalado) o seguinte.
$ 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 (apagado) $ 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
Os ficheiros com ligações rígidas podem ser identificados com "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
Ambos "baz
" e "foo
" têm contagens de
ligações de "2" (>1) a mostrar que têm ligaçõesrígidas. Os números de
inode deles são comuns "2738404". Isto
significa que são o mesmo ficheiro em ligação rígida. Se não encontrar
todos os ficheiros em ligação rígida por acaso, pode procurá-los pelo inode, ex., "2738404" com o seguinte.
# find /caminho/para/ponto/de/montagem -xdev -inum 2738404
Com acesso físico ao seu PC, qualquer um pode facilmente ganhar privilégios de root e aceder a todos os ficheiros no seu PC (veja Secção 4.7.4, “Tornar a palavra-passe do root segura”). Isto significa que o sistema de palavra passe no login não pode proteger os seus dados privados e sensíveis contra um possível roubo do seu PC. Tem que implementar uma tecnologia de encriptação de dados para o fazer. Apesar do GNU privacy guard (veja Secção 10.3, “Infraestrutura da segurança de dados”) poder encriptar ficheiro,consome alguns esforços do utilizador.
dm-crypt e eCryptfs facilitam a encriptação de dados automática nativamente através de módulos do kernel Linux com o mínimo de esforço do utilizador.
Tabela 9.24. Lista de utilitários de encriptação de dados
pacote | popcon | tamanho | descrição |
---|---|---|---|
cryptsetup
|
V:29, I:78 | 402 | utilitários para aparelhos de bloco encriptados (dm-crypt / LUKS) |
cryptmount
|
V:4, I:5 | 228 | utilitários para aparelhos de bloco encriptados (dm-crypt / LUKS) com focagem na montagem/desmontagem por utilizadores normais |
ecryptfs-utils
|
V:3, I:5 | 460 | utilitários para sistemas de ficheiros em pilha encriptados (eCryptfs) |
Dm-crypt é um sistema de ficheiros criptográfico que usa mapeador-de-aparelho. O mapeador-de-aparelho mapeia um aparelho de bloco para outro.
eCryptfs é outro sistema de ficheiros criptográfico que usa sistema de ficheiros em pilha. Os sistemas de ficheiros em pilha empilham-se a si próprios no topo de um diretório existente de um sistema de ficheiros montado.
![]() |
Cuidado |
---|---|
A encriptação de dados custa tempo da CPU e etc. Por favor pese os seus benefícios e custos. |
![]() |
Nota |
---|---|
O sistema Debian inteiro pode ser instalado num disco encriptado pelo instalador debian (lenny ou mais recente) a usar dm-crypt/LUKS e initramfs. |
![]() |
Dica |
---|---|
Veja Secção 10.3, “Infraestrutura da segurança de dados” para utilitário de encriptação do espaço de utilizador: GNU Privacy Guard. |
Pode encriptar o conteúdo de aparelhos de massa amovíveis, por exemplo, uma
pen USB em "/dev/sdx
", a usar dm-crypt/LUKS. Simplesmente formate-a como a seguir.
# 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
Depois, pode ser montada tal como uma normal em
"/media/<etiqueta_do_disco>
", à excepção de pedir a
palavra-passe (veja Secção 10.1.7, “Aparelho de armazenamento amovível”) sob
ambientes de trabalho modernos como o GNOME a usar
gnome-mount(1).
A diferença é que todos os dados escritos nela são
encriptados. Alternativamente pode formatar o meio num sistema de ficheiros
diferente, por exemplo, ext4 com "mkfs.ext4
/dev/mapper/sdx1
".
![]() |
Nota |
---|---|
Se é realmente paranóico pela segurança dos dados, pode precisar de
sobrescrever várias vezes (o comando " |
Vamos assumir que o seu "/etc/fstab
" original contém o
seguinte.
/dev/sda7 swap sw 0 0
Pode ativar a encriptação da partição swap a usar o dm-crypt com o seguinte.
# 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
Uma partição de disco criada com dm-crypt/LUKS em
"/dev/sdc5
" pode ser montada em /mnt
"
como a seguir:
$ 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
Pode encriptar ficheiros escritos sob "~/Private/
"
automaticamente a usar eCryptfs e o pacote
ecryptfs-utils
.
Execute
ecryptfs-setup-private(1)
e configure "~/Private/
" pelos seguintes avisos.
Active "~/Private/
" ao executar
ecryptfs-mount-private(1).
Move ficheiros de dados sensitivos para "~/Private/
" e
cria as ligações simbólicas necessárias.
Candidatos: "~/.fetchmailrc
",
"~/.ssh/identity
", "~/.ssh/id_rsa
",
"~/.ssh/id_dsa
" e outros ficheiros com
"go-rwx
"
Mova diretórios de dados sensíveis para um sub-diretório em
"~/Private/
" e crie as ligações simbólicas necessários.
Candidatos: "~/.gnupg
" e outros diretórios com
"go-rwx
"
Crie uma ligação simbólica de "~/Desktop/Private/
" para
"~/Private/
" para facilitar as operações do ambiente de
trabalho.
Desactive "~/Private/
" ao executar
ecryptfs-umount-private(1).
Active "~/Private/
" ao emitir
"ecryptfs-mount-private
" quando necessitar de dados
encriptados.
![]() |
Dica |
---|---|
Como o eCryptfs apenas encripta de modo
selectivo os ficheiros sensíveis, o custo dele para o sistema é muito menor
do que usar o dm-crypt no aparelho de raiz
inteiro ou " |
Se usar a sua palavra-passe do login para embrulhar as chaves de encriptação, pode automatizar a montagem do eCryptfs via PAM (Pluggable Authentication Modules).
Insira a seguinte linha mesmo antes de "pam_permit.so
" em
"/etc/pam.d/common-auth
".
auth required pam_ecryptfs.so unwrap
Insira a seguinte linha mesmo na última linha em
"/etc/pam.d/common-session
".
session optional pam_ecryptfs.so unwrap
Insira a seguinte linha na primeira linha activa em
"/etc/pam.d/common-password
".
password required pam_ecryptfs.so
Isto é bastante conveniente.
![]() |
Atenção |
---|---|
Erros de configuração do PAM podem bloqueá-lo fora do seu próprio sistema. Veja Capítulo 4, Autenticação. |
![]() |
Cuidado |
---|---|
Se usar a sua palavra-passe de login para embrulhar chaves de encriptação, os seus dados encriptados são tão seguros como a sua palavra-passe de login de utilizador (veja Secção 4.3, “Boa palavra-passe”). A menos que seja cuidadoso a configurar uma palavra-passe forte, os seus dados estão em risco quando alguém corre software de crackar palavras-passe após roubar o seu portátil (veja Secção 4.7.4, “Tornar a palavra-passe do root segura”). |
Debian distribui o kernel Linux organizado em módulos como pacotes para as arquitecturas suportadas.
Existem algumas funcionalidades notáveis no kernel Linux 2.6/3.x comparado ao 2.4.
Os aparelhos são criados pelo sistema udev (veja Secção 3.3, “O sistema udev”).
Os acessos de leitura/escrita a aparelhos CD/DVD IDE não usam o módulo
ide-scsi
.
As funções de filtragem de pacotes de rede usam módulos
iptables
do kernel.
O impacto de versões de Linux 2.6.39 a Linux 3.0 não é acerca de grandes alterações tecnológicas mas acerca do 20º aniversário.
Muitas funcionalidades do Linux são configuráveis via parâmetros de kernel como a seguir.
Parâmetros de kernel iniciados pelo gestor de arranque (veja Secção 3.1.2, “Estágio 2: o gestor de arranque”)
Parâmetros de kernel alterados pelo sysctl(8) durante a execução para os acessíveis via sysfs (veja Secção 1.2.12, “procfs e sysfs”)
Parâmetros de módulos definidos por argumentos do modprobe(8) quando um módulo é activado (veja Secção 9.6.3, “Montar o ficheiro de imagem de disco”)
Veja "kernel-parameters.txt(.gz)
" e outros documentos
relacionados na documentação do kernel Linux
("/usr/share/doc/linux-doc-3.*/Documentation/filesystems/*
")
disponibilizados pelo pacote linux-doc-3.*
.
A maioria dos programas normais não
precisa dos cabeçalhos do kernel e na verdade podem bloquear se os usar
directamente para compilação. Eles devem ser compilados contra os cabeçalhos
em "/usr/include/linux
" e
"/usr/include/asm
" disponibilizado pelo pacote
libc6-dev
(criado a partir do pacote fonte
glibc
) no sistema Debian.
![]() |
Nota |
---|---|
Para compilar alguns programas específicos do kernel como módulos de kernel
a partir de fonte externa e o daemon de auto-montagem
( |
O Debian tem método próprio dele para compilar o kernel e os módulos relacionados.
Tabela 9.25. Lista de pacotes chave a serem instalados para a recompilação do kernel no sistema Debian
pacote | popcon | tamanho | descrição |
---|---|---|---|
build-essential
|
I:499 | 20 |
pacotes essenciais para construir pacotes Debian: make ,
gcc , …
|
bzip2
|
V:157, I:970 | 122 | utilitários de compressão e descompressão para ficheiros bz2 |
libncurses5-dev
|
I:116 | 6 | bibliotecas de programadores e documentos para ncurses |
git
|
V:305, I:478 | 35040 | git: sistema de controle de versão distribuído usado pelo kernel Linux |
fakeroot
|
V:35, I:521 | 228 | disponibiliza um ambiente de falso-root para construção de pacotes como não-root |
initramfs-tools
|
V:371, I:989 | 112 | ferramenta para construir uma initramfs (específico de Debian) |
dkms
|
V:70, I:219 | 294 | suporte de módulos de kernel dinâmicos (DKMS) (genérico) |
devscripts
|
V:9, I:57 | 2623 | scripts de ajuda para um responsável de pacote Debian (específico de Debian) |
Se usa initrd
em Secção 3.1.2, “Estágio 2: o gestor de arranque”, certifique-se de ler a informação
relacionada em
initramfs-tools(8),
update-initramfs(8),
mkinitramfs(8)
e
initramfs.conf(5).
![]() |
Atenção |
---|---|
Não ponha ligações simbólicas aos diretórios na árvore fonte
(ex. " |
![]() |
Nota |
---|---|
Quando compilar o kernel Linux mais recente no sistema Debian
|
![]() |
Nota |
---|---|
O suporte dinâmico a módulos do kernel (DKMS) é uma nova infraestrutura independente da distribuição desenhada para permitir que módulos de kernel individuais sejam atualizados sem se alterar todo o kernel. Isto é usado para a manutenção de módulos de fora-da-árvore. Isto também facilita a reconstrução de módulos quando se atualiza os kernels. |
Para compilar pacotes binários de kernels personalizados a partir do
código-fonte original, deve utilizar o alvo disponibilizado por
"deb-pkg
".
$ 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
![]() |
Dica |
---|---|
O pacote linux-source-<version> disponibiliza o código-fonte do kernel
Linux com os patches Debian como
" |
Para construir pacotes binários específicos a partir do pacote de
código-fonte do kernel Debian, deve utilizar os alvos
"binary-arch_<architecture>_<featureset>_<flavour>
"em
"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
Veja mais informação:
Wiki Debian: KernelFAQ
Wiki Debian: DebianKernel
Debian Linux Kernel Handbook: https://kernel-handbook.debian.net
O controlador de hardware é o código que corre no sistema alvo. A maioria
dos controladores de hardware estão agora disponíveis como software livre e
estão incluídos nos pacotes normais de kernel Debian na área
main
.
O firmware é o código ou dados carregados no aparelho (e.g. CPU microcode, código de renderização na GPU, ou dados FPGA / CPLD, ...). Alguns pacotes de firmware estão disponíveis como software livre, mas muitos pacotes de firmware não estão disponíveis como software livre já que são compostos por dados binários sem código-fonte.
firmware-linux-free (main
)
firmware-linux-nonfree (non-free
)
firmware-linux-* (non-free
)
firmware (non-free
)
intel-microcode (non-free
)
amd64-microcode (non-free
)
Por favor note que os pacotes non-free
e
contrib
não fazem parte do sistema Debian. A configuração
de acesso para ativar ou desativar as áreas non-free
e
contrib
é descrita em Secção 2.1.4, “Básico do arquivos Debian”. Deve estar ciente dos contras associados
à utilização de pacotes non-free
e
contrib
, conforme é descrito em Secção 2.1.5, “Debian é 100% software livre”.
O uso de sistema virtualizado permite-nos correr várias instâncias do sistema simultâneamente num único hardware.
![]() |
Dica |
---|---|
Existem vários pacotes relacionados com sistemas de virtualização e emulação em Debian para além do simples chroot. Alguns pacotes também o ajudam a configurar tais sistemas.
Tabela 9.26. Lista de ferramentas de virtualização
pacote | popcon | tamanho | descrição |
---|---|---|---|
schroot
|
V:7, I:10 | 2708 | ferramenta especializada para executar pacotes binários Debian em chroot |
sbuild
|
V:1, I:4 | 286 | ferramenta para construir pacotes binários Debian a partir de fontes Debian |
pbuilder
|
V:2, I:16 | 966 | construtor de pacotes pessoais para pacotes Debian |
debootstrap
|
V:6, I:63 | 298 | bootstrap um sistema Debian básico (escrito em sh) |
cdebootstrap
|
V:0, I:3 | 116 | bootstrap um sistema Debian (escrito em C) |
virt-manager
|
V:10, I:42 | 2298 | Virtual Machine Manager: aplicação de ambiente de trabalho para gerir máquinas virtuais |
libvirt-clients
|
V:43, I:62 | 1167 | programas para a biblioteca libvirt |
bochs
|
V:0, I:1 | 7194 | Bochs: emulador PC IA-32 |
qemu
|
I:34 | 94 | QEMU: emulador de processador genérico rápido |
qemu-system
|
I:21 | 95 | QEMU: binários de emulação de sistema completo |
qemu-user
|
V:0, I:13 | 89671 | QEMU: binários de emulação em modo de utilizador |
qemu-utils
|
V:11, I:107 | 6083 | QEMU: utilitários |
qemu-kvm
|
V:10, I:61 | 107 | KVM: virtualização completa em hardware x86 com virtualização assistida por hardware |
virtualbox
|
V:12, I:16 | 106495 | VirtualBox: solução de virtualização x86 em i386 e amd64 |
xen-tools
|
V:0, I:4 | 727 | ferramentas para gerir o servidor virtual XEN do debian |
wine
|
V:19, I:82 | 192 | Wine: Windows API Implementation (suite standard) |
dosbox
|
V:2, I:18 | 2742 | DOSBox: emulador x86 com gráficos Tandy/Herc/CGA/EGA/VGA/SVGA, som e DOS |
dosemu
|
V:0, I:2 | 4891 | DOSEMU: O Emulador de DOS do Linux |
vzctl
|
V:0, I:1 | 1112 | OpenVZ solução de virtualização de servidor - ferramentas de controle |
vzquota
|
V:0, I:1 | 236 | OpenVZ solução de virtualização de servidor - ferramentas de quotas |
lxc
|
V:10, I:15 | 18761 | Ferramentas de utilizador para Linux containers |
Veja o artigo da Wikipedia Comparação de plataformas de máquinas virtuais para uma comparação detalhada das diferentes soluções de plataformas de virtualização.
![]() |
Nota |
---|---|
Algumas funcionalidades descritas aqui apenas estão disponíveis em
|
![]() |
Nota |
---|---|
Os kernels predefinidos de Debian suportam KVM
desde |
O fluxo e trabalho típico para virtualização envolve vários passos.
Criar um sistema de ficheiros vazio (uma árvore de ficheiros ou uma imagem de disco).
A árvore de ficheiros pode ser criada por "mkdir -p
/path/to/chroot
".
A imagem de disco crua pode ser criada com o dd(1) (veja Secção 9.6.1, “Criar o ficheiro de imagem de disco” e Secção 9.6.5, “Criar um ficheiro de imagem de disco vazio”).
qemu-img(1) pode ser usado para criar e converter ficheiros de imagem de disco suportados pelo QEMU.
Os formatos de ficheiro cru e VMDK podem ser usados como formatos comuns entre ferramentas de virtualização.
Montar a imagem de disco com mount(8) no sistema de ficheiros (opcional).
Para o ficheiro de imagem de disco cru, monte-o como aparelho loop ou aparelho do device mapper (veja Secção 9.6.3, “Montar o ficheiro de imagem de disco”).
Para imagens de disco suportadas pelo QEMU, monte-as como aparelhos de bloco de rede (veja Secção 9.10.3, “Montar o ficheiro de imagem de disco virtual”).
Povoar o sistema de ficheiros alvo com os dados de sistema necessários.
O uso de programas como o debootstrap
e o
cdebootstrap
ajudam com este processo (veja Secção 9.10.4, “Sistema chroot”).
Use instaladores de SOs sob o emulador de sistema completo.
Correr um programa sob um ambiente virtualizado.
chroot disponibiliza um ambiente virtualizado básico suficiente para compilar programas, correr aplicações de consola e correr daemons nele.
QEMU oferece emulação de CPU de várias plataformas.
QEMU com KVM oferece emulação de sistema completo pela virtualização assistida a hardware.
VirtualBox oferece emulação de sistema completo em i386 ou amd64 com ou sem a virtualização assistida a hardware.
Para o ficheiro de imagem de disco raw, veja Secção 9.6, “A imagem de disco”.
Para outros ficheiros de imagem de disco virtual, pode usar o
qemu-nbd
para exportá-los pelo protocolo aparelho de bloco de rede e montá-los a
usar o módulo de kernel nbd
.
O qemu-nbd(8) suporta os formatos de disco suportados pelo QEMU: O QEMU suporta os seguintes formatos de discos: raw, qcow2, qcow, vmdk, vdi, bochs, cow (modo-de-utilizador de Linux de copiar-ao-escrever), parallels, dmg, cloop, vpc, vvfat (VFAT virtual) e aparelho_máquina.
O aparelho de bloco em rede pode
suportar partições do mesmo modo que o aparelho de
loop (veja Secção 9.6.3, “Montar o ficheiro de imagem de disco”). Pode
montar a primeira partição de "disk.img
" como a seguir.
# modprobe nbd max_part=16 # qemu-nbd -v -c /dev/nbd0 disk.img ... # mkdir /mnt/part1 # mount /dev/nbd0p1 /mnt/part1
![]() |
Dica |
---|---|
Pode exportar apenas a primeira partição de " |
chroot(8) oferece a maneira mais básica de correr diferentes instâncias do ambiente GNU/Linux num único sistema em simultâneo sem reiniciar.
![]() |
Cuidado |
---|---|
Os exemplos em baixo assumem que ambos os sistemas pai e chroot partilham a mesma arquitectura de CPU. |
Pode aprender a como configurar e usar chroot(8) ao correr o programa pbuilder(8) sob script(1) como a seguir.
$ sudo mkdir /sid-root $ sudo pbuilder --create --no-targz --debug --buildplace /sid-root
Vê como
debootstrap(8)
ou
cdebootstrap(1)
povoam dados do sistema para ambiente sid
sob
"/sid-root
".
![]() |
Dica |
---|---|
Estes debootstrap(8) ou cdebootstrap(1) são usados para instalar Debian pelo instalador Debian Installer. Estes também podem ser usados para instalar Debian num sistema sem usar um disco de instalação de Debian, mas em vez disso, a partir de outra distribuição de GNU/Linux. |
$ sudo pbuilder --login --no-targz --debug --buildplace /sid-root
Pode ver como uma shell de sistema a correr sob ambiente
sid
é criada como o seguinte.
Copiar configuração local ("/etc/hosts
",
"/etc/hostname
", "/etc/resolv.conf
")
Montar o sistema de ficheiros "/proc
"
Montar o sistema de ficheiros "/dev/pts
"
Criar "/usr/sbin/policy-rc.d
" o qual sempre existe com
101
Corra "chroot /sid-root bin/bash -c 'exec -a -bash
bin/bash'
"
![]() |
Nota |
---|---|
Alguns programas sob chroot podem requerer acesso a mais ficheiros do
sistema pai para funcionarem do que o |
![]() |
Nota |
---|---|
O ficheiro " |
![]() |
Dica |
---|---|
O objetivo original do pacote especializado chroot,
|
![]() |
Dica |
---|---|
De modo semelhante, o pacote |
Recomendo usar o QEMU ou o VirtualBox num sistema Debian
stable
para correr vários sistemas de ambiente de
trabalho em segurança a usar virtualização. Isto permite-lhe correr
aplicações de ambiente de trabalho do Debian unstable
e
testing
sem os riscos usuais associados a elas.
Como o QEMU puro é muito lento, é recomendado acelerá-lo com KVM quando o sistema da máquina o suporta.
A imagem de disco virtual "virtdisk.qcow2
" que contem um
sistema Debian para o QEMU pode ser criada a
usar o instalador de debian em
pequenos CDs como a seguir.
$ 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 ...
Veja mais dicas em Debian wiki: QEMU.
O VirtualBox vem com ferramentas GUI Qt e é bastante intuitivo. As suas ferramentas GUI e de linha de comandos estão explicadas em Manual do Utilizador do VirtualBox e Manual do Utilizador do VirtualBox (PDF).
![]() |
Dica |
---|---|
Correr outras distribuições de GNU/Linux como o Ubuntu e o Fedora sob virtualização é um bom modo de aprender dicas de configuração. Também outros SOs proprietários podem correr muito bem sob esta virtualização do GNU/Linux. |