Índice
Aqui, eu 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:84, I:284 | 992 | terminal multiplexador com emulação de terminal VT100/ANSI |
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).
Você faz login numa máquina remota.
Você arranca o screen
numa consola única.
Você executa múltiplos programas na janela criada do
screen
com ^A c
("Ctrl-A" seguido de
"c").
Você muda entre as múltiplas janelas do screen
com
^A n
("Ctrl-A" seguido de "n").
Subitamente você precisa de abandonar o seu terminal, mas não quer perder o seu trabalho activo mantendo a ligação.
Você 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 dele.
Você faz login de novo para a mesma máquina remota (mesmo a partir de um terminal diferente).
Você inicia o screen
como "screen -r
".
O screen
magicamente reagrupa todas as janelas screen
anteriores com todos os programas a funcionar activamente.
![]() |
Dica |
---|---|
Você pode poupar despesas de ligação com o |
Numa sessão do screen
, todas as entradas do teclado são
enviadas para a sua janela actual 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 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 ela |
^A n
|
vai para a janela seguinte |
^A p
|
vai para a janela anterior |
^A 0
|
vai para a janela número 0 |
^A 1
|
vai para a janela número 1 |
^A w
|
mostra uma lista de janelas |
^A a
|
envia Ctrl-A para a janela actual como entrada do teclado |
^A h
|
escreve uma cópia física da janela actual para um ficheiro |
^A H
|
inicia/termina o registo da janela actual 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 actividades sob o directório
"/var/log/
".
O daemon de log do kernel: klogd(8)
O daemon de log do sistema: rsyslogd(8)
Veja Secção 3.2.9, “A mensagem do sistema” e Secção 3.2.10, “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:21, I:23 | 2132 | analisador de log com saída bonita escrito em Perl |
fail2ban
|
V:72, I:82 | 563 | banir IPs que causam vários erros de autenticação |
analog
|
V:6, I:138 | 3165 | analisador de log do servidor web |
awstats
|
V:16, I:24 | 3141 | analisador de logs de servidor web poderoso e cheio de funcionalidades |
sarg
|
V:9, I:10 | 685 | gerador de relatórios de análises do squid |
pflogsumm
|
V:1, I:4 | 133 | resumidor de entradas do relatório do Postfix |
syslog-summary
|
V:1, I:8 | 84 | resume o conteúdo do um ficheiro de log do syslog |
lire
|
V:0, I:0 | 3700 | analisador de registos cheiro de funcionalidades e gerador de relatórios |
fwlogwatch
|
V:0, I:1 | 440 | analisador de log da firewall |
squidview
|
V:0, I:3 | 211 | monitoriza e analisa ficheiros access.log do squid |
visitors
|
V:0, I:1 | 293 | analisador de log do servidor web rápido |
swatch
|
V:0, I:1 | 112 | visualizador de ficheiros de registo com correspondência de expressões regulares, destaque, e hooks. |
crm114
|
V:0, I:0 | 1074 | Mutilador de Expressões Regulares Controlável e Filtro de Spam (CRM114) |
icmpinfo
|
V:0, I:1 | 84 | interpretar mensagens ICMP |
![]() |
Nota |
---|---|
CRM114 disponibiliza uma infraestrutura de linguagem para escrever filtros fuzzy com a biblioteca de expressões regulares TRE. O seu uso popular é 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 actividades da shell”) para gravar a actividade 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 você 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 |
---|---|
Você pode usar o
screen(1)
com " |
![]() |
Dica |
---|---|
Você 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 objectivos 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 seu alias de modo paginador
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 actual 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 você deseja realmente personalizar este formato de amostragem da hora e
data para além do locale, você 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 |
---|---|
Você pode eliminar a escrita de opções longas na linha de comandos usando
nomes alternativos de comandos, ex. " |
![]() |
Dica |
---|---|
ISO 8601 é seguido por estes formatos iso. |
A escrita da shell nos terminais mais modernos pode ser colorida usando
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 interactivo. Eu 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 você deseja suprimir a cor quando canaliza (pipe) para outros programas,
use antes "--color=auto
" no exemplo em cima para
"~/.bashrc
".
![]() |
Dica |
---|---|
Você pode desligar estes nomes alternativos coloridos no ambiente
interactivo ao invocar a shell com " |
Você pode recordar as actividades do editor para repetições complexas.
Para o Vim, como se segue.
"qa
": inicia a gravação de caracteres teclados no registo
nomeado "a
".
... actividades do editor
"q
": termina a gravação de caracteres escritos
"@a
": executa o conteúdo do registo
"a
".
Para Emacs, como se segue
"C-x (
": começa a definir uma macro de teclado.
... actividades 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,
incluindo um mostrador xterm
.
Tabela 9.5. Lista de ferramentas gráficas de manipulação de imagens
pacote | popcon | tamanho | comando |
---|---|---|---|
xbase-clients
|
I:144 | 62 | xwd(1) |
gimp
|
V:102, I:519 | 15644 | Menu GUI |
imagemagick
|
V:229, I:579 | 247 | import(1) |
scrot
|
V:4, I:25 | 80 | 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:20, I:24 | 206 | armazenar ficheiros de configuração e os seus meta-dados com Git (predefinido), Mercurial, ou Bazaar (novo) |
changetrack
|
V:0, I:1 | 109 | armazenar ficheiros de configuração com RCS (antigo) |
Eu recomendo usar o pacote etckeeper
com o
git(1)
o qual põe o "/etc
" inteiro sob controle de VCS. O seu
guia de instalação e tutorial podem ser encontrados 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 você 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 você executa comandos de gestão de pacote.
![]() |
Dica |
---|---|
Você pode explorar o histórico de alterações de " |
As actividades de programas podem ser monitorizadas e controladas usando ferramentas especiais
Tabela 9.7. Lista de ferramentas para monitorizar e controlar as actividades de programas
pacote | popcon | tamanho | descrição |
---|---|---|---|
coreutils
|
V:866, I:999 | 13844 | nice(1): correr um programa com prioridade de agendamento modificada |
bsdutils
|
V:815, I:999 | 180 | renice(1): modifica a prioridade de agendamento de um processo em execução |
procps
|
V:811, I:999 | 670 |
"/proc " utilitários de sistema de ficheiros:
ps(1),
top(1),
kill(1)
,
watch(1),
…
|
psmisc
|
V:639, I:966 | 764 |
"/proc " utilitários de sistema de ficheiros:
killall(1),
fuser(1),
peekfd(1),
pstree(1)
|
time
|
V:51, I:885 | 108 | time(1): corre um programa para reportar as utilizações de recursos do sistema no que respeita a tempo |
sysstat
|
V:76, I:94 | 983 | sar(1), iostat(1), mpstat(1), …: ferramentas de performance do sistema para Linux |
isag
|
V:0, I:6 | 131 | Interactive System Activity Grapher para sysstat |
lsof
|
V:401, I:931 | 420 | lsof(8):
lista os ficheiro abertos por um processo em execução usando a opção
"-p "
|
strace
|
V:28, I:191 | 990 | strace(1): rastreia chamadas e sinais do sistema |
ltrace
|
V:2, I:25 | 333 | ltrace(1): rastreia chamadas de bibliotecas |
xtrace
|
V:0, I:1 | 336 | xtrace(1): rastreia a comunicação entre cliente X11 e servidor |
powertop
|
V:6, I:227 | 529 | powertop(1): informação sobre a utilização do sistema de energia |
cron
|
V:863, I:998 | 193 | corre processos de acordo com uma agenda nos bastidores a partir do daemon cron(8) |
anacron
|
V:450, I:547 | 60 | agenda de comandos tipo cron para sistemas que não funcionam 24 horas por dia |
at
|
V:503, I:887 | 103 | 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 actividade 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), você 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 interactivo de ecrã total. Você pode obter a sua ajuda de utilização ao pressionar a tecla "h" e terminá-lo ao pressionar a tecla "q".
Você 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
.
Você pode rastrear a actividade 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.
Você pode rastrear as chamadas do sistema do comando ls
como se segue.
$ sudo strace ls
Você 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).
Você 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 você sabe que o seu sistema correr o exim4(8) para lidar com as ligações TCP para o porto 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 é actualizado 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 padrão 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 selecçã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 directó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 directó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 se segue:
[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 se segue:
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 directórios base (veja Especificação de Directório Base
XDG) e os directórios applications
sejam como se
segue:
$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 directó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" → "Seleccionar 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(8)
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)
actualiza 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).
Você 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, você pode corrê-los
periodicamente a partir da conta root ao colocar 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 actual |
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. Colocar " |
![]() |
Dica |
---|---|
A partir de um terminal SSH etc., você pode usar a funcionalidade Alt-SysRq
ao escrever para o " |
Você 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 |
---|---|
" |
Você 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 dispositivos 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, você pode identificar o hardware ao ler os conteúdos de
"/proc/bus/pci/devices
" ou explorar a árvore de
directó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:181, I:989 | 1069 | Utilitários PCI do Linux: lspci(8) |
usbutils
|
V:217, I:892 | 640 | Utilitários USB do Linux: lsusb(8) |
pcmciautils
|
V:64, I:187 | 121 | Utilitários PCMCIA par Linux: pccardctl(8) |
scsitools
|
V:1, I:6 | 302 | colecção de ferramentas para gestão de hardware SCSI: lsscsi(8) |
procinfo
|
V:1, I:21 | 164 |
informação do sistema obtida de "/proc ":
lsdev(8)
|
lshw
|
V:11, I:82 | 793 | informação acerca da configuração do hardware: lshw(1) |
discover
|
V:49, I:867 | 122 | 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:507, I:877 | 467 | tipo de letra da consola Linux e utilitários da tabela de teclas |
x11-xserver-utils
|
V:386, I:613 | 485 | Utilitários do servidor X: xset(1), xmodmap(1) |
acpid
|
V:554, I:946 | 179 | daemon para gerir eventos entregues pelo Advanced Configuration and Power Interface (ACPI) |
acpi
|
V:48, I:865 | 71 | utilitário para mostrar informação em dispositivos ACPI |
apmd
|
V:1, I:32 | 94 | daemon para gerir eventos entregues pelo Advanced Power Management (APM) |
sleepd
|
V:0, I:0 | 55 | daemon para colocar um portátil em modo de adormecimento durante a inactividade |
hdparm
|
V:403, I:639 | 187 | optimização do acesso ao disco rígido (veja Secção 9.5.9, “Optimização do disco rígido”) |
smartmontools
|
V:63, I:241 | 1683 | controlar e monitorizar sistemas de armazenamento usando S.M.A.R.T. |
setserial
|
V:6, I:16 | 141 | colecção de ferramentas para gestão de portas série |
memtest86+
|
V:3, I:68 | 2424 | colecção de ferramentas para gestão de hardware de memória |
scsitools
|
V:1, I:6 | 302 | colecção de ferramentas para gestão de hardware SCSI |
tpconfig
|
V:0, I:5 | 164 | utilitário para configurar dispositivos touchpad |
setcd
|
V:0, I:1 | 28 | optimização de acesso a drives de discos compactos |
big-cursor
|
I:1 | 48 | 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 actualizar a hora do sistema através da rede, considere usar o
serviço NTP como pacotes como os
ntp
, ntpdate
, e
chrony
.
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 actual 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 dispositivos de som, mas também para aceder a eles através de alguns sistemas servidores de som normalizados.
Tabela 9.14. Lista de pacotes de som
pacote | popcon | tamanho | descrição |
---|---|---|---|
alsa-base
|
I:548 | 83 | ficheiros de configuração da driver ALSA |
alsa-utils
|
V:391, I:556 | 2042 | utilitários para configurar e utilizar ALSA |
oss-compat
|
V:18, I:84 | 7 |
compatibilidade de OSS sob ALSA para prevenir erros de "/dev/dsp
não encontrado "
|
jackd
|
V:4, I:27 | 32 | servidor (baixa latência) JACK Audio Connection Kit. (JACK) |
libjack0
|
I:37 | 148 | biblioteca (baixa latência) JACK Audio Connection Kit. (JACK) |
nas
|
V:0, I:1 | 268 | servidor Network Audio System (NAS) |
libaudio2
|
I:572 | 175 | biblioteca Network Audio System (NAS) |
pulseaudio
|
V:320, I:435 | 4944 | servidor PulseAudio, substituto para o ESD |
libpulse0
|
V:242, I:651 | 888 | biblioteca cliente PulseAudio, substituto para o ESD |
libgstreamer0.10-0
|
V:241, I:597 | 3991 | GStreamer: motor de som do GNOME |
libphonon4
|
I:244 | 609 | 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 desactivar o protector de ecrã, utilize os seguintes comandos.
Tabela 9.15. Lista de comandos para desactivar o protector de ecrã
ambiente | comando |
---|---|
A consola do Linux |
setterm -powersave off
|
O X Window (desactivar o protector de ecrã) |
xset s off
|
O X Window (desactivar 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 desactivar 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 você 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
Você 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), eu 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 a exploração externa.
Para segurança do sistema e verificação de integridade, você 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:16, I:20 | 218 | daemon para enviar para o administrador por mail as anomalias nos ficheiros de log do sistema |
debsums
|
V:14, I:41 | 200 | utilitário para verificar os pacotes instalados contra chaves de verificação MD5 |
chkrootkit
|
V:11, I:39 | 976 | detector de rootkit |
clamav
|
V:20, I:78 | 755 | utilitário de anti-vírus para Unix - interface de linha de comandos |
tiger
|
V:5, I:7 | 2519 | relatar vulnerabilidades de segurança do sistema |
tripwire
|
V:5, I:6 | 10139 | verificador de integridade de ficheiros e directórios |
john
|
V:4, I:16 | 448 | ferramenta activa de crack de palavras-passe |
aide
|
V:1, I:2 | 1499 | Ambiente de Detecção de Intrusão Avançado - binário estático |
integrit
|
V:0, I:0 | 440 | programa de verificação de integridade de ficheiros |
crack
|
V:0, I:1 | 160 | 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 dispositivo 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 directório.
![]() |
Dica |
---|---|
Pode alimentar a saída de
du(8)
a
xdu(1x)
para produzir a sua apresentação gráfica 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:860, I:999 | 2737 | Não suportado | vários utilitários de sistema incluindo fdisk(8) e cfdisk(8) |
parted
|
V:104, I:245 | 261 | Suportado | GNU Parted programa de redimensionamento de partições do disco |
gparted
|
V:28, I:153 | 6582 | Suportado |
Editor de partições do GNOME baseado na libparted
|
gdisk
|
V:7, I:125 | 793 | Suportado | editor de partições para o disco GPT |
kpartx
|
V:14, I:26 | 106 | Suportado | programa para criar mapeamentos de dispositivo para partições |
![]() |
Cuidado |
---|---|
Apesar do parted(8) afirmar também criar e redimensionar sistemas de ficheiros, é mais seguro fazer tais coisas usando 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, você 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, você pode aceder-lhes de modo consistente. Isto é também útil se você tem múltiplos discos e a sua BIOS não lhes fornecer nomes de dispositivo consistentes.
mount(8)
com a opção "-U
" pode montar um dispositivo de bloco
usando o UUID, em vez de usar o seu nome de
ficheiro 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 |
---|---|
Você pode testar o UUID de um dispositivo especial de bloco com blkid(8). |
![]() |
Dica |
---|---|
Nós de dispositivos de dispositivos 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
interactivamente. (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 o
mkfs.ext4(8)
e o
fsck.ext4(8)
(estão ligados por hardlink aos
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:566, I:999 | 2957 | utilitários para os sistemas de ficheiros ext2/ext3/ext4 |
reiserfsprogs
|
V:5, I:28 | 1085 | utilitários para o sistema de ficheiros Reiserfs |
dosfstools
|
V:59, I:592 | 238 | utilitários para o sistema de ficheiros FAT. (Microsoft: MS-DOS, Windows) |
xfsprogs
|
V:19, I:73 | 3513 | utilitários para o sistema de ficheiros XFS. (SGI: IRIX) |
ntfs-3g
|
V:189, I:577 | 1506 | utilitários para o sistema de ficheiros NTFS. (Microsoft: Windows NT, …) |
jfsutils
|
V:2, I:17 | 1031 | utilitários para o sistema de ficheiros JFS. (IBM: AIX, OS/2) |
reiser4progs
|
V:0, I:5 | 1254 | utilitários para o sistema de ficheiros Reiser4 |
hfsprogs
|
V:0, I:9 | 274 | utilitários para os sistemas de ficheiros HFS e HFS Plus. (Apple: Mac OS) |
btrfs-tools
|
V:16, I:29 | 2854 | utilitários para o sistema de ficheiros btrfs |
zerofree
|
V:1, I:16 | 14 | 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.
![]() |
Cuidado |
---|---|
Geralmente não é seguro correr o |
![]() |
Dica |
---|---|
Verifique os ficheiros em " |
![]() |
Dica |
---|---|
Use " |
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 |
---|---|
Pode ser utilizado o UUID (veja Secção 9.5.3, “Aceder a partição usando UUID”) para identificar um dispositivo
de bloco em vez do seu vulgar nome de dispositivo 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
dispositivos 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 |
---|---|
Você 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 seu super-bloco usando 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. |
Você 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, você pode
acelerá-lo com "hdparm -q -c3 -d1 -u1 -m16 /dev/hda
" ao
activar o suporte a "(E)IDE 32-bit I/O", activando a flag "using_dma",
definindo a flag "interrupt-unmask", e definindo o "multiple 16 sector I/O"
(perigoso!).
Você pode testar a funcionalidade de cache de escrita de um disco rígido,
por exemplo "/dev/sda
", com "hdparm -W
/dev/sda
". Você pode desactivar a sua funcionalidade de cache de
escrita com "hdparm -W 0 /dev/sda
".
Você 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 se segue.
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
.
Activar o comando TRIM
Activar 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 o seus dados vulneráveis a falhas de alimentação. |
Você 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á actualmente
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 directório de
armazenamento temporário "/tmp
". Se
"/tmp
" não disponibilizar espaço suficiente, pode
especificar um directó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 dispositivos de armazenamento sem grandes reconfigurações do sistema.
Se tiver uma partição vazia (ex. "/dev/sdx
"), você pode
formatá-la com
mkfs.ext4(1)
e
mount(8)
para um directó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 |
---|---|
Você 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 dispositivo 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 directório vazio
(p.e. "/caminho/para/directório-vazio
") com espaço
utilizável noutra partição, você pode fazer mount(8) para o mesmo com a
opção "--bind
para um directório (p.e.,
"directório-de-trabalho
") onde necessite de mais espaço.
$ sudo mount --bind /caminho/para/directório-vazio directório-de-trabalho
![]() |
Dica |
---|---|
Este método é depreciado. Em vez disso, se possível, utilize Secção 9.5.15, “Expandir o espaço de armazenamento utilizável ao fazer bind-mount para outro directório” |
Se tem um directório vazio
(ex. "/caminho/para/directório-vazio
") noutra partição
com espaço utilizável, você pode criar um link simbólico para o directó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 directório" para directórios
geridos pelo sistema, tais como o " |
![]() |
Cuidado |
---|---|
Algum software pode não funcionar bem com "links simbólicos para directórios". |
Se você tem espaço utilizável noutra partição
(ex. "/caminho/para/
"), você pode criar um directório
nela e empilhá-lo no directório onde precisa de espaço com o aufs.
$ sudo mv work-dir old-dir $ sudo mkdir work-dir $ sudo mkdir -p /path/to/emp-dir $ sudo mount -t aufs -o br:/path/to/emp-dir:old-dir none work-dir
![]() |
Cuidado |
---|---|
O uso do aufs para armazenamento de dados a longo termo não é boa ideia porque está sob desenvolvimento e as alterações ao seu desenho podem introduzir problemas. |
Aqui discutimos manipulações da imagem do disco.
O ficheiro de imagem de disco, "disco.img
", de um
dispositivo não montado, ex., a segunda drive SCSI ou serial ATA
"/dev/sdb
", pode ser feito usando 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 usando 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 você tem um dispositivo SCSI ou serial ATA como disco de arranque,
substitua "/dev/hda
" por "/dev/sda
".
Se você 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 dispositivo 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 dispositivo loop como se segue.
# 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 se segue.
# 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 usando o dispositivo loop. Como o dispositivo loop não
gere partições por predefinição, temos que o redefinir como se segue.
# 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 dispositivo 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 dispositivos
device mapper criados pelo
kpartx(8)
do pacote kpartx
como se segue.
# 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 |
---|---|
Você também pode montar uma única partição de tal imagem de disco com o dispositivo loop usando 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 em uma 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 se segue.
# 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 usando o
dd(1)
como se segue.
$ dd bs=1 count=0 if=/dev/zero of=disk.img seek=5G
Você pode criar um sistema de ficheiros ext4 nesta imagem de disco
"disk.img
" usando o dispositivo
loop como se segue.
# 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 seu tamanho de ficheiro é 5.0 Gb e a
sua utilização real do disco é apenas 83 Mb. Esta discrepância é possível
porque o ext4 ponde manter o ficheiro sparse.
![]() |
Dica |
---|---|
A utilização de disco real do ficheiro sparse cresce com os dados que são escritos nele. |
Usando uma operação semelhante em dispositivos criados pelo dispositivo loop ou o mapeador de dispositivos como Secção 9.6.3, “Montar o ficheiro de imagem de disco”, você pode particionar esta imagem
de disco "disk.img
" usando o
parted(8)
ou o
fdisk(8),
e pode criar um sistema de ficheiros nela usando
mkfs.ext4(8),
mkswap(8),
etc.
O ficheiro de imagem ISO9660,
"cd.iso
", a partir da árvore de directórios fonte em
"source_directory
" pode ser feito usando o
genisoimage(1)
disponibilizado pelo cdrkit com o seguinte.
# genisoimage -r -J -T -V volume_id -o cd.iso directó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 directórios em
"source_directory
" 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 directório_fonte
Aqui é usado para arranque o boot loader Isolinux (veja Secção 3.1.2, “Estágio 2: o gestor de arranque”).
Você pode calcular o valor md5sum e fazer a imagem ISO9660 directamente a partir do dispositivo CD-ROM como se segue.
$ 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 |
---|---|
Você 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. |
Você pode procurar um dispositivo 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 dispositivo,
ex. "/dev/hda
", usando 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, “Dispositivo 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:866, I:999 | 13844 | pacote básico que tem od(1) para despejar ficheiros (HEX, ASCII, OCTAL, …) |
bsdmainutils
|
V:846, I:999 | 571 | pacote utilitário que tem hd(1) para despejar ficheiros (HEX, ASCII, OCTAL, …) |
hexedit
|
V:1, I:13 | 89 | editor binário e visualizador (HEX, ASCII) |
bless
|
V:0, I:4 | 991 | editor hexadecimal cheiro de funcionalidades (GNOME) |
okteta
|
V:4, I:35 | 303 | editor hexadecimal cheiro de funcionalidades (KDE4) |
ncurses-hexedit
|
V:0, I:3 | 152 | editor binário e visualizador (HEX, ASCII, EBCDIC) |
beav
|
V:0, I:1 | 164 | 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:14 | 218 | Parity Archive Volume Set, para verificação e reparação de ficheiros |
dvdisaster
|
V:0, I:3 | 1481 | protecção de dados contra percas/riscos/envelhecimento para medias CD/DVD |
dvbackup
|
V:0, I:0 | 392 | ferramenta de backup que usa câmaras de filmar MiniDV (disponibilizando rsbep(1)) |
vdmfec
|
V:0, I:0 | 88 | recuperar blocos perdidos usando 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:4, I:39 | 1248 | utilitários para sondagem de partições e recuperação de discos |
magicrescue
|
V:0, I:3 | 344 | utilitário para recuperar ficheiros ao procurar por bytes mágicos |
scalpel
|
V:0, I:3 | 124 | frugal, entalhador de ficheiros de alta performance |
myrescue
|
V:0, I:1 | 84 | recuperar dados de discos rígidos danificados |
extundelete
|
V:0, I:7 | 153 | utilitários para recuperar ficheiros apagados no sistema de ficheiros ext3/4 |
ext4magic
|
V:0, I:1 | 258 | utilitários para recuperar ficheiros apagados no sistema de ficheiros ext3/4 |
ext3grep
|
V:0, I:3 | 286 | ferramenta para ajudar a recuperar ficheiros apagados no sistema de ficheiros ext3 |
scrounge-ntfs
|
V:0, I:3 | 80 | programa de recuperação de dados para sistemas de ficheiros NTFS |
gzrt
|
V:0, I:0 | 57 | conjunto de ferramentas de recuperação gzip |
sleuthkit
|
V:0, I:4 | 1062 | ferramentas para análise forense. (Sleuthkit) |
autopsy
|
V:0, I:2 | 1372 | interface gráfica para o SleuthKit |
foremost
|
V:0, I:7 | 123 | aplicação forense para recuperar dados |
guymager
|
V:0, I:0 | 1045 | ferramenta de imagem forense baseada em Qt |
dcfldd
|
V:0, I:3 | 121 |
versão melhorada do dd para forenses e segurança
|
rdd
|
V:0, I:0 | 200 | programa de cópia forense |
![]() |
Dica |
---|---|
Você pode recuperar ficheiros apagados no sistema de ficheiros ext2 usando
os comandos |
Quando os dados são muito grandes para fazer backup num ficheiro único, você pode fazer backup ao seu conteúdo 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
Você 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 seu mtime
é actualizado enquanto o seu conteúdo e
tamanho são mantidos.
"alwayszero.file
" é sempre um ficheiro de 0 bytes. Se
existir, o seu mtime
é actualizado e o seu conteúdo é
reposto.
Existem várias maneiras de apagar completamente os dados de um dispositivo
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 dispositivo 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 se segue.
# dd if=/dev/urandom of=/dev/sda
Apagar tudo muito eficientemente ao sobrescrever com dados aleatórios como se segue.
# 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, você 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 seus atributos 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 hardlinks 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
link de "2" (>1) mostrando que têm hardlinks. Os números de inode deles são comuns "2738404". Isto significa que
eles são o mesmo ficheiro em hardlink. Se você não encontrar todos os
ficheiros em hardlink 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. Você 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:34, I:61 | 365 | utilitários para dispositivos de bloco encriptados (dm-crypt / LUKS) |
cryptmount
|
V:2, I:4 | 228 | utilitários para dispositivos de bloco encriptados (dm-crypt / LUKS) com focagem na montagem/desmontagem por utilizadores normais. |
ecryptfs-utils
|
V:5, I:7 | 333 | utilitários para sistemas de ficheiros em pilha encriptados (eCryptfs) |
Dm-crypt é um sistema de ficheiros criptográfico que usa mapeador-de-dispositivo. O mapeador-de-dispositivo mapeia um dispositivo 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 directó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) usando 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. |
Você pode encriptar o conteúdo de dispositivos de massa amovíveis, por
exemplo, uma pen USB em "/dev/sdx
", usando dm-crypt/LUKS. Simplesmente formate-a como se segue.
# 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, “Dispositivo de armazenamento amovível”) sob
ambientes de trabalho modernos como o GNOME usando
gnome-mount(1).
A diferença é que todos os dados escritos nela são
encriptados. Alternativamente você pode formatar o meio num sistema de
ficheiros diferente, por exemplo, ext4 com "mkfs.ext4
/dev/mapper/sdx1
".
![]() |
Nota |
---|---|
Se você é 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
Você pode activar a encriptação da partição swap usando 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 se segue:
$ 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
Você pode encriptar ficheiros escritos sob "~/Private/
"
automaticamente usando 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 os links simbólicos necessários.
Candidatos: "~/.fetchmailrc
",
"~/.ssh/identity
", "~/.ssh/id_rsa
",
"~/.ssh/id_dsa
" e outros ficheiros com
"go-rwx
"
Mova directórios de dados sensíveis para um sub-directório em
"~/Private/
" e crie os links simbólicos necessários.
Candidatos: "~/.gnupg
" e outros directórios com
"go-rwx
"
Crie um link simbólico 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 seu custo para o sistema é muito menor
do que usar o dm-crypt no dispositivo de raiz
inteiro ou " |
Se você usar a sua palavra-passe do login para embrulhar as chaves de encriptação, você 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 você 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 dispositivos são criados pelo sistema udev (veja Secção 3.3, “O sistema udev”).
Os acessos de leitura/escrita a dispositivos 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 se segue.
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 o seu método próprio 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:484 | 37 |
pacotes essenciais para construir pacotes Debian: make ,
gcc , …
|
bzip2
|
V:405, I:904 | 119 | utilitários de compressão e descompressão para ficheiros bz2 |
libncurses5-dev
|
V:15, I:172 | 1035 | bibliotecas de programadores e documentos para ncurses |
git
|
V:162, I:415 | 21596 | git: sistema de controle de versão distribuído usado pelo kernel Linux |
fakeroot
|
V:41, I:544 | 252 | disponibiliza um ambiente de falso-root para construção de pacotes como não-root |
initramfs-tools
|
V:199, I:988 | 340 | ferramenta para construir uma initramfs (específico de Debian) |
dkms
|
V:80, I:242 | 339 | suporte de módulos de kernel dinâmicos (DKMS) (genérico) |
devscripts
|
V:10, I:74 | 1807 | scripts de ajuda para um responsável de pacote Debian (específico de Debian) |
Se você 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 coloque links simbólicos para os directó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 actualizados 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 actualiza 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: http://kernel-handbook.alioth.debian.org
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 dispositivo (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 activar ou desactivar 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:8, I:12 | 2576 | ferramenta especializada para executar pacotes binários Debian em chroot |
sbuild
|
V:0, I:2 | 471 | ferramenta para construir pacotes binários Debian a partir de fontes Debian |
pbuilder
|
V:3, I:21 | 998 | construtor de pacotes pessoais para pacotes Debian |
debootstrap
|
V:9, I:76 | 229 | bootstrap um sistema Debian básico (escrito em sh) |
cdebootstrap
|
V:0, I:6 | 87 | bootstrap um sistema Debian (escrito em C) |
rootstrap
|
V:0, I:1 | 97 | ferramenta para construir imagens de sistema de ficheiros de Linux completas |
virt-manager
|
V:6, I:26 | 7236 | Virtual Machine Manager: aplicação de ambiente de trabalho para gerir máquinas virtuais |
libvirt-bin
|
V:22, I:48 | 73 | programas para a biblioteca libvirt |
user-mode-linux
|
V:0, I:1 | 31164 | Modo-de-utilizador Linux (kernel) |
bochs
|
V:0, I:1 | 3953 | Bochs: emulador PC IA-32 |
qemu
|
I:54 | 398 | QEMU: emulador de processador genérico rápido |
qemu-system
|
V:16, I:56 | 53 | QEMU: binários de emulação de sistema completo |
qemu-user
|
V:3, I:55 | 47919 | QEMU: binários de emulação em modo de utilizador |
qemu-utils
|
V:7, I:90 | 2641 | QEMU: utilitários |
qemu-kvm
|
V:26, I:64 | 57 | KVM: virtualização completa em hardware x86 com virtualização assistida por hardware |
virtualbox
|
V:57, I:70 | 58732 | VirtualBox: solução de virtualização x86 em i386 e amd64 |
xen-tools
|
V:0, I:9 | 620 | ferramentas para gerir o servidor virtual XEN do debian |
wine
|
V:14, I:118 | 101 | Wine: Windows API Implementation (suite standard) |
dosbox
|
V:3, I:21 | 2745 | DOSBox: emulador x86 com gráficos Tandy/Herc/CGA/EGA/VGA/SVGA, som e DOS |
dosemu
|
V:1, I:6 | 4820 | DOSEMU: O Emulador de DOS do Linux |
vzctl
|
V:4, I:7 | 1072 | OpenVZ solução de virtualização de servidor - ferramentas de controle |
vzquota
|
V:4, I:7 | 210 | OpenVZ solução de virtualização de servidor - ferramentas de quotas |
lxc
|
V:4, I:11 | 2597 | 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, “Criando 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 dispositivo loop ou dispositivo 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 dispositivos 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, você pode usar o
qemu-nbd
para exportá-los usando o protocolo dispositivo de bloco de rede e montá-los
usando 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 dispositivo_máquina.
O dispositivo de bloco em rede
pode suportar partições do mesmo modo que o dispositivo de loop (veja Secção 9.6.3, “Montar o ficheiro de imagem de disco”). Você pode montar a primeira
partição de "disk.img
" como se segue.
# modprobe nbd max_part=16 # qemu-nbd -v -c /dev/nbd0 disk.img ... # mkdir /mnt/part1 # mount /dev/nbd0p1 /mnt/part1
![]() |
Dica |
---|---|
Você 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. |
Você pode aprender a como configurar e usar chroot(8) ao correr o programa pbuilder(8) sob script(1) como se segue.
$ sudo mkdir /sid-root $ sudo pbuilder --create --no-targz --debug --buildplace /sid-root
Você 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
Você 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 objectivo original do pacote especializado chroot,
|
![]() |
Dica |
---|---|
De modo semelhante, o pacote |
Eu recomendo usar o QEMU ou o VirtualBox num sistema Debian
stable
para correr vários sistemas de ambiente de
trabalho em segurança usando 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
usando o instalador de debian em
pequenos CDs como se segue.
$ 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. |