Referências Debian Osamu Aoki Copyright © 2007-2012 Osamu Aoki Este Debian Reference (v2) (2013-10-02 08:27:59 UTC) destina-se a disponibilizar uma visão ampla do sistema Debian como um guia de     pós-instalação para o utilizador. Cobre muitos aspectos da administração do sistema através de exemplos de comandos de consola para não-programadores. Resumo Este livro é livre: você pode redistribuí-lo e/ou modificá-lo sob os termos da licença GNU General Public License de qualquer versão em conformidade com as directivas Debian Free Software Guidelines (DFSG). --------------------------------------------------------------------- Índice Prefácio 1. Aviso 2. O que é o Debian 3. Acerca deste documento 3.1. Regras orientadoras 3.2. Pré-requisitos 3.3. Convenções 3.4. popcon 3.5. O tamanho do pacote 3.6. Relatórios de bugs deste documento 4. Algumas citações para os novos utilizadores 1. Manuais de GNU/Linux 1.1. Básico da consola 1.1.1. A linha de comandos da shell 1.1.2. A linha de comandos shell sob X 1.1.3. A conta root 1.1.4. A linha de comandos shell do root 1.1.5. GUI de ferramentas de administração do sistema 1.1.6. Consolas virtuais 1.1.7. Como abandonar a linha de comandos 1.1.8. Como desligar o sistema 1.1.9. Recuperar uma consola sã 1.1.10. Sugestões de pacotes adicionais para o novato 1.1.11. Uma conta de utilizador extra 1.1.12. Configuração do sudo 1.1.13. Hora de brincar 1.2. Sistema de ficheiros tipo Unix 1.2.1. Noções básicas de ficheiros Unix. 1.2.2. Internos do sistema de ficheiros 1.2.3. Permissões do sistema de ficheiros 1.2.4. Controlo de permissões para ficheiros acabados de criar: umask 1.2.5. Permissões para grupos de utilizadores (group) 1.2.6. Marcas temporais (Timetamps) 1.2.7. Links (ligações) 1.2.8. Pipes com nome (FIFOs) 1.2.9. Sockets 1.2.10. Ficheiros de dispositivo 1.2.11. Ficheiros de dispositivos especiais 1.2.12. procfs e sysfs 1.2.13. tmpfs 1.3. Midnight Commander (MC) 1.3.1. Personalização do MC 1.3.2. Iniciar o MC 1.3.3. Gestor de ficheiros no MC 1.3.4. Truques de linha de comandos no MC 1.3.5. O editor interno em MC 1.3.6. O visualizador interno no MC 1.3.7. Funcionalidades de auto-arranque do MC 1.3.8. Sistema de ficheiros virtual FTP no MC 1.4. O ambiente de trabalho estilo Unix básico 1.4.1. A shell de login 1.4.2. Personalizar bash 1.4.3. Teclas especiais 1.4.4. Operações do rato ao estilo Unix 1.4.5. O pager 1.4.6. O editor de texto 1.4.7. Definir um editor de texto predefinido 1.4.8. Personalizar o vim 1.4.9. Gravar as actividades da shell 1.4.10. Comandos básicos de Unix 1.5. O comando simples da shell 1.5.1. Execução do comando e variável de ambiente 1.5.2. The "$LANG" variable 1.5.3. The "$PATH" variable 1.5.4. The "$HOME" variable 1.5.5. Opções da linha de comandos 1.5.6. Glob da shell 1.5.7. Valor de retorno do comando 1.5.8. Sequências de comandos típicas e redireccionamento da shell 1.5.9. Comando alias 1.6. Processamento de texto estilo Unix 1.6.1. Ferramentas de texto de Unix 1.6.2. Expressões regulares 1.6.3. Expressões de substituição 1.6.4. Substituição global com expressões regulares 1.6.5. Extrair dados de tabela de ficheiro de texto 1.6.6. Trechos de script para canalizar comandos em pipe 2. Gestão de pacotes Debian 2.1. Pré-requisitos da gestão de pacotes Debian 2.1.1. Configuração de pacotes 2.1.2. Precauções básicas 2.1.3. A vida com actualizações eternas 2.1.4. Básico do arquivos Debian 2.1.5. Debian é 100% software livre 2.1.6. Dependências de pacote 2.1.7. O fluxo de eventos da gestão de pacotes 2.1.8. Primeira resposta a problemas com a gestão de pacotes 2.2. Operações básicas de gestão de pacotes 2.2.1. apt-get / apt-cache contra o aptitude 2.2.2. Operações básicas de gestão de pacotes com a linha de comandos 2.2.3. Uso interactivo do aptitude 2.2.4. Teclas de atalho do aptitude 2.2.5. Vistas de pacote no aptitude 2.2.6. Opções do método de pesquisa com o aptitude 2.2.7. A fórmula regex do aptitude 2.2.8. Resolução de dependências do aptitude 2.2.9. Logs de actividade de pacotes 2.3. Exemplos de operações do aptitude 2.3.1. Listagem de pacotes com correspondência por expressão regular nos nomes de pacotes 2.3.2. Explorar com a correspondência de expressão regular 2.3.3. Purgar pacotes removidos definitivamente 2.3.4. Acertar o estado auto/manual de instalação 2.3.5. Actualização total ao sistema 2.4. Operações de gestão avançada de pacotes 2.4.1. Operações de gestão avançada de pacotes com linha de comandos 2.4.2. Verificação dos ficheiros pacotes instalados 2.4.3. Salvaguardar para problemas de pacotes. 2.4.4. Procurar nos meta-dados do pacote 2.5. Os interiores da gestão de pacotes Debian 2.5.1. Meta dados do arquivo 2.5.2. Ficheiro "Release" de nível de topo e autenticidade: 2.5.3. Ficheiros "Release" do nível de arquivo 2.5.4. Obter os meta dados do pacote 2.5.5. O estado dos pacote para o APT 2.5.6. O estado dos pacote para o aptitude 2.5.7. Copias locais dos pacotes obtidos 2.5.8. Nomes de ficheiros de pacotes Debian 2.5.9. O comando dpkg 2.5.10. The update-alternatives command 2.5.11. O comando dpkg-statoverride 2.5.12. O comando dpkg-divert 2.6. Recuperação de um sistema danificado 2.6.1. Incompatibilidade com configuraçiões antigas de utilizador 2.6.2. Pacotes diferentes com ficheiros sobrepostos 2.6.3. Corrigir script problemático de pacote 2.6.4. Recuperação com o comando dpkg 2.6.5. Recuperar dados de selecção de pacotes 2.7. Dicas para a gestão de pacotes 2.7.1. Como escolher os pacotes Debian 2.7.2. Pacotes de fontes de arquivos misturados 2.7.3. Moldar a versão candidata 2.7.4. Actualizações e Backports 2.7.5. Bloquear pacotes instalados por "Recomendados" 2.7.6. Acompanhar testing com alguns pacotes de unstable 2.7.7. Acompanhar unstable com alguns pacotes de experimental 2.7.8. Descarga e actualização automática de pacotes 2.7.9. Limitar a largura de banda de descarga para o APT 2.7.10. Downgrade de emergência 2.7.11. Quem fez o upload do pacote? 2.7.12. O pacote equivs 2.7.13. Portar um pacote para o sistema stable 2.7.14. Servidor proxy para o APT 2.7.15. Pequeno arquivo de pacotes público 2.7.16. Gravar e copiar a configuração do sistema 2.7.17. Converter e instalar um pacote binário alienígena 2.7.18. Extrair um pacote sem o dpkg 2.7.19. Mais leituras sobre a gestão de pacotes 3. A inicialização do sistema 3.1. Uma visão geral do processo de arranque 3.2. Estágio 1: a BIOS 3.3. Estágio 2: o gestor de arranque 3.4. Estágio 3: o mini-sistema Debian 3.5. Estágio 4: o sistema Debian normal 3.5.1. O significado do runlevel 3.5.2. A configuração do runlevel 3.5.3. O exemplo de gestão do runlevel 3.5.4. O parâmetro predefinido para cada script de init 3.5.5. O nome da máquina 3.5.6. O sistema de ficheiros 3.5.7. Inicialização da interface de rede 3.5.8. Inicialização do serviço de rede 3.5.9. A mensagem do sistema 3.5.10. A mensagem do kernel 3.5.11. O sistema udev 3.5.12. A inicialização de módulos do kernel 4. Autenticação 4.1. Autenticação normal de Unix 4.2. Gerir informação de conta e palavra-passe 4.3. Boa palavra-passe 4.4. Criar palavra-passe encriptada 4.5. PAM e NSS 4.5.1. Ficheiros de configuração acedidos pelo PAM e NSS 4.5.2. O moderno sistema de gestão centralizado 4.5.3. "Porque o su do GNU não suporta o grupo wheel" 4.5.4. Regras de palavra-passe rigorosas 4.6. Outros controles de acesso 4.6.1. sudo 4.6.2. PolicyKit 4.6.3. SELinux 4.6.4. Restringindo acesso a alguns serviços de servidor 4.7. Segurança da autenticação 4.7.1. Palavra-passe segura sobre a Internet 4.7.2. Shell Segura 4.7.3. Medidas de segurança extra para a Internet 4.7.4. Tornar a palavra-passe do root segura 5. Configuração de rede 5.1. A infra-estrutura de rede básica 5.1.1. A resolução de nome de máquina 5.1.2. O nome da interface de rede 5.1.3. A gama de endereços de rede para a LAN 5.1.4. O suporte a dispositivos de rede 5.2. A configuração moderna de rede para desktop 5.2.1. Ferramentas GUI de configuração de rede 5.3. A ligação e antiga configuração de rede 5.4. O método de ligação de rede (antigo) 5.4.1. A ligação DHCP com Ethernet 5.4.2. A ligação de IP estático com a Ethernet 5.4.3. A ligação PPP com o pppconfig 5.4.4. A ligação PPP alternativa com o wvdialconf 5.4.5. A ligação PPPoE com o pppoeconf 5.5. A configuração básica de rede com ifupdown (legacy) 5.5.1. A sintaxe simplificada de comando 5.5.2. A sintaxe básica de "/etc/network/interfaces" 5.5.3. A interface de rede loopback 5.5.4. A interface de rede servida por DHCP 5.5.5. A interface de rede com IP estático 5.5.6. O básico da interface de rede sem fios 5.5.7. A interface LAN wireless com WPA/WPA2 5.5.8. A interface LAN wireless com WEP 5.5.9. A ligação PPP 5.5.10. A ligação PPP alternativa 5.5.11. A ligação PPPoE 5.5.12. O estado de configuração de rede do ifupdown 5.5.13. A reconfiguração de rede básica 5.5.14. O pacote ifupdown-extra 5.6. A configuração de rede avançada com ifupdown (antigo) 5.6.1. O pacote ifplugd 5.6.2. O pacote ifmetric 5.6.3. A interface virtual 5.6.4. A sintaxe de comando avançada 5.6.5. A estrofe de mapeamento 5.6.6. A configuração manual da rede comutável 5.6.7. Scripts com o sistema ifupdown 5.6.8. Mapeando com guessnet 5.7. A configuração de rede de baixo nível 5.7.1. Comandos iproute2 5.7.2. Operações de rede seguras de baixo nível 5.8. Optimização da rede 5.8.1. Encontrar o MTU óptimo 5.8.2. Definir o MTU 5.8.3. Optimização WAN TCP 5.9. Infra-estrutura netfilter 6. Aplicações de rede 6.1. Navegadores web 6.1.1. Configuração do explorador 6.2. O sistema de correio electrónico (mail) 6.2.1. Noções básicas de mail 6.2.2. Bases dos serviços de mail modernos 6.2.3. A estratégia de configuração de mail para estação de trabalho 6.3. Agente de transporte de mail (MTA) 6.3.1. A configuração do exim4 6.3.2. A configuração do postfix com SASL 6.3.3. A configuração do endereço de mail 6.3.4. Operações MTA básicas 6.4. Agente utilizador de mail (MUA) 6.4.1. MUA básico — Mutt 6.5. O adquiridor de mail remoto e utilitário de reencaminhamento 6.5.1. configuração do getmail 6.5.2. configuração do fetchmail 6.6. Agente de entrega de mail (MDA) com filtro 6.6.1. configuração do maildrop 6.6.2. configuração do procmail 6.6.3. Re-entregar o conteúdo da mbox 6.7. Servidor POP3/IMAP4 6.8. O servidor de impressão e utilitário 6.9. O servidor de acesso remoto e utilitário (SSH) 6.9.1. Bases do SSH 6.9.2. Reencaminhamento de portos para SMTP/POP3 em túnel 6.9.3. Ligar sem palavras-passe remotas 6.9.4. Lidar com clientes SSH alienígenas 6.9.5. Configurar o ssh-agent 6.9.6. Como desligar o sistema remoto em SSH 6.9.7. Depurar problemas no SSH 6.10. Outras aplicações de servidor de rede 6.11. Outros clientes de aplicação de rede 6.12. Os diagnósticos dos daemons do sistema 7. O Sistema X Window 7.1. Pacotes chave 7.2. Definir o ambiente de trabalho 7.2.1. Menu Debian 7.2.2. Menu Freedesktop.org 7.2.3. Menu Debian sob o ambiente de trabalho GNOME 7.3. A relação servidor/cliente 7.4. O servidor X 7.4.1. A (re)configuração do servidor X 7.4.2. Os métodos de ligação do servidor X 7.5. Iniciando o X Window System 7.5.1. Iniciar uma sessão X com o gdm3 7.5.2. Personalizar a sessão X (método clássico) 7.5.3. Personalizar a sessão X (método novo) 7.5.4. Ligar um cliente X remoto via SSH 7.5.5. Terminal X seguro via Internet 7.6. Fonts (tipos de letra) para o X Window 7.6.1. Fonts (tipos de letra) básicas 7.6.2. Fonts (tipos de letra) adicionais 7.6.3. fonts CJK 7.7. Aplicações do X 7.7.1. Aplicações de escritório do X 7.7.2. aplicações utilitárias do X 7.8. As trivialidades do X 7.8.1. Mapas de teclas e mapas de botões do apontador (rato) no X 7.8.2. Clientes X Clássicos 7.8.3. O emulador de terminal X - xterm 7.8.4. Correr clientes X como root 8. I18N e L10N 8.1. A entrada do teclado 8.1.1. O suporte a método de entrada com IBus 8.1.2. Um exemplo para Japonês 8.1.3. Desactivar o método de entrada 8.2. O mostrador de resultados 8.3. O locale 8.3.1. Bases de codificação 8.3.2. Fundamentos para o locale UTF-8 8.3.3. A reconfiguração do locale 8.3.4. O valor da variável de ambiente "$LANG" 8.3.5. O locale específico apenas sob X Window 8.3.6. Codificação de nomes de ficheiros 8.3.7. Mensagens localizadas e documentação traduzida 8.3.8. Efeitos do locale 9. Dicas do sistema 9.1. O programa screen 9.1.1. O cenário de utilização para o screen(1) 9.1.2. ligações de teclas para o comando screen 9.2. Gravação de dados e apresentação 9.2.1. O daemon de log 9.2.2. Analizador de log 9.2.3. Gravar as actividades da shell de modo limpo 9.2.4. Amostragem personalizada de dados em texto 9.2.5. Amostragem personalizada de hora e data 9.2.6. Echo de shell colorido 9.2.7. Comandos coloridos 9.2.8. Recordando as actividades do editor para repetições complexas 9.2.9. Gravar a imagem gráfica de uma aplicação X 9.2.10. Gravar alterações em ficheiros de configuração 9.3. Dicas de armazenamento de dados 9.3.1. Utilização do espaço em disco 9.3.2. Configuração das partições do disco 9.3.3. Aceder a partição usando UUID 9.3.4. LVM2 9.3.5. Configuração do sistema de ficheiros 9.3.6. Criação do sistema de ficheiros e verificação de integridade 9.3.7. Optimização do sistema de ficheiros por opções de montagem 9.3.8. Optimização do sistema de ficheiros através do superblock 9.3.9. Optimização do disco rígido 9.3.10. Optimização de disco de estado sólido (SSD) 9.3.11. Usar SMART para prever falhas no disco rígido 9.3.12. Especifique o directório de armazenamento temporário através de $TMPDIR 9.3.13. Expandir o espaço de armazenamento utilizável via LVM 9.3.14. Expandir o espaço de armazenamento utilizável ao montar outra partição 9.3.15. Expandir o espaço de armazenamento utilizável ao fazer bind-mount para outro directório 9.3.16. Expandir o espaço de armazenamento utilizável usando links simbólicos 9.3.17. Expandir o espaço de armazenamento utilizável usando aufs 9.4. Dicas de encriptação de dados 9.4.1. Encriptação de discos amovíveis com dm-crypt/LUKS 9.4.2. Partição swap encriptada com dm-crypt 9.4.3. Encriptar ficheiros automaticamente com eCryptfs 9.4.4. Montar eCryptfs automaticamente 9.5. Monitorizar, controlar e iniciar as actividades de programas 9.5.1. Temporizando um processo 9.5.2. A prioridade de agendamento 9.5.3. O comando ps 9.5.4. O comando top 9.5.5. Listar ficheiros abertos por um processo 9.5.6. Rastear as actividades de programas 9.5.7. Identificação de um processo usando ficheiros ou sockets 9.5.8. Repetir um comando com um intervalo constante 9.5.9. Repetindo um ciclo de comandos sobre ficheiros 9.5.10. Arrancar um programa a partir da GUI 9.5.11. Personalizar o programa a ser iniciado 9.5.12. Matar um processo 9.5.13. Agendar tarefas uma vez 9.5.14. Agendar tarefas regularmente 9.5.15. Tecla Alt-SysRq 9.6. Dicas de manutenção do sistema 9.6.1. Quem está no sistema? 9.6.2. Avisar todos 9.6.3. Identificação do hardware 9.6.4. Configuração do hardware 9.6.5. Hora do sistema e do hardware 9.6.6. A configuração do terminal 9.6.7. A infraestrutura de som 9.6.8. Desactivar o protector de ecrã (screensaver) 9.6.9. Desactivar os sons de beep 9.6.10. Utilização da memória 9.6.11. Segurança do sistema e verificação de integridade 9.7. O kernel 9.7.1. Linux kernel 2.6/3.x 9.7.2. Parâmetros do kernel 9.7.3. Cabeçalhos do kernel 9.7.4. Compilar o kernel e módulos relacionados 9.7.5. Compilar código-fonte do kernel: a recomendação da equipa do kernel de Debian 9.7.6. Controladores de hardware e firmware 9.8. Sistema virtualizado 9.8.1. Ferramentas de virtualização 9.8.2. Fluxo de trabalho da virtualização 9.8.3. Montar o ficheiro de imagem de disco virtual 9.8.4. Sistema chroot 9.8.5. Sistemas de vários ambientes de trabalho 10. Gestão de dados 10.1. Partilhar, copiar e arquivar 10.1.1. Ferramentas de arquivo e compressão 10.1.2. Ferramentas de cópia de sincronização 10.1.3. Idiomas para o arquivo 10.1.4. Idiomas para a cópia 10.1.5. Idiomas para a selecção de ficheiros 10.1.6. Salvaguarda (backup) e recuperação 10.1.7. Suites de utilitários de backup 10.1.8. Um script de exemplo para salvaguarda ao sistema 10.1.9. Um script de cópia para a salvaguarda de dados 10.1.10. Dispositivo de armazenamento amovível 10.1.11. Escolha de sistema de ficheiros para partilhar dados 10.1.12. Partilhando dados via rede 10.1.13. Meio de arquivo 10.2. A imagem de disco 10.2.1. Criando o ficheiro de imagem de disco 10.2.2. Escrever directamente no disco 10.2.3. Montar o ficheiro de imagem de disco 10.2.4. Limpar um ficheiro de imagem de disco 10.2.5. Criar um ficheiro de imagem de disco vazio 10.2.6. Criar o ficheiro de imagem ISO9660 10.2.7. Escrever directamente para o CD/DVD-R/RW 10.2.8. Montar o ficheiro de imagem ISO9660 10.3. Os dados binários 10.3.1. Ver e editar dados binários 10.3.2. Manipular ficheiros sem montar o disco 10.3.3. Redundância de dados 10.3.4. Recuperação de ficheiros e dados e análise forense 10.3.5. Dividir um ficheiro grande em ficheiros pequenos 10.3.6. Limpar conteúdo de ficheiro 10.3.7. Ficheiros dummy 10.3.8. apagar um disco rígido inteiro 10.3.9. Apagar uma área não utilizada do disco rígido 10.3.10. Recuperar ficheiros apagados mas ainda abertos 10.3.11. Procurar todos os hardlinks 10.3.12. Consumo invisível do espaço do disco 10.4. Infraestrutura da segurança de dados 10.4.1. Gestão de chaves para GnuPG 10.4.2. Usa GnuPG em ficheiros 10.4.3. Usar GnuPG com o Mutt 10.4.4. Usar GnuPG com o Vim 10.4.5. O valor de controlo MD5 10.5. Ferramentas de fusão de código fonte 10.5.1. Extrair as diferenças para ficheiros fonte 10.5.2. Fundir actualizações para ficheiros de fonte 10.5.3. Actualizar via fusão-de-3-vias 10.6. Sistemas de controle de versão 10.6.1. Comparação dos comandos VCS 10.7. CVS 10.7.1. Configuração de repositório CVS 10.7.2. Acesso local ao CVS 10.7.3. Acesso remoto ao CVS com pserver 10.7.4. Acesso remoto ao CVS com ssh 10.7.5. Importar uma nova fonte para o CVS 10.7.6. Permissões de ficheiros no repositório CVS 10.7.7. Fluxo de trabalho do CVS 10.7.8. Ficheiros mais recentes do CVS 10.7.9. Administração do CVS 10.7.10. Bit de execução para verificação do CVS 10.8. Subversion 10.8.1. Configuração do repositório Subversion 10.8.2. Acesso ao Subversion via servidor Apache2 10.8.3. Acesso local ao Subversion pelo grupo 10.8.4. Acesso remoto ao Subversion via SSH 10.8.5. Estrutura de directórios do Subversion 10.8.6. importar uma nova fonte para o Subversion 10.8.7. Fluxo de trabalho do Subversion 10.9. Git 10.9.1. Configuração do cliente Git 10.9.2. Referências do Git 10.9.3. Comandos do Git 10.9.4. Git para o repositório Subversion 10.9.5. Git para gravar o histórico de configuração 11. Conversão de dados 11.1. Ferramentas de conversão de dados em texto 11.1.1. Converter um ficheiro de texto com o iconv 11.1.2. Verifica ficheiro se é UTF-8 com o iconv 11.1.3. Converter os nomes dos ficheiros com o iconv 11.1.4. conversão EOL 11.1.5. Conversão de TAB 11.1.6. Editores com auto-conversão 11.1.7. Extracção de texto simples 11.1.8. Destacar e formatar dados de texto simples 11.2. Dados XML 11.2.1. Dicas básicas para XML 11.2.2. Processamento de XML 11.2.3. A extracção de dados de XML 11.3. Dados imprimíveis 11.3.1. Ghostscript 11.3.2. Juntar dois ficheiros PS ou PDF 11.3.3. Utilitários de dados imprimíveis 11.3.4. Imprimir com o CUPS 11.4. Formatação de texto 11.4.1. formatação de texto roff 11.4.2. TeX/LaTeX 11.4.3. Impressão bonita de um manual 11.4.4. Criar um manual 11.5. A conversão de dados de mail 11.5.1. Noções básicas de dados de mail 11.6. Ferramentas de dados gráficos 11.7. Conversão de dados variados 12. Programação 12.1. O script de shell 12.1.1. Compatibilidade da shell do POSIX 12.1.2. Parâmetros da shell 12.1.3. Condicionais da shell 12.1.4. Ciclos (loops) da shell 12.1.5. A sequência de processamento da linha de comandos da shell 12.1.6. Programas utilitários para script de shell 12.1.7. Diálogo do script de shell 12.1.8. Exemplo de script de shell com zenity 12.2. Make 12.3. C 12.3.1. Programa C simples (gcc) 12.4. Depuração 12.4.1. Execução gdb básica 12.4.2. Depurar o pacote Debian 12.4.3. Obter um backtrace 12.4.4. Comandos gdb avançados 12.4.5. Depurar Erros do X 12.4.6. Verificar a dependência em bibliotecas 12.4.7. Ferramentas de detecção de fugas de memória 12.4.8. Ferramentas de análise de código estático 12.4.9. Desassemblar binário 12.5. Flex — um Lex melhor. 12.6. Bison — um Yacc melhor 12.7. Autoconf 12.7.1. Compilar e instalar um programa 12.7.2. Desinstalar um programa 12.8. A loucura dos scripts curtos de Perl 12.9. Web 12.10. A tradução do código-fonte 12.11. Criar um pacote Debian A. Apêndice A.1. o labirinto Debian A.2. História do Copyright A.3. Formato do documento Lista de Tabelas 1.1. Lista de pacotes de programas interessantes em modo de texto 1.2. Lista de pacotes de documentação informativa 1.3. Lista de utilização de directórios chave 1.4. Lista do primeiro caractere da saída de "ls -l" 1.5. O modo numérico para permissões de ficheiros em comandos chmod (1) 1.6. Exemplos do valor umask 1.7. Lista de grupos notáveis disponibilizados pelo sistema para acesso a ficheiros 1.8. Lista de grupos notáveis disponibilizados pelo sistema para execuções de comandos particulares 1.9. Lista dos tipos de marcas temporais 1.10. Lista de ficheiros de dispositivos especiais 1.11. As teclas de atalho do MC 1.12. A reacção à tecla enter no MC 1.13. Lista de programas da shell 1.14. Lista de teclas de atalho para bash 1.15. Lista de operações de rato ao estilo Unix 1.16. lista dos comandos Unix básicos 1.17. The 3 parts of locale value 1.18. Lista de recomendações de locale 1.19. Lista de valores "$HOME" 1.20. Padrões glob da shell 1.21. Códigos de saída do comando 1.22. Idiomas de comandos de shell 1.23. Descritores de ficheiro predefinido 1.24. Meta-caracteres para BRE e ERE 1.25. A expressão de substituição 1.26. Lista de trechos de script para canalizar comandos em pipe 2.1. Lista de ferramentas de gestão de pacotes Debian 2.2. Lista de sites de arquivos Debian 2.3. Lista de área de arquivo Debian 2.4. A relação entre suite e nome de código 2.5. Lista de sites web chave para resolver problemas com um pacote específico. 2.6. Operações básicas de gestão de pacotes com a linha de comandos utilizando aptitude(8) e apt-get(8) / apt-cache(8). 2.7. Opções de comando notáveis para o aptitude(8) 2.8. Lista de teclas de atalho do aptitude 2.9. Lista de vistas para o aptitude 2.10. A categorização das vista de pacotes standard 2.11. Lista da fórmula regex do aptitude 2.12. Os ficheiros log para actividades de pacotes 2.13. Lista de operações de gestão avançada de pacotes 2.14. O conteúdo dos meta dados do arquivo Debian 2.15. A estrutura de nomes dos pacotes Debian 2.16. Os caracteres utilizáveis para cada componente nos nomes de pacotes Debian 2.17. Ficheiros notáveis criados pelo dpkg 2.18. Lista de valores notáveis de Pin-Priority para a técnica de apt-pinning. 2.19. Lista de ferramentas proxy especiais para arquivos Debian 3.1. Lista de gestores de arranque 3.2. O significado dos parâmetros do GRUB 3.3. Lista de utilitários de arranque para o sistema Debian 3.4. Lista de runlevels e descrição da sua utilização 3.5. Lista de níveis de erro do kernel 4.1. 3 ficheiros de configuração importantes para pam_unix(8) 4.2. A segunda entrada no conteúdo de "/etc/passwd" 4.3. Lista de comandos para gerir informação de conta 4.4. Lista de ferramentas para gerar palavras-passe 4.5. Lista de sistemas PAM e NSS notáveis 4.6. Lista de ficheiros de configuração acedidos pelo PAM 4.7. Lista de serviços e portos inseguros e seguros 4.8. Lista de ferramentas para disponibilizar medidas de segurança extra 5.1. Lista de ferramentas de configuração de rede 5.2. Lista de gamas de endereços de rede 5.3. Lista de métodos de ligação de rede e caminhos de ligação 5.4. Lista de configurações de ligação de rede 5.5. Lista de ligações de rede anónimas 5.6. Lista de ficheiros de configuração para a ligação PPP com pppconfig 5.7. Lista de ficheiros de configuração para a ligação PPP com wvdialconf 5.8. Lista de ficheiros de configuração para a ligação PPPoE com pppoeconf 5.9. Lista de comandos de configuração de rede básicos com ifupdown 5.10. Lista de estrofes em "/etc/network/interfaces" 5.11. Lista de siglas para WLAN 5.12. Lista de terminologia para dispositivos de rede 5.13. Lista de comandos avançados de configuração de rede com ifupdown 5.14. Lista de variáveis de ambiente passadas pelo sistema ifupdown 5.15. Tabela de tradução dos comandos obsoletos net-tools para os novos comandos iproute2 5.16. Lista de comandos de rede de baixo nível 5.17. Lista de ferramentas de optimização de rede 5.18. Regras básicas para o valor MTU óptimo 5.19. Lista de ferramentas de firewall 6.1. Lista de exploradores web 6.2. Lista de pacotes de plugins de navegadores 6.3. Lista de pacotes básicos relacionados com agente de transporte de mail para estação de trabalho 6.4. Lista de escolhas para pacotes de agente de transporte de mail (MTA) no arquivo Debian. 6.5. Lista dos manuais importantes do postfix 6.6. Lista de ficheiros de configuração relacionados com endereços de mail 6.7. Lista de operações MTA básicas 6.8. Lista de agentes utilizador de mail (MUA) 6.9. Lista de adquiridores de mail remoto e utilitários de reencaminhamento 6.10. Lista de MDA com filtro 6.11. Lista de Servidores POP3/IMAP4 6.12. Lista de servidores de impressoras e utilitários 6.13. Lista de servidores de acesso remoto e utilitários 6.14. Lista de protocolos e métodos de autenticação do SSH 6.15. Lista de ficheiros de configuração do SSH 6.16. Lista de exemplos de arranque do cliente SSH 6.17. Lista de clientes SSH para outras plataformas 6.18. Lista de outras aplicações de servidor de rede 6.19. Lista de clientes de aplicação de rede 6.20. Lista de RFCs populares 7.1. Lista de (meta)pacotes chave para o X Window 7.2. Lista de terminologia de servidor/cliente 7.3. Lista de métodos de ligação ao servidor X 7.4. Tabela de pacotes para suportar fonts do sistema X Window 7.5. Tabela de fonts PostScript Type 1 correspondentes 7.6. Tabela de fonts correspondentes a TrueType 7.7. Tabela de palavras chave usadas em nomes de fonts CJK para indicar os tipos de fonts. 7.8. lista de aplicações X de escritório básicas 7.9. Lista de aplicações X utilitárias básicas 8.1. Lista de métodos de configuração do teclado 8.2. Lista de suportes a método de entrada com IBus 9.1. Lista de programas para suportar ligações à rede interrompidas 9.2. Lista de ligações de teclas para o screen 9.3. Lista de analisadores de log do sistema 9.4. Mostrar exemplos de hora e data para o comando "ls -l" para wheezy 9.5. Lista de ferramentas gráficas de manipulação de imagens 9.6. Lista de pacotes para gravar histórico de configuração em VCS 9.7. Lista de pacotes de gestão de partições do disco 9.8. Lista de pacotes de gestão de sistemas de ficheiros 9.9. Lista de utilitários de encriptação de dados 9.10. Lista de ferramentas para monitorizar e controlar as actividades de programas 9.11. Lista de valores nice para a prioridade de agendamento 9.12. Lista dos estilos do comando ps 9.13. Lista de comandos para o top 9.14. Lista dos sinais frequentemente usados para o comando kill 9.15. Lista de teclas de comando SAK 9.16. Lista de ferramenta de identificação de hardware 9.17. Lista de ferramentas de configuração do hardware 9.18. Lista de pacotes de som 9.19. Lista de comandos para desactivar o protector de ecrã 9.20. Lista dos tamanhos de memória reportados 9.21. Lista de ferramentas para segurança do sistema e verificação de integridade 9.22. Lista de pacotes chave a serem instalados para a recompilação do kernel no sistema Debian 9.23. Lista de ferramentas de virtualização 10.1. Lista de ferramentas de arquivo e compressão 10.2. Lista de ferramentas de cópia e sincronização 10.3. Lista de suites utilitárias de salvaguarda 10.4. Lista de hipóteses de sistemas de ficheiros para dispositivos de armazenamento amovíveis com cenários de utilização típica 10.5. Lista de serviços de rede para escolher com o cenário de utilização típico 10.6. Lista de pacote para ver e editar dados binários 10.7. Lista de pacotes para ler e escrever ficheiros sem montar o disco. 10.8. Lista de ferramentas para adicionar redundância de dados a ficheiros 10.9. Lista de pacotes para recuperação de ficheiros e dados e análise forense 10.10. Lista de ferramentas de infraestrutura da segurança de dados 10.11. Lista de comandos do GNU Privacy Guard para gestão de chaves 10.12. Lista do significado do código de confiança 10.13. Lista de comandos do GNU Privacy Guard em ficheiros 10.14. Lista de ferramentas de fusão de código fonte 10.15. lista de ferramentas de sistemas de controle de versão 10.16. Comparação dos comandos VCS nativos 10.17. Opções notáveis para comandos CVS (use como primeiro argumento (s) para o cvs(1)) 10.18. Opções notáveis para os comandos do Subversion (use como primeiro argumento) para o svn(1)) 10.19. Lista de pacotes e comandos relacionados com o git 11.1. Lista de ferramentas de conversão de dados em texto 11.2. Lista de valores de codificação e a sua utilização 11.3. Lista de estilos EOL para diferentes plataformas 11.4. Lista de comandos de conversão de TAB dos pacotes bsdmainutils e coreutils 11.5. Lista de ferramentas para extracção de dados de texto simples 11.6. Lista de ferramentas para destacar dados em texto simples 11.7. Lista de entidades predefinidas para XML 11.8. Lista de ferramentas XML 11.9. Lista de ferramentas DSSL 11.10. Lista de ferramentas de extracção de dados de XML 11.11. Lista de ferramentas de impressão bonita de XML 11.12. Lista de interpretadores PostScript Ghostscript 11.13. Lista de utilitários de dados imprimíveis 11.14. Lista de ferramentas de formatação de texto 11.15. Lista de pacotes para ajudar a criar o manual (manpage) 11.16. Lista de pacotes para ajudar na conversão de dados de mail 11.17. Lista de ferramentas de dados gráficos 11.18. Lista de ferramentas de conversão de dados variados 12.1. Lista de pacotes para ajudar a programar 12.2. Lista dos 'bashisms' típicos 12.3. Lista de parâmetros da shell 12.4. Lista de expansões de parâmetros de shell 12.5. Lista de substituições de parâmetros de shell chave 12.6. Lista de operadores de comparação de ficheiros na expressão condicional 12.7. Lista de operadores de comparação de strings na expressão condicional 12.8. Lista de pacotes que contém programas utilitários pequenos para scripts de shell 12.9. Lista de programas de interface de utilizador 12.10. Lista de variáveis automáticas do make 12.11. Lista de expansões da variável do make 12.12. Lista de comandos gdb avançados 12.13. Lista de ferramentas de detecção de fugas de memória 12.14. Lista de ferramentas para análise de código estático 12.15. Lista de geradores de análise LALR compatíveis com Yacc 12.16. Lista de ferramentas de tradução de código-fonte Prefácio Índice 1. Aviso 2. O que é o Debian 3. Acerca deste documento 3.1. Regras orientadoras 3.2. Pré-requisitos 3.3. Convenções 3.4. popcon 3.5. O tamanho do pacote 3.6. Relatórios de bugs deste documento 4. Algumas citações para os novos utilizadores This Debian Reference (version 2) (http://www.debian.org/doc/manuals/ debian-reference/) (2013-10-02 08:27:59 UTC) is intended to provide a broad overview of the Debian system administration as a post-installation user guide. Destina-se ao leitor que está disposto a aprender scripts de consola mas não está pronto para ler todo o código-fonte em C para descobrir como o sistema GNU (http://en.wikipedia.org/wiki/GNU) /Linux (http:// en.wikipedia.org/wiki/Linux) funciona. 1. Aviso     Todas as garantias são renunciadas. Todas as marcas são propriedade dos seus respectivos donos de marca. The Debian system itself is a moving target. This makes its documentation difficult to be current and correct. Although the     current unstable version of the Debian system was used as the basis for writing this, some contents may be already outdated by the time you read this. Por favor veja este documento como uma referência secundária.     Este documento não substitui quaisquer guias oficiais. O autor e participantes não tomam responsabilidade pelas consequências de erros, omissões ou ambiguidades neste documento. 2. O que é o Debian O Projecto Debian (http://www.debian.org) é uma associação de     indivíduos que têm como causa comum a criação de um sistema operativo livre. A sua distribuição é caracterizada pelo seguinte. * Compromisso com a liberdade do software: Debian Social Contract e Debian Free Software Guidelines (DFSG) (http:// www.debian.org/social_contract) * Esforço distribuído de voluntários não-remunerados através da Internet: http://www.debian.org (http://www.debian.org)     * Grande número de softwares pré-compilados de alta qualidade * Foco em estabilidade e segurança com acesso fácil a actualizações de segurança * Foco na actualização tranquila para os softwares mais recentes com os arquivos unstable e testing * Grande número de arquitecturas de hardware suportadas As peças de Software Livre em Debian vêm de GNU (http:// en.wikipedia.org/wiki/GNU) , Linux (http://en.wikipedia.org/wiki/ Linux) , BSD (http://en.wikipedia.org/wiki/ Berkeley_Software_Distribution) , X (http://en.wikipedia.org/wiki /X_Window_System) , ISC (http://en.wikipedia.org/wiki/ Internet_Systems_Consortium) , Apache (http://en.wikipedia.org/ wiki/Apache_Software_Foundation) , Ghostscript (http:// en.wikipedia.org/wiki/Ghostscript) , Common Unix Printing System (http://en.wikipedia.org/wiki/Common_Unix_Printing_System) , Samba (http://en.wikipedia.org/wiki/Samba_(software)) , GNOME (http://en.wikipedia.org/wiki/GNOME) , KDE (http:// en.wikipedia.org/wiki/KDE) , Mozilla (http://en.wikipedia.org/ wiki/Mozilla) , OpenOffice.org (http://en.wikipedia.org/wiki/ OpenOffice.org) , Vim (http://en.wikipedia.org/wiki/Vim_ (text_editor)) , TeX (http://en.wikipedia.org/wiki/TeX) , LaTeX     (http://en.wikipedia.org/wiki/LaTeX) , DocBook (http:// en.wikipedia.org/wiki/DocBook) , Perl (http://en.wikipedia.org/ wiki/Perl) , Python (http://en.wikipedia.org/wiki/Python_ (programming_language)) , Tcl (http://en.wikipedia.org/wiki/Tcl) , Java (http://en.wikipedia.org/wiki/Java_(programming_language)) , Ruby (http://en.wikipedia.org/wiki/Ruby_(programming_language)) , PHP (http://en.wikipedia.org/wiki/PHP) , Berkeley DB (http:// en.wikipedia.org/wiki/Berkeley_DB) , MySQL (http:// en.wikipedia.org/wiki/MySQL) , PostgreSQL (http:// en.wikipedia.org/wiki/PostgreSQL) , Exim (http://en.wikipedia.org /wiki/Exim) , Postfix (http://en.wikipedia.org/wiki/Postfix_ (software)) , Mutt (http://en.wikipedia.org/wiki/Mutt_ (e-mail_client)) , FreeBSD (http://en.wikipedia.org/wiki/FreeBSD) , OpenBSD (http://en.wikipedia.org/wiki/OpenBSD) , Plan 9 (http:/ /en.wikipedia.org/wiki/Plan_9_from_Bell_Labs) e muitos mais projectos de software livre independentes. Debian integra esta diversidade de Software Livre num sistema. 3. Acerca deste documento 3.1. Regras orientadoras     Foram seguidas as seguintes regras de orientação ao compilar este documento. * Dar uma visão geral e saltar casos não comuns. (Imagem Geral) * Manter Curto e Simples. (Principio KISS) * Não reinventar a roda. (Utilizar apontadores para as     referências existentes) * Foco nas ferramentas não-GUI e consolas. (Utilizar exemplos de shell) * Ser objectivo. (Utilizar popcon (http://popcon.debian.org/) etc.) Dica     Eu tentei elucidar aspectos hierárquicos e níveis mais baixos do sistema. 3.2. Pré-requisitos Atenção     Espera-se que se esforce a procurar respostas por si próprio e para além desta documentação. Este documento apenas oferece pontos de arranque eficientes.     Você tem de procurar a solução por si a partir de fontes primárias. * O site Debian em http://www.debian.org (http:// www.debian.org) para informação geral * A documentação sob o directório "/usr/share/doc/ " * O manual de estilo Unix: "dpkg -L |grep '/ man/man.*/'" * A página info estilo GNU: "dpkg -L |grep '/ info/'"     * Relatórios de bugs http://bugs.debian.org/ (http://bugs.debian.org/) * O Debian Wiki em http://wiki.debian.org/ (http:// wiki.debian.org/) para os tópicos específicos e em movimento. * Os HOWTOs de The Linux Documentation Project (TLDP) em http:/ /tldp.org/ (http://tldp.org/) * The Single UNIX Specification de Open Group's The UNIX System Home Page em http://www.unix.org/ (http://www.unix.org/) * A enciclopédia livre Wikipedia em http://www.wikipedia.org/ (http://www.wikipedia.org/) Nota     Para documentação detalhada, pode necessitar instalar o correspondente pacote de documentação chamado com o sufixo "-doc". 3.3. Convenções Este documento fornece informação através do seguinte estilo de     apresentação simplificado com exemplos de comandos de shell bash (1).     # $ Estas 'prompts' da shell distinguem a conta utilizada e     correspondem a definir variáveis de ambiente como: "PS1='\$'" e "PS2=' '". Estes valores são escolhidos para bem da legibilidade deste documento e não são típicos do sistema instalado. Nota     Veja o significado das variáveis de ambiente "$PS1" e "$PS2" em bash(1). A acção necessária do administrador do sistema é escrita em     sentido imperativo, p.e. "Carregue na tecla Enter após escrever cada string de comando na shell." A coluna descrição e semelhantes na tabela podem conter um sintagma nominal seguido da convenção de descrição curta do pacote (http://www.debian.org/doc/manuals/developers-reference/ best-pkging-practices#bpp-desc-basics) que deixa cair os artigos como "um" e "o". Pode em alternativa conter uma frase no     infinitivo tal como um sintagma nominal sem o antecedente "para" seguindo a convenção de descrição curta de comando das 'manpages'. Isto pode parecer esquisito para algumas pessoas mas são as minhas escolhas intencionais de estilo para manter esta documentação o mais simples possível. Estes sintagmas nominais não começam por maiúscula nem terminam com ponto final seguindo esta convenção de descrição curta. Nota     Substantivos próprios incluindo os nomes de comandos mantêm maiúscula/minúscula sem respeitarem a sua localização. Um bloco de comandos citado num parágrafo de texto é referido     pelo tipo de letra de dactilografia entre aspas, tal como "aptitude safe-upgrade". Os dados em texto de um ficheiro de configuração citados num     parágrafo de texto são referidos em tipo de letra de máquina de escrever entre aspas, tal como "deb-src". Um comando é referenciado pelo seu nome em tipo de letra de     máquina de escrever seguido opcionalmente pelo número de secção da manpage em parêntesis, tal como bash(1). É encorajado a obter informação ao escrever o seguinte.     $ man 1 bash Uma manpage é referida pelo seu nome em tipo de letra de máquina     de escrever seguido pelo seu número de secção da manpage em parêntesis, tal como sources.list(5). Você é encorajado a obter informação ao escrever o seguinte.     $ man 5 sources.list Uma página info é referenciada pelo seu comando em tipo de letra     de máquina de escrever entre aspas, tal como "info make". Você é encorajado a obter informação ao escrever o seguinte.     $ info make Um nome de ficheiro é referenciado em tipo de letra de máquina de     escrever entre aspas, tal como "/etc/passwd". Para os ficheiros de configuração, você é encorajado a obter informação ao escrever o seguinte.     $ sensible-pager "/etc/passwd" Um nome de directório é referenciado em tipo de letra de máquina     de escrever entre aspas, tal como "/etc/init.d/". Você é encorajado a explorar o seu conteúdo ao escrever o seguinte.     $ mc "/etc/init.d/" Um nome de pacote é referenciado pelo seu nome em tipo de letra     de máquina de escrever, tal como vim. Você é encorajado a obter informação ao escrever o seguinte. $ dpkg -L vim     $ apt-cache show vim $ aptitude show vim Uma documentação pode indicar a sua localização pelo nome de ficheiro em tipo de letra de dactilografia entre aspas, tal como "/usr/share/doc/sysv-rc/README.runlevels.gz" e "/usr/share/doc/     base-passwd/users-and-groups.html"; ou pelo seu URL (http:// en.wikipedia.org/wiki/Uniform_Resource_Locator) , tal como http:/ /www.debian.org (http://www.debian.org) . Você é encorajado a ler a documentação ao escrever o seguinte. $ zcat "/usr/share/doc/sysv-rc/README.runlevels.gz" | sensible-pager     $ sensible-browser "/usr/share/doc/base-passwd/users-and-groups.html" $ sensible-browse "http://www.debian.org" Uma variável de ambiente é referenciada pelo seu nome com um "$"     inicial em tipo de letra de máquina de escrever, entre aspas, tal como "$TERM". Você é encorajado a obter o seu valor actual ao escrever o seguinte.     $ echo "$TERM" 3.4. popcon Os dados popcon (http://popcon.debian.org/) são apresentados como a medida objectiva da popularidade de cada pacote. Foi     descarregado em 2013-08-14 10:05:05 UTC e contém a submissão total de 147705 relatórios sobre 132694 pacotes binários e 23 arquitecturas. Nota     Por favor note que o arquivo amd64 unstable contém actualmente apenas 40514 pacotes. Os dados popcon contém relatórios de muitas instalações de sistemas antigos. O número de popcon precedido de "V:" para "votos" é calculado por     "1000 * (as submissões popcon para o pacote executado recentemente no PC) / (o total de submissões de popcon)". O número de popcon precedido de "I:" para "instalações" é     calculado por "1000 * (as submissões popcon para o pacote instalado no PC) / (o total de submissões de popcon)". Nota As figuras do popcon não devem ser consideradas como medidas     absolutas da importância dos pacotes. Existem muitos factores que podem desviar as estatísticas. Por exemplo, um sistema que participa no popcon pode ter directórios montados como o "/bin" com a opção "noatime" para melhoria da performance do sistema e efectivamente desactivar os "votos" de tal sistema. 3.5. O tamanho do pacote Os dados de tamanho do pacote são também apresentados como a medida objectiva para cada pacote. São baseados no "Installed-Size:" reportado pelo comando "apt-cache show" ou pelo     "aptitude show" (actualmente na amd64 arquitectura para o lançamento unstable). O tamanho reportado está em KB (Kilobyte (http://en.wikipedia.org/wiki/Kibibyte) = unidade para 1024 bytes). Nota Um pacote com um tamanho de pacote numericamente pequeno pode     indicar que o pacote no lançamento unstable é um pacote dummy que instala outros pacotes com conteúdos significativos por dependência. O pacote dummy activa uma transição suave ou divisão do pacote. Nota     Um tamanho de pacote seguido por "(*)" indica que o pacote no lançamento unstable está em falta e em vez dele é usado o tamanho do pacote para o lançamento experimental. 3.6. Relatórios de bugs deste documento Se encontrar quaisquer problemas neste documento por favor     preencha um relatórios de bug contra o pacote debian-reference utilizando o reportbug(1) . Por favor inclua sugestões de correcção com "diff -u" sobre a versão de texto ou código-fonte. 4. Algumas citações para os novos utilizadores     Aqui estão algumas citações interessantes da lista de email Debian que podem ajudar a elucidar novos utilizadores. * "Isto é Unix. Dá-lhe corda suficiente para se enforcar." --- Miquel van Smoorenburg     * "Unix É amigo do utilizador... Apenas é selectivo sobre quem são os seus amigos." --- Tollef Fog Heen     Wikipedia has article "Unix philosophy (http://en.wikipedia.org/ wiki/Unix_philosophy) " which lists interesting quotes. Capítulo 1. Manuais de GNU/Linux Eu acho que aprender um sistema de computador é como aprender uma     nova língua estrangeira. Apesar dos livros e documentação darem ajuda, você tem que praticar também. De modo a ajudá-lo a iniciar suavemente, elaborei alguns pontos básicos. O design poderoso da Debian (http://www.debian.org) GNU (http:// en.wikipedia.org/wiki/GNU) /Linux (http://en.wikipedia.org/wiki/ Linux) vem do sistema operativo Unix (http://en.wikipedia.org/     wiki/Unix) , isto é, um sistema operativo multi-utilizador (http: //en.wikipedia.org/wiki/Multi-user) e multi-tarefa (http:// en.wikipedia.org/wiki/Computer_multitasking) . Você necessita aprender a tirar vantagem do poder destas funcionalidades e semelhanças entre Unix e GNU/Linux. Não se esconda dos textos orientados ao Unix e não se guie     somente nos textos de GNU/Linux, por isto rouba-lhe muita informação útil. Nota     Se você tem usado qualquer sistema de tipo Unix (http:// en.wikipedia.org/wiki/Unix-like) com ferramentas de linha de comandos, provavelmente já sabe tudo o que eu explico aqui. Por favor use isto como um teste de realidade e refrescamento. 1.1. Básico da consola 1.1.1. A linha de comandos da shell Após arrancar o sistema, é-lhe apresentado o ecrã de login baseado em caracteres se você não instalou o X Window System     (http://en.wikipedia.org/wiki/X_Window_System) com um gestor de visualização como o gdm3. Suponha que o nome da sua máquina é foo, o aviso de login parece-se com o seguinte.     foo login: Se instalou um ambiente GUI (http://en.wikipedia.org/wiki/ Graphical_user_interface) , como o GNOME (http://en.wikipedia.org     /wiki/GNOME) ou KDE (http://en.wikipedia.org/wiki/KDE) , então pode ir para uma prompt de login ao pressionar Ctrl-Alt-F1, e pode regressar ao ambiente GUI com Alt-F7 (para mais informação veja em baixo Secção 1.1.6, “Consolas virtuais”). Na prompt de login, escreva o seu nome de utilizador, p.e.     penguin, e carregue na tecla Enter, depois escreva a sua palavra-passe e carregue novamente na tecla Enter. Nota Seguindo a tradição do Unix, o nome de utilizador e palavra-passe     do sistema Debian são sensíveis a maiúsculas/minúsculas. O nome de utilizador é geralmente escolhido apenas em minúsculas. A primeira conta de utilizador é normalmente criada durante a instalação. Podem ser criadas contas de utilizador adicionais com adduser(8) pelo root.     O sistema inicia com a mensagem de boas vindas armazenada em "/ etc/motd" (Mensagem do Dia) e apresenta uma prompt de comandos. Debian GNU/Linux lenny/sid foo tty1 foo login: penguin Password: Last login: Sun Apr 22 09:29:34 2007 on tty1 Linux snoopy 2.6.20-1-amd64 #1 SMP Sun Apr 15 20:25:49 UTC 2007 x86_64     The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. foo:~$ Aqui, a parte principal da mensagem de boas vindas pode ser     personalizada ao editar o ficheiro "/etc/motd.tail". A primeira linha é gerada a partir de informação do sistema usando "uname -snrvm".     Você está agora na shell (http://en.wikipedia.org/wiki/Shell_ (computing)) . A shell interpreta os seus comandos. 1.1.2. A linha de comandos shell sob X Se você instalou o X Window System (http://en.wikipedia.org/wiki/ X_Window_System) com um gestor de ecrã como o gdm3 do GNOME (http://en.wikipedia.org/wiki/GNOME) ao seleccionar a tarefa "Ambiente de Trabalho" durante a instalação, é-lhe apresentado o     ecrã de login gráfico após arrancar o sistema. Escreva o seu nome de utilizador e a sua palavra-passe para iniciar sessão na conta de utilizador não-privilegiado. Use a tecla Tab para navegar entre nome de utilizador e a palavra-passe ou utilize o rato e o clique principal. Você pode obter uma linha de comandos no X ao iniciar um programa     x-terminal-emulator tal como o gnome-terminal(1), rxvt(1) ou o xterm(1). No ambiente de trabalho GNOME, clicar em "Aplicações" → "Acessórios" → "Consola".     Pode ver também a secção Secção 1.1.6, “Consolas virtuais” . Under some other Desktop systems (like fluxbox), there may be no     obvious starting point for the menu. If this happens, just try (right) clicking the background of the desktop screen and hope for a menu to pop-up. 1.1.3. A conta root A conta root também é chamada como de super utilizador (http://     en.wikipedia.org/wiki/Superuser) ou de utilizador privilegiado. A partir desta conta, você pode executar as seguintes tarefas de administração do sistema: * Ler, escrever e remover quaisquer ficheiros no sistema independentemente das suas permissões * Definir o dono e permissões de quaisquer ficheiros no sistema     * Definir a palavra-passe de quaisquer utilizadores não privilegiados do sistema. * Fazer login em qualquer conta sem a sua palavra-passe     Este poder ilimitado da conta root requer que você seja atento e responsável quando a utilizar. Atenção     Nunca partilhe a palavra-passe de root com outros. Nota As permissões de um ficheiro (incluindo dispositivos de hardware como CD-ROM etc. os quais são apenas outros ficheiros para o     sistema Debian) podem torná-lo não-utilizável ou inacessível para utilizadores não-root. Apesar da utilização da conta root ser um modo rápido de testar este tipo de situação, a sua resolução deve ser feita através da definição correcta das permissões do ficheiro e membros dos grupos de utilizadores. (veja Secção 1.2.3, “Permissões do sistema de ficheiros”). 1.1.4. A linha de comandos shell do root     Aqui estão alguns métodos básicos de ganhar a prompt da shell de root ao utilizar a palavra-passe do root: * Escreva root na prompt de login baseada em caracteres. * Clique "Aplicações" → "Acessórios" → "Terminal de Root", no ambiente de trabalho GNOME.     * Escreva "su -l" na prompt da shell de qualquer utilizador. o Isto não preserva o ambiente do utilizador actual. * Escreva "su" na prompt de shell de qualquer utilizador. o Isto preserva algum do ambiente do utilizador actual. 1.1.5. GUI de ferramentas de administração do sistema Quando o menu do seu ambiente de trabalho não iniciar automaticamente as ferramentas GUI de administração do sistema com os privilégios apropriados, você pode iniciá-las a partir da     prompt da shell de root do emulador dum terminal X, tal como o gnome-terminal(1), rxvt(1), ou xterm(1). Veja Secção 1.1.4, “A linha de comandos shell do root” e Secção 7.8.4, “Correr clientes X como root”. Atenção     Nunca inicie o gestor de ecrã/sessão X com a conta root ao escrever root na prompt do gestor de ecrã/sessão como o gdm3(1). Atenção     Nunca execute programas GUI remotos que não sejam confiáveis no X Window quando é mostrada informação critica porque pode "espiar" o seu ecrã X. 1.1.6. Consolas virtuais Por omissão no sistema Debian existem disponíveis seis consolas de caracteres alternáveis tipo VT100 (http://en.wikipedia.org/ wiki/VT100) para arrancar a shell de comandos directamente na máquina Linux. A menos que você esteja num ambiente GUI, você     pode mudar entre consolas virtuais ao pressionar Left-Alt-key e simultaneamente numa das teclas F1 — F6. Cada consola de caracteres permite um login independente para a conta e oferece um ambiente multi-utilizador. Este ambiente multi-utilizador é uma funcionalidade excelente do Unix, e muito viciante. Se você está no X Window System, pode ganhar acesso à consola 1 pressionando as teclas Ctrl-Alt-F1, isto é, a     tecla-Ctrl-esquerda, a tecla-Alt-esquerda, e a tecla-F1 pressionadas em conjunto. Pode regressar ao X Window System, que normalmente corre na consola virtual 7, pressionando Alt-F7.     Você pode, em alternativa, mudar para outra consola virtual, por exemplo para a consola 1, a partir da linha de comandos.     # chvt 1 1.1.7. Como abandonar a linha de comandos Escreva Ctrl-D, isto é, a tecla-Ctrl-esquerda e a tecla d pressionadas ao mesmo tempo, na linha de comandos para fechar a actividade da shell. Se estiver na consola de caracteres, com     isto, você retorna ao aviso de login. Mesmo que estes caracteres de controle sejam referidos como "control D" com letra maiúscula, você não precisa de pressionar a tecla Shift. A expressão curta, ^D, também é usada para Ctrl-D. Em alternativa pode escrever "exit".     Se estiver no x-terminal-emulator(1), com isto pode fechar a janela do x-terminal-emulator. 1.1.8. Como desligar o sistema Tal como qualquer outro SO moderno onde operar ficheiros involve colocar dados em cache (http://en.wikipedia.org/wiki/Cache) em memória para melhorar a performance, o sistema Debian precisa de um processo apropriado de desligar antes que a energia possa ser,     em segurança, desligada. Isto é para manter a integridade dos ficheiros, ao forçar todas as alterações em memória a serem escritas no disco. Se estiver disponível software de controle de energia, o processo de desligar desliga automaticamente a energia do sistema. (Caso contrário, você pode ter de pressionar o botão de energia por alguns segundos após o procedimento de desligar.)     Você pode desligar o sistema sob o modo normal de multi-utilizador a partir da linha de comandos.     # shutdown -h now     Você pode desligar o sistema sob o modo único-utilizador a partir da linha de comandos.     # poweroff -i -f Em alternativa, você pode pressionar Ctrl-Alt-Delete (A tecla-Ctrl-esquerda, a tecla-Alt-esquerda, e Delete pressionadas     ao mesmo tempo) para desligar o sistema se "/etc/inittab" contiver "ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now". Veja inittab(5) para detalhes.     Veja a Secção 6.9.6, “Como desligar o sistema remoto em SSH”. 1.1.9. Recuperar uma consola sã Quando o ecrã fica estranho após fazer coisas estranhas tal como     "cat ", escreva "reset" na linha de comandos. Você poderá não ver o comando a aparecer quando o escreve. Também pode utilizar "clear" para limpar o ecrã. 1.1.10. Sugestões de pacotes adicionais para o novato Apesar de mesmo uma instalação mínima do sistema Debian sem quaisquer tarefas de ambiente de trabalho disponibilizar as     funcionalidades básicas do Unix, é uma boa ideia instalar alguns pacotes baseados em linha de comandos e terminais de caracteres baseados em curses tais como o mc e o vim com o apt-get(8) para os iniciantes começarem, com o seguinte: # apt-get update     ... # apt-get install mc vim sudo ...     Se já tiver estes pacotes instalados, não serão instalados novos pacotes. Tabela 1.1. Lista de pacotes de programas interessantes em modo de texto +-----------------------------------------------------------------------+ |pacote |popcon |tamanho |descrição | |-------------------+-------------+----------------------+--------------| | |V:87, I:243 | |Um gestor de | |mc (http:// |(http:// |1381 (http:// |ficheiro de | |packages.debian.org|qa.debian.org|packages.qa.debian.org|ecrã completo | |/sid/mc) |/popcon.php? |/m/mc.html) |em modo de | | |package=mc) | |texto | |-------------------+-------------+----------------------+--------------| | |V:378, I:757 | |Um programa | |sudo (http:// |(http:// |2039 (http:// |para permitir | |packages.debian.org|qa.debian.org|packages.qa.debian.org|privilégios de| |/sid/sudo) |/popcon.php? |/s/sudo.html) |root limitados| | |package=sudo)| |aos | | | | |utilizadores | |-------------------+-------------+----------------------+--------------| | | | |O editor de | | |V:152, I:386 | |texto de Unix | |vim (http:// |(http:// |1966 (http:// |Vi IMproved, | |packages.debian.org|qa.debian.org|packages.qa.debian.org|um editor de | |/sid/vim) |/popcon.php? |/v/vim.html) |texto para | | |package=vim) | |programadores | | | | |(versão | | | | |standard) | |-------------------+-------------+----------------------+--------------| | | | |O editor de |     | |V:102, I:959 | |texto de Unix | |vim-tiny (http:// |(http:// |891 (http:// |Vi IMproved, | |packages.debian.org|qa.debian.org|packages.qa.debian.org|um editor de | |/sid/vim-tiny) |/popcon.php? |/v/vim-tiny.html) |texto para | | |package= | |programadores | | |vim-tiny) | |(versão | | | | |compacta) | |-------------------+-------------+----------------------+--------------| | | | |Emacs do | | |V:43, I:99 | |Projecto GNU, | |emacs23 (http:// |(http:// |13103 (http:// |o editor de | |packages.debian.org|qa.debian.org|packages.qa.debian.org|texto | |/sid/emacs23) |/popcon.php? |/e/emacs23.html) |extensível | | |package= | |baseado em | | |emacs23) | |Lisp (versão | | | | |23) | |-------------------+-------------+----------------------+--------------| | |V:197, I:879 | | | |w3m (http:// |(http:// |2072 (http:// |Navegadores de| |packages.debian.org|qa.debian.org|packages.qa.debian.org|WWW de modo de| |/sid/w3m) |/popcon.php? |/w/w3m.html) |texto | | |package=w3m) | | | |-------------------+-------------+----------------------+--------------| | |V:20, I:32 | |O | |gpm (http:// |(http:// |500 (http:// |cortar-e-colar| |packages.debian.org|qa.debian.org|packages.qa.debian.org|estilo Unix na| |/sid/gpm) |/popcon.php? |/g/gpm.html) |consola de | | |package=gpm) | |texto (daemon)| +-----------------------------------------------------------------------+     Pode ser uma boa ideia ler algumas documentações informativas. Tabela 1.2. Lista de pacotes de documentação informativa +------------------------------------------------------------------------------------+ |pacote |popcon |tamanho |descrição | |---------------------+---------------------+--------------------------+-------------| | | | |Documentação | |doc-debian (http:// |I:858 (http:// |142 (http:// |do Projecto | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/d/ |Debian, (FAQ | |sid/doc-debian) |popcon.php?package= |doc-debian.html) |do Debian) e | | |doc-debian) | |outros | | | | |documentos | |---------------------+---------------------+--------------------------+-------------| | |I:87 (http:// | |Manual de | |debian-policy (http:/|qa.debian.org/ |3648 (http:// |Políticas | |/packages.debian.org/|popcon.php?package= |packages.qa.debian.org/d/ |Debian e | |sid/debian-policy) |debian-policy) |debian-policy.html) |documentos | | | | |relacionados | |---------------------+---------------------+--------------------------+-------------| |developers-reference |I:10 (http:// | |Guias e | |(http:// |qa.debian.org/ |1179 (http:// |informação | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/d/ |para | |sid/ |developers-reference)|developers-reference.html)|programadores|     |developers-reference)| | |de Debian | |---------------------+---------------------+--------------------------+-------------| |maint-guide (http:// |I:7 (http:// |765 (http:// |Guia dos | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/m/ |Novos | |sid/maint-guide) |popcon.php?package= |maint-guide.html) |Maintainers | | |maint-guide) | |de Debian | |---------------------+---------------------+--------------------------+-------------| |debian-history (http:|I:2 (http:// |4625 (http:// |História do | |//packages.debian.org|qa.debian.org/ |packages.qa.debian.org/d/ |Projecto | |/sid/debian-history) |popcon.php?package= |debian-history.html) |Debian | | |debian-history) | | | |---------------------+---------------------+--------------------------+-------------| |debian-faq (http:// |I:826 (http:// |1288 (http:// | | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/d/ |FAQ do Debian| |sid/debian-faq) |popcon.php?package= |debian-faq.html) | | | |debian-faq) | | | |---------------------+---------------------+--------------------------+-------------| |sysadmin-guide (http:|I:1 (http:// |964 (http:// |O Guia do | |//packages.debian.org|qa.debian.org/ |packages.qa.debian.org/s/ |Administrador| |/sid/sysadmin-guide) |popcon.php?package= |sysadmin-guide.html) |de Sistema | | |sysadmin-guide) | |Debian | +------------------------------------------------------------------------------------+     Você pode instalar alguns destes pacotes com o seguinte.     # apt-get install nome_do_pacote 1.1.11. Uma conta de utilizador extra Se você não deseja usar a sua conta de utilizador principal para     as seguintes actividades de treino, você pode criar uma conta de utilizador para treinos, por exemplo fish, fazendo o seguinte:     # adduser fish     Responder a todas as questões. Isto cria uma nova conta chamada fish. Após praticar, você pode     remover esta conta de utilizador e o seu directório home fazendo o seguinte:     # deluser --remove-home fish 1.1.12. Configuração do sudo Para a típica estação de trabalho de um único utilizador como o ambiente de trabalho do sistema Debian no PC portátil, é comum     implementar uma configuração simples do sudo(8) como se segue para permitir ao utilizador não-privilegiado, ex. penguin, ganhar privilégios administrativos apenas com a sua palavra passe de utilizador mas sem a palavra passe do root.     # echo "penguin ALL=(ALL) ALL" >> /etc/sudoers Em alternativa, é também comum fazer como se segue para permitir     a um utilizador não privilegiado, ex. penguin, ganhar privilégios administrativos sem qualquer palavra-passe.     # echo "penguin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers     Este truque só deve ser usado na estação de trabalho de um único utilizador qual você administre e onde você é o único utilizador. Atenção     Não configure assim as contas de utilizadores normais numa estação de trabalho multi-utilizador porque seria muito mau para a segurança do sistema. Cuidado     A palavra-passe e a conta penguin no exemplo em cima requer tanta protecção como a palavra-passe do root e a conta do root. Cuidado O privilégio administrativo neste contexto pertence a alguém     autorizado a executar as tarefas de administração do sistema numa estação de trabalho. Nunca dê tais privilégios a um gestor do departamento Administrativo da sua firma ou ao seu chefe a menos que eles sejam autorizados e capazes. Nota     Para disponibilizar privilégios de acesso a dispositivos limitados e ficheiros limitados, você deve considerar usar o group para disponibilizar acesso limitado em vez de usar os privilégios do root via sudo(8). Nota Com uma configuração melhor pensada e cuidada, o sudo(8) pode garantir privilégios administrativos limitados a outros     utilizadores num sistema partilhado sem partilhar a palavra passe do root. Isto pode ajudar com as responsabilidades com máquinas com múltiplos administradores para que você possa saber quem fez o quê. Por outro lado, você pode querer que mais ninguém tenha tais privilégios. 1.1.13. Hora de brincar     Agora você está pronto para brincar com o sistema Debian sem riscos desde que use a conta de utilizador sem-privilégios. Isto porque o sistema Debian é, mesmo após uma instalação predefinida, configurado com permissões de ficheiros apropriadas que previne os utilizadores não privilegiados de danificarem o     sistema. É claro, podem ainda existir alguns buracos que possam ser explorados mas aqueles que se preocupam com estes problemas não deveriam ler esta secção e deveriam ler o Manual de Segurança Debian (http://www.debian.org/doc/manuals/securing-debian-howto/) .     Nós aprendemos o sistema Debian como um sistema tipo Unix (http:/ /en.wikipedia.org/wiki/Unix-like) com o seguinte: * Secção 1.2, “Sistema de ficheiros tipo Unix” (conceitos básicos) * Secção 1.3, “Midnight Commander (MC)” (método de sobrevivência)     * Secção 1.4, “O ambiente de trabalho estilo Unix básico” (método básico) * Secção 1.5, “O comando simples da shell” (mecanismo da shell) * Secção 1.6, “Processamento de texto estilo Unix” (método de processamento de texto) 1.2. Sistema de ficheiros tipo Unix No GNU/Linux e noutros sistemas operativos tipo Unix (http:// en.wikipedia.org/wiki/Unix-like) , os ficheiros (http:// en.wikipedia.org/wiki/Computer_file) estão organizados em     directórios (http://en.wikipedia.org/wiki/Directory_ (file_systems)) . Todos os ficheiros e directórios estão organizados numa grande árvore que nasce em "/". É chamada uma árvore porque se você desenhar o sistema de ficheiros, parece-se com uma árvore mas está de cabeça para baixo. These files and directories can be spread out over several devices. mount(8) serves to attach the filesystem found on some device to the big file tree. Conversely, umount(8) detaches it     again. On recent Linux kernels, mount(8) with some options can bind part of a file tree somewhere else or can mount filesystem as shared, private, slave, or unbindable. Supported mount options for each filesystem are available in "/share/doc/linux-doc-*/ Documentation/filesystems/". Os directórios no sistema Unix são chamados pastas nalguns outros sistemas. Por favor note também que não existe conceito para     drive tal como "A:" em qualquer sistema Unix. Existe um sistema de ficheiros, e tudo está incluído nele. Esta é uma enorme vantagem em comparação com o Windows. 1.2.1. Noções básicas de ficheiros Unix.     Aqui estão algumas noções básicas de ficheiros Unix: * Os nomes de ficheiro são sensíveis a maiúsculas/minúsculas. Isto é, "MEUFICHEIRO" e "MeuFicheiro" são ficheiros diferentes. * O directório raiz significa a raiz do sistema de ficheiros e é referido simplesmente como "/". Não confundir isto com o directório pessoal do utilizador root: "/root". * Todos os directórios têm um nome que pode conter quaisquer letras ou símbolos excepto "/". O directório raiz é uma excepção. O seu nome é "/" (pronuncia-se "slash" ou "o directório raiz") e não pode ser renomeado. * Cada ficheiro ou directório é designado por um nome de ficheiro totalmente qualificado, nome de ficheiro absoluto, ou caminho, que fornece a sequência de directórios que têm de ser percorridos para o alcançar. Estes três termos são sinónimos. * Todos os nomes de ficheiro totalmente qualificados começam com o directório "/", e existe um "/" entre cada directório ou ficheiro no nome do ficheiro. O primeiro "/" é o directório de nível de topo, e os outros "/"' separam sucessivamente os sub-directórios, até que se chegue à última entrada que é o nome real do ficheiro. As palavras utilizadas aqui conseguem ser confusas. Veja o seguinte nome de ficheiro completamente qualificado como um exemplo: "/usr/share/ keytables/us.map.gz". No entanto, as pessoas também se referem ao seu nome base sozinho "us.map.gz" como um nome de ficheiro.     * O directório raiz tem algumas ramificações, tais como "/etc/" e "/usr/". Estes sub-directórios por sua vez ramificam-se em mais sub-directórios, tais como "/etc/init.d/" e "/usr/local/ ". O todo, visto em conjunto, é a chamada árvore de directórios. Você pode pensar num nome de ficheiro absoluto como um caminho desde a base da árvore ("/") até ao fim de um ramo (um ficheiro). Também pode ouvir pessoas falar da árvore de directórios como se fosse uma árvore de família juntando todos os descendentes directos numa única figura chamada de directório raiz ("/"): assim, os sub-directórios têm pais, e um caminho mostra a linhagem completa de um ficheiro. Existem também caminhos relativos que começam algures noutro ponto que não o directório raiz. Deve lembrar-se que o directório "../" refere-se ao directório pai. Esta terminologia também se aplica a outras estruturas semelhantes a directórios, como estruturas hierárquicas de dados. * Não existe componente especial no nome de caminho que corresponde a um dispositivos físico, tal como o seu disco rígido. Isto difere de RT-11 (http://en.wikipedia.org/wiki/ RT-11) , CP/M (http://en.wikipedia.org/wiki/CP/M) , OpenVMS (http://en.wikipedia.org/wiki/OpenVMS) , MS-DOS (http:// en.wikipedia.org/wiki/MS-DOS) , AmigaOS (http:// en.wikipedia.org/wiki/AmigaOS) , e Microsoft Windows (http:// en.wikipedia.org/wiki/Microsoft_Windows) , onde o caminho contém um nome de dispositivo tal como "C:\". (No entanto, existem entradas nos directórios que referem-se a dispositivos físicos como parte do sistema de ficheiros normal. Veja Secção 1.2.2, “Internos do sistema de ficheiros” .) Nota Apesar de você poder usar quase todas as letras ou símbolos num nome de ficheiro, na prática é má ideia fazê-lo. É melhor evitar quaisquer caracteres que geralmente têm significados especiais na     linha de comandos, incluindo espaços, tabs, novas linhas, e outros caracteres especiais: { } ( ) [ ] ' ` " \ / > < | ; ! # & ^ * % @ $ . Se você deseja separar palavras num nome, as boas escolhas são o ponto, traço e underscore. Você também pode capitalizar cada palavra assim "ComoEsteExemplo". Os utilizadores avançados de Linux procuram evitar espaços nos nomes de ficheiros. Nota     A palavra "root" pode significar o "utilizador root" ou o "directório raiz (root)". O contexto da sua utilização deve torná-lo claro. Nota     A palavra caminho (path) é usada não apenas para o nome-de-ficheiro totalmente qualificado como em cima mas também para o caminho de busca de comandos. O significado pretendido é geralmente claro a partir do contexto. As melhores práticas detalhadas para a hierarquia de ficheiros     estão descritas no Filesystem Hierarchy Standard ("/usr/share/doc /debian-policy/fhs/fhs-2.3.txt.gz" e hier(7)). Você deve lembrar-se dos seguintes factos como princípio: Tabela 1.3. Lista de utilização de directórios chave +---------------------------------------------------------------+ |directório|utilização do directório | |----------+----------------------------------------------------| |/ |o directório raiz | |----------+----------------------------------------------------|     |/etc/ |ficheiros de configuração de todo o sistema | |----------+----------------------------------------------------| |/var/log/ |ficheiros log do sistema | |----------+----------------------------------------------------| |/home/ |todos os directórios home de todos os utilizadores | | |não privilegiados. | +---------------------------------------------------------------+ 1.2.2. Internos do sistema de ficheiros Seguindo a tradição do Unix, o sistema Debian GNU/Linux disponibiliza o sistema de ficheiros (http://en.wikipedia.org/     wiki/File_system) sob o qual residem os dados físicos em discos rigídos e outros dispositivos de armazenamento, e a interacção com os dispositivos de hardware como ecrãs de consola e consolas série remotas são representados num modo unificado sob "/dev/". Cada ficheiro, directório, 'named pipe' (um modo de dois programas partilharem dados), ou dispositivo físico num sistema Debian GNU/Linux tem uma estrutura de dados chamada inode (http:/ /en.wikipedia.org/wiki/Inode) que descreve os seus atributos associados como o utilizador que o possui (o dono), o grupo a que pertence, a hora do último acesso, etc. Se você estiver mesmo     interessado, veja "/usr/include/linux/fs.h" para uma definição exacta de "struct inode" no sistema Debian GNU/Linux. A ideia de representar praticamente tudo no sistema de ficheiros foi uma inovação do Unix, e os modernos kernel Linux desenvolveram esta ideia ainda mais. Actualmente, até informação sobre os processos que correm no computador pode ser encontrada no sistema de ficheiros. Esta representação abstracta e unificada de entidades físicas e processos internos é muito poderosa porque permite-nos utilizar o     mesmo comando para o mesmo tipo de operação em muitos dispositivos totalmente diferentes. É mesmo possível alterar o modo como o kernel funciona ao escrever dados em ficheiros especiais que estão ligados a processos em execução. Dica     Se necessitar identificar a correspondência entre a árvore de ficheiros e a entrada física, execute mount(8) sem argumentos. 1.2.3. Permissões do sistema de ficheiros As Permissões de sistemas de ficheiros (http://en.wikipedia.org/     wiki/File_system_permissions) de sistemas tipo-Unix (http:// en.wikipedia.org/wiki/Unix-like) são definidas por três categorias de utilizadores afectados: * O utilizador que é dono do ficheiro (u)     * Outros utilizadores no grupo ao qual o ficheiro pertence (g) * Todos os outros utilizadores (o) também referido como "mundo" e "todos"     Para o ficheiro, cada permissão correspondente permite as seguintes acções: * A permissão read (r) permite ao dono examinar o conteúdo do ficheiro.     * A permissão write (w) permite ao dono modificar o ficheiro. * A permissão execute (x) permite ao dono correr o ficheiro como um comando.     Para o directório, cada permissão correspondente permite as seguintes acções: * A permissão read (r) permite ao dono listar o conteúdo do directório.     * A permissão write (w) permite ao dono adicionar ou remover ficheiros no directório. * A permissão execute (x) permite ao dono aceder aos ficheiro no directório. Aqui, a permissão execute num directório significa não só     permitir a leitura dos ficheiros nesse directório mas também permitir visualizar os seus atributos, tais como o tamanho e a hora de modificação. ls(1) é utilizado para mostrar informação de permissões (e mais)     para ficheiros e directórios. Quando é invocado com a opção "-l", mostra a seguinte informação na ordem apresentada: * Tipo de ficheiro (primeiro caractere) * Permissão de acesso do ficheiro (nove caracteres, consistindo em três caracteres cada para utilizador, grupo, e outros por esta ordem) * Número de hard links para o ficheiro     * Nome do utilizador dono do ficheiro * Nome do grupo ao qual o ficheiro pertence * Tamanho do ficheiro em caracteres (bytes) * Data e hora do ficheiro (mtime) * Nome do ficheiro Tabela 1.4. Lista do primeiro caractere da saída de "ls -l" +----------------------------------------+ |caractere|significado | |---------+------------------------------| |- |ficheiro normal | |---------+------------------------------| |d |directório | |---------+------------------------------|     |l |link simbólico | |---------+------------------------------| |c |nó de dispositivo de caractere| |---------+------------------------------| |b |nó de dispositivo de bloco | |---------+------------------------------| |p |named pipe | |---------+------------------------------| |s |socket | +----------------------------------------+ chown(1) é utilizado a partir da conta de root para alterar o dono do ficheiro. chgrp(1) é utilizado a partir da conta do dono do ficheiro ou da conta root para alterar o grupo do ficheiro.     chmod(1) é usado a partir da conta do dono do ficheiro ou da conta root para alterar as permissões de acesso ao ficheiro ou directório. A sintaxe básica para manipular o ficheiro foo é a seguinte: # chown foo     # chgrp foo # chmod [ugoa][+-=][rwxXst][,...] foo Por exemplo, você pode fazer com que uma árvore de directórios     tenha como dono o utilizador foo e seja partilhada pelo grupo bar com o seguinte: # cd /qualquer/localização/     # chown -R foo:bar . # chmod -R ug+rwX,o=rX .     Existem mais três bits especiais de permissões. * O bit set user ID (s ou S em vez do x do utilizador)     * O bit set group ID (s ou S em vez do x do grupo) * O bit sticky (t ou T em vez do x dos outros) Aqui o resultado de "ls -l" para estes bits é capitalizado se a     execução de bits escondidos por estes resultados estiverem não definidos. Definir set user ID num ficheiro executável permite a um utilizador executar o ficheiro executável com o ID do dono do ficheiro (por exemplo root). De modo semelhante, definir set     group ID num ficheiro executável permite a um utilizador executar o ficheiro executável com o ID de grupo do ficheiro (por exemplo root). Porque estas definições podem causar riscos de segurança, activá-las requer precauções extra. Definir set group ID num directório activa o esquema de criação     de ficheiros ao estilo BSD (http://en.wikipedia.org/wiki/ Berkeley_Software_Distribution) onde todos os ficheiros criados no directório pertencem ao grupo do directório. Definir o sticky bit num directório previne que um ficheiro nesse directório seja removido por um utilizador que não seja o dono do ficheiro. De modo a tornar o conteúdo de um ficheiro seguro em directórios onde todos têm acesso de escrita, como o "/tmp" ou em     directórios onde um grupo tem acesso de escrita, não basta reiniciar a permissão de escrita do ficheiro mas também definir o sticky bit no directório. Caso contrário, o ficheiro pode ser removido e pode ser criado um novo ficheiro com o mesmo nome por qualquer utilizador que tenha acesso de escrita no directório.     Aqui estão alguns exemplos interessantes de permissões de ficheiros: $ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/exim4 crw------T 1 root root 108, 0 Oct 16 20:57 /dev/ppp -rw-r--r-- 1 root root 2761 Aug 30 10:38 /etc/passwd -rw-r----- 1 root shadow 1695 Aug 30 10:38 /etc/shadow -rwsr-xr-x 1 root root 973824 Sep 23 20:04 /usr/sbin/exim4     $ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src drwxrwxrwt 14 root root 20480 Oct 16 21:25 /tmp drwxrwsr-x 10 root staff 4096 Sep 29 22:50 /usr/local drwxr-xr-x 10 root root 4096 Oct 11 00:28 /usr/src drwxrwsr-x 2 root mail 4096 Oct 15 21:40 /var/mail drwxrwxrwt 3 root root 4096 Oct 16 21:20 /var/tmp Existe um modo numérico alternativo para descrever as permissões     do ficheiro com o chmod(1). Este modo numérico utiliza 3 ou 4 dígitos em numeração octal (radix=8). Tabela 1.5. O modo numérico para permissões de ficheiros em comandos chmod(1) +---------------------------------------------------------------+ |digito |significado | |-----------+---------------------------------------------------| |1º digito |soma de set user ID (=4), set group ID (=2), e | |opcional |sticky bit (=1) |     |-----------+---------------------------------------------------| |2º digito |soma das permissões leitura (=4), escrita (=2), e | | |executável (=1) para o utilizador | |-----------+---------------------------------------------------| |3º digito |idem para grupo | |-----------+---------------------------------------------------| |4º digito |idem para outros | +---------------------------------------------------------------+ Isto parece complicado mas na verdade é bastante simples. Se observar as primeiras colunas (2-10) do resultado do comando "ls -l" e lê-las como uma representação binária (radix=2) das     permissões do ficheiros ("-" sendo "0" e "rwx" sendo "1"), os últimos três dígitos do valor de modo numérico para si deverão fazer sentido como uma representação octal (radix=8) das permissões do ficheiro.     Por exemplo, tente o seguinte: $ touch foo bar $ chmod u=rw,go=r foo     $ chmod 644 bar $ ls -l foo bar -rw-r--r-- 1 penguin penguin 0 Oct 16 21:39 bar -rw-r--r-- 1 penguin penguin 0 Oct 16 21:35 foo Dica     Se necessitar aceder a informação mostrada por "ls -l" num script da shell, você deve utilizar comandos pertinentes como test(1), stat(1) e readlink(1). Os comandos da própria shell como "[" ou "test" também podem ser utilizados. 1.2.4. Controlo de permissões para ficheiros acabados de criar: umask As permissões que são aplicadas ao criar ficheiros e directórios     novos é restringida pelo comando embutido da shell umask. Veja dash(1), bash(1), e builtins(7).     (permissões de ficheiros) = (permissões de ficheiros pedidas) & ~(valor umask) Tabela 1.6. Exemplos do valor umask +---------------------------------------------------------------+ |umask|permissões do |permissões do |utilização | | |ficheiro criadas|directório criadas| | |-----+----------------+------------------+---------------------|     | | | |apenas pode ser | |0022 |-rw-r--r-- |-rwxr-xr-x |escrito pelo | | | | |utilizador | |-----+----------------+------------------+---------------------| |0002 |-rw-rw-r-- |-rwxrwxr-x |pode ser escrito pelo| | | | |grupo | +---------------------------------------------------------------+ The Debian system uses a user private group (UPG) scheme as its default. A UPG is created whenever a new user is added to the system. A UPG has the same name as the user for which it was     created and that user is the only member of the UPG. UPG scheme makes it safe to set umask to 0002 since every user has their own private group. (In some Unix variants, it is quite common to setup all normal users belonging to a single users group and is a good idea to set umask to 0022 for security in such cases.) Dica     Active UPG ao colocar "umask 002" no ficheiro ~/.bashrc. 1.2.5. Permissões para grupos de utilizadores (group) In order to make group permissions to be applied to a particular user, that user needs to be made a member of the group using     "sudo vigr" for /etc/group and "sudo vigr -s" for /etc/gshadow. You need to login after logout (or run "exec newgrp") to enable the new group configuration. Nota Em alternativa, pode adicionar dinamicamente utilizadores aos     grupos durante o processo de autenticação ao adicionar a linha "auth optional pam_group.so" a "/etc/pam.d/common-auth" e configurar "/etc/security/group.conf". (Veja Capítulo 4, Autenticação.) Os dispositivos de hardware são apenas outro tipo de ficheiros no     sistema Debian. Se tiver problemas a aceder a dispositivos como o CD-ROM e memórias USB a partir de uma conta de utilizador, você deve tornar esse utilizador um membro do grupo relevante. Alguns grupos notáveis disponibilizados pelo sistema permitem aos     seus membros aceder a ficheiros e dispositivos particulares sem privilégios de root. Tabela 1.7. Lista de grupos notáveis disponibilizados pelo sistema para acesso a ficheiros +---------------------------------------------------------------+ |grupo |descrição para ficheiros e dispositivos acessíveis | |-------+-------------------------------------------------------| |dialout|acesso completo e directo a portas série ("/dev/ttyS | | |[0-3]") | |-------+-------------------------------------------------------| |dip |Acesso limitado a portas série para ligação Dialup IP a| | |peers de confiança | |-------+-------------------------------------------------------|     |cdrom |drives CD-ROM, DVD+/-RW | |-------+-------------------------------------------------------| |audio |dispositivo de áudio | |-------+-------------------------------------------------------| |video |dispositivo de vídeo | |-------+-------------------------------------------------------| |scanner|scanner(s) | |-------+-------------------------------------------------------| |adm |logs (relatórios) de monitorização do sistema | |-------+-------------------------------------------------------| |staff |alguns directórios para trabalho administrativo júnior:| | |"/usr/local", "/home" | +---------------------------------------------------------------+ Dica Você necessita pertencer ao grupo dialout para reconfigurar o     modem, ligar para qualquer lado, etc. Mas se o root criar ficheiros de configuração pré-definidos para peers de confiança em "/etc/ppp/peers/", você apenas precisa de pertencer ao grupo dip para criar uma ligação Dialup IP para esses peers de confiança utilizando os comandos pppd(8), pon(1), e poff(1). Alguns grupos notáveis disponibilizados pelo sistema permitem aos     seus membros executar comandos particulares sem privilégios de root. Tabela 1.8. Lista de grupos notáveis disponibilizados pelo sistema para execuções de comandos particulares +---------------------------------------------------------------+ |grupo |comandos acessíveis |     |-------+-------------------------------------------------------| |sudo |executar sudo sem a sua palavra-passe | |-------+-------------------------------------------------------| |lpadmin|executar comandos para adicionar, modificar e remover | | |impressoras das bases de dados de impressoras | +---------------------------------------------------------------+ Para a listagem completa dos utilizadores e grupos     disponibilizados pelo sistema, veja a versão recente do documento "Utilizadores e Grupos" em "/usr/share/doc/base-passwd/ users-and-groups.html" disponibilizado pelo pacote base-passwd. Para comandos de gestão para o sistema de utilizador e grupo veja     passwd(5), group(5), shadow(5), newgrp(1), vipw(8), vigr(8), e pam_group(8) 1.2.6. Marcas temporais (Timetamps)     Existem três tipos de marcas temporais para um ficheiro de GNU/ Linux. Tabela 1.9. Lista dos tipos de marcas temporais +--------------------------------------------------------+ |tipo |significado | |-----+--------------------------------------------------|     |mtime|a hora de modificação do ficheiro (ls -l) | |-----+--------------------------------------------------| |ctime|a hora de alteração de estado do ficheiro (ls -lc)| |-----+--------------------------------------------------| |atime|a hora do último acesso ao ficheiro (ls -lu) | +--------------------------------------------------------+ Nota     ctime não é o tempo de criação do ficheiro. * Sobrescrever um ficheiro altera todos os atributos mtime, ctime, e atime do ficheiro.     * Alterar o dono ou as permissões de um ficheiro altera os atributos ctime e atime do ficheiro. * Ler um ficheiro altera o atime do ficheiro. Nota Mesmo a simples leitura de um ficheiro no sistema Debian causa normalmente uma operação de escrita no ficheiro para actualizar a     informação atime no inode. Montar um sistema de ficheiros com as opções "noatime" ou "relatime" faz com que o sistema salte esta operação e resulte num acesso mais rápido ao ficheiro para leitura. Isto é geralmente recomendado para portáteis, porque reduz a actividade do disco rígido e poupa energia. Veja mount(8) .     Utilize o comando touch(1) para alterar as marcas temporais de ficheiros existentes.     Para marcas temporais, o comando ls gera diferentes strings sob o locale não-Inglês ("pt_PT.UTF-8") a partir do antigo ("C"). $ LANG=pt_PT.UTF-8 ls -l foo     -rw-rw-r-- 1 penguin penguin 0 oct. 16 21:35 foo $ LANG=C ls -l foo -rw-rw-r-- 1 penguin penguin 0 Oct 16 21:35 foo Dica     Veja Secção 9.2.5, “Amostragem personalizada de hora e data” para personalizar a saída do "ls -l". 1.2.7. Links (ligações)     Existem dois métodos de associar um ficheiro "foo" com um nome de ficheiro diferente "bar". * Hard link (http://en.wikipedia.org/wiki/Hard_link) o Duplicar nome para um ficheiro existente o "ln foo bar"     * Link Simbólico ou symlink (http://en.wikipedia.org/wiki/ Symbolic_link) o Ficheiro especial que aponta para outro ficheiro pelo nome o "ln -s foo bar"     Veja o seguinte exemplo para alterações nas contagens do link e as diferenças subtis nos resultados do comando rm. $ umask 002 $ echo "Conteúdo Original" > foo $ ls -li foo 1449840 -rw-rw-r-- 1 penguin penguin 17 Oct 16 21:42 foo $ ln foo bar # hard link $ ln -s foo baz # symlink $ ls -li foo bar baz 1449840 -rw-rw-r-- 2 penguin penguin 17 Oct 16 21:42 bar 1450180 lrwxrwxrwx 1 penguin penguin 3 Oct 16 21:47 baz -> foo     1449840 -rw-rw-r-- 2 penguin penguin 17 Oct 16 21:42 foo $ rm foo $ echo "Novo Conteúdo" > foo $ ls -li foo bar baz 1449840 -rw-rw-r-- 1 penguin penguin 17 Oct 16 21:42 bar 1450180 lrwxrwxrwx 1 penguin penguin 3 Oct 16 21:47 baz -> foo 1450183 -rw-rw-r-- 1 penguin penguin 12 Oct 16 21:48 foo $ cat bar Conteúdo Original $ cat baz Novo Conteúdo O hardlink pode ser feito dentro do mesmo sistema de ficheiros e     partilhar o mesmo número de inode tal como o ls(1) com a opção "-i" revela. O link simbólico tem sempre permissões nominais de acesso ao     ficheiro "rwxrwxrwx", conforme mostrado no exemplo acima, com as permissões de acesso efectivas ditadas pelas permissões do ficheiro para o qual aponta. Cuidado     It is generally a good idea not to create complicated symbolic links or hardlinks at all unless you have a very good reason. It may cause nightmares where the logical combination of the symbolic links results in loops in the filesystem. Nota     Geralmente é preferível utilizar links simbólicos em vez de hard links, a menos que tenha boas razões para usar um hardlink. O directório "." liga ao directório onde ele aparece, assim a     contagem de link de qualquer novo directório começa em 2. O directório ".." liga ao directório pai, assim a contagem de link do directório aumenta com a adição de novos sub-directórios. Se está a mudar do Windows para Linux, em breve irá ficar claro o quão bem desenhado está a ligação de nomes de ficheiros em Unix, comparada com o equivalente mais próximo em Windows de "atalhos".     Devido a estar implementado no sistema de ficheiros, as aplicações não conseguem ver nenhuma diferença entre o link para um ficheiro e o original. No caso dos hardlinks, não há realmente nenhuma diferença. 1.2.8. Pipes com nome (FIFOs) Um pipe com nome (http://en.wikipedia.org/wiki/Named_pipe) é um ficheiro que age como um pipe. Você coloca algo no ficheiro, e     sai pelo outro lado. Por isso é chamado um FIFO, ou Primeiro-a-Entrar-Primeiro-a-Sair: a primeira coisa que você coloca no pipe é a primeira coisa a sair pelo outro lado. If you write to a named pipe, the process which is writing to the pipe doesn't terminate until the information being written is read from the pipe. If you read from a named pipe, the reading process waits until there is nothing to read before terminating.     The size of the pipe is always zero --- it does not store data, it just links two processes like the functionality offered by the shell "|" syntax. However, since this pipe has a name, the two processes don't have to be on the same command line or even be run by the same user. Pipes were a very influential innovation of Unix.     Por exemplo, tente o seguinte: $ cd; mkfifo mypipe $ echo "hello" >mypipe & # put into background [1] 8022 $ ls -l mypipe prw-rw-r-- 1 penguin penguin 0 Oct 16 21:49 mypipe     $ cat mypipe hello [1]+ Done echo "hello" >mypipe $ ls mypipe mypipe $ rm mypipe 1.2.9. Sockets Os sockets são usados extensivamente por toda a comunicação da Internet, bases de dados, e pelo próprio sistema operativo. São semelhantes a pipes com nome (FIFO) e permitem aos processos trocarem informação mesmo entre computadores diferentes. Para o socket, esses processos não precisam de estar a correr ao mesmo     tempo, nem correrem como filhos do mesmo processo pai. Isto é o destino da comunicação inter-processo (IPC) (http:// en.wikipedia.org/wiki/Inter-process_communication) . A troca de informação pode ocorrer sobre a rede entre máquinas diferentes. Os dois mais comuns são o socket de Internet (http:// en.wikipedia.org/wiki/Internet_socket) e o socket de domínio Unix (http://en.wikipedia.org/wiki/Unix_domain_socket) . Dica     "netstat -an" dá uma visão geral, muito útil, dos sockets que estão abertos num determinado sistema. 1.2.10. Ficheiros de dispositivo Os ficheiros de Dispositivos (http://en.wikipedia.org/wiki/ Device_file) referem-se a dispositivos físicos ou virtuais no seu     sistema, como o seu disco rígido, placa gráfica, monitor ou teclado. Um exemplo de dispositivo virtual é a consola, que é representada por "/dev/console".     Existem 2 tipos de ficheiros de dispositivo * Dispositivo de Caractere o Acedido por um caractere de cada vez o 1 caractere = 1 byte o Ex, teclado, porta série, ...     * Dispositivo de Bloco o acedido em unidades maiores chamadas blocos o 1 bloco > 1 byte o Ex, o disco rígido, ... Você pode ler e escrever nos ficheiros de dispositivo, embora o ficheiro possa muito bem conter dados binários que podem ser uma salada incompreensível para humanos. Escrever dados directamente nestes ficheiros é por vezes útil para diagnosticar problemas com     ligações de hardware. Por exemplo, você pode despejar um ficheiro de texto para um dispositivo de impressora "/dev/lp0" ou enviar comandos de modem para a porta série apropriada "/dev/ttyS0". Mas, a menos que isto seja feito com cuidado, pode causar problemas maiores. Portanto seja cauteloso. Nota     Para o acesso normal a uma impressora, use lp(1).     Os números de nós de dispositivo são mostrados ao executar ls(1) como se segue. $ ls -l /dev/sda /dev/sr0 /dev/ttyS0 /dev/zero brw-rw---T 1 root disk 8, 0 Oct 16 20:57 /dev/sda     brw-rw---T+ 1 root cdrom 11, 0 Oct 16 21:53 /dev/sr0 crw-rw---T 1 root dialout 4, 64 Oct 16 20:57 /dev/ttyS0 crw-rw-rw- 1 root root 1, 5 Oct 16 20:57 /dev/zero * "/dev/sda" has the major device number 8 and the minor device number 0. This is read/write accessible by users belonging to the disk group. * "/dev/sr0" has the major device number 11 and the minor device number 0. This is read/write accessible by users belonging to the cdrom group.     * "/dev/ttyS0" has the major device number 4 and the minor device number 64. This is read/write accessible by users belonging to the dialout group. * "/dev/zero" tem o número 1 no dispositivo maior e o número 5 no número de dispositivo menor. Isto é acessível para leitura /escrita a todos.     No sistema Linux moderno, o sistema de ficheiros sob "/dev/" é povoado automaticamente pelo mecanismo udev(7). 1.2.11. Ficheiros de dispositivos especiais     Existem alguns ficheiros de dispositivos especiais. Tabela 1.10. Lista de ficheiros de dispositivos especiais +---------------------------------------------------------------+ |ficheiro de|acção |descrição da resposta | |dispositivo| | | |-----------+--------+------------------------------------------| |/dev/null |ler |retorna o "caractere de fim-de-ficheiro | | | |(EOF)" | |-----------+--------+------------------------------------------| |/dev/null |escrever|retorna nada (um poço de despejo de dados | | | |sem fundo) | |-----------+--------+------------------------------------------| |/dev/zero |ler |retorna "o caractere \0 (NULO)" (não é o |     | | |mesmo que o número zero em ASCII) | |-----------+--------+------------------------------------------| | | |retorna caracteres aleatórios a partir de | |/dev/random|ler |um verdadeiro gerador de números | | | |aleatórios, entregando entropia real | | | |(lento) | |-----------+--------+------------------------------------------| |/dev/ | |retorna caracteres aleatórios a partir de | |urandom |ler |um gerador de números pseudo-aleatórios | | | |criptograficamente seguros | |-----------+--------+------------------------------------------| |/dev/full |escrever|retorna o erro de disco cheio (ENOSPC) | +---------------------------------------------------------------+ Estes são usados frequentemente em conjunto com o     redireccionamento da shell (veja Secção 1.5.8, “Sequências de comandos típicas e redireccionamento da shell”). 1.2.12. procfs e sysfs Os procfs (http://en.wikipedia.org/wiki/Procfs) e sysfs (http:// en.wikipedia.org/wiki/Sysfs) montados em "/proc" e "/sys" são os     pseudo-sistemas-de-ficheiros e expõem estruturas de dados internas do kernel ao espaço de utilizador. Por outras palavras, estas entradas são virtuais, significando que elas agem como uma janela de conveniência às operações do sistema operativo. O directório "/proc" contém (entre outras coisas) um sub-directório para cada processo em execução no sistema, o qual     tem o nome do ID do processo (PID). Os utilitários do sistema que acedem à informação de processos, como o ps(1), obtêm a sua informação a partir desta estrutura de directórios. The directories under "/proc/sys/" contain an interface to change     certain kernel parameters at run time. (You may do the same through the specialized sysctl(8) command or its preload/ configuration file "/etc/sysctrl.conf".) As pessoas frequentemente assustam-se quando notam num ficheiro em particular - "/proc/kcore" - o qual é geralmente enorme. Isto     é (mais ou menos) uma cópia do conteúdo da memória do seu computador. É usado para depuração do kernel. É um ficheiro virtual que aponta para a memória do computador, portanto não se preocupe com o seu tamanho. The directory under "/sys" contains exported kernel data     structures, their attributes, and their linkages between them. It also contains an interface to change certain kernel parameters at run time. See "proc.txt(.gz)", "sysfs.txt(.gz)" and other related documents     in the Linux kernel documentation ("/usr/share/doc/linux-doc-*/ Documentation/filesystems/*") provided by the linux-doc-* package. 1.2.13. tmpfs Otmpfs (http://en.wikipedia.org/wiki/Tmpfs#Linux) é um sistema de ficheiros temporário o qual mantém todos os ficheiros na memória     virtual (http://en.wikipedia.org/wiki/Virtual_memory) . Os dados de tmpfs na cache de páginas (http://en.wikipedia.org/wiki/ Page_cache) da memória pode ser ir para o espaço swap (http:// en.wikipedia.org/wiki/Paging) no disco, conforme necessário. O directório "/run" é montado como tmpfs no inicio do processo de arranque. Isto habilita a escrita mesmo que o directório "/ esteja montado como apenas-leitura. Esta é a nova localização     para o armazenamento de ficheiros de estado transientes e substitui várias outras localizações descritas na Filesystem Hierarchy Standard (http://en.wikipedia.org/wiki/ Filesystem_Hierarchy_Standard) , versão 2.3: * "/var/run" → "/run"     * "/var/lock" → "/run/lock" * "/dev/shm" → "/run/shm" Veja "tmpfs.txt(.gz)" na documentação do kernel Linux ("/usr/     share/doc/linux-doc-*/Documentation/filesystems/*") disponibilizada pelo pacote linux-doc-*. 1.3. Midnight Commander (MC) Midnight Commander (MC) (http://en.wikipedia.org/wiki/ Midnight_Commander) é um "Canivete Suíço" GNU para a consola     Linux e para outros ambientes de terminal. Isto oferece aos novatos uma experiência de consola movida por menus o que é mais fácil de aprender do que os comandos standard do Unix.     Pode necessitar instalar o pacote Midnight Commander que é intitulado de "mc" com o seguinte:     $ sudo apt-get install mc Utilize o comando mc(1) para explorar o sistema Debian. Esta é a     melhor maneira de aprender. Por favor explore algumas localizações interessantes apenas usando as teclas do cursor e Enter. * "/etc" e os seus sub-directórios * e"/var/log" os seus sub-directórios     * "/usr/share/doc" os seus sub-directórios * "/sbin" e "/bin" 1.3.1. Personalização do MC De modo a fazer o MC mudar o directório de trabalho ao sair e cd     para o directório, eu sugiro modificar o "~/.bashrc" para incluir um script disponibilizado pelo pacote mc.     . /usr/lib/mc/mc.sh Veja mc(1) (sob a opção "-P") para a razão. (Se você não     compreende exactamente o que estou a falar aqui, pode fazer isto mais tarde.) 1.3.2. Iniciar o MC     O MC pode ser iniciado com o seguinte:     $ mc O MC toma conta de operações de ficheiros através do seu menu,     requerendo esforços mínimos do utilizador. Carregue em F1 para obter ajuda. Você pode brincar com o MC apenas com as teclas de cursor e teclas de função. Nota     Em algumas consolas como o gnome-terminal(1), as funções das teclas podem ser roubadas pelo programa de consola. Você pode desactivar estas funcionalidades em "Editar" → "Atalhos do Teclado" para o gnome-terminal. Se encontrar problemas com a codificação de caracteres que     mostram caracteres com lixo, adicionar "-a" à linha de comandos do MC pode ajudar a prevenir problemas.     Se isto não limpar os seus problemas no ecrã com o MC, veja Secção 9.6.6, “A configuração do terminal”. 1.3.3. Gestor de ficheiros no MC O predefinido são dois painéis de directórios que contêm listas de ficheiros. Outro modo útil é definir a janela da direita para "informação" para ver informações de privilégios de acesso a     ficheiros, etc. De seguida existem algumas teclas de atalho essenciais. Com o daemon gpm(8) em execução, também se pode usar um rato em consolas de caracteres no Linux. (Certifique-se que carrega na tecla shift para obter o comportamento normal de cortar e colar no MC.) Tabela 1.11. As teclas de atalho do MC +---------------------------------------------------------------+ |tecla |tecla de atalho | |-----------+---------------------------------------------------| |F1 |menu de ajuda | |-----------+---------------------------------------------------| |F3 |visualizador interno de ficheiros | |-----------+---------------------------------------------------| |F4 |editor interno | |-----------+---------------------------------------------------| |F9 |activar o menu de desenrolar | |-----------+---------------------------------------------------|     |F10 |sair do Midnight Commander | |-----------+---------------------------------------------------| |Tab |mover entre duas janelas | |-----------+---------------------------------------------------| |Insert ou |marcar o ficheiro para uma operação de múltiplos | |Ctrl-T |ficheiros como uma cópia | |-----------+---------------------------------------------------| |Del |apagar o ficheiro (tenha cuidado -- configure o MC | | |para modo de apagar seguro) | |-----------+---------------------------------------------------| |Teclas do |auto-explicativo | |cursor | | +---------------------------------------------------------------+ 1.3.4. Truques de linha de comandos no MC * O comando cd altera o directório mostrado no ecrã seleccionado. * Ctrl-Enter ou Alt-Enter copia um nome de ficheiro para a linha de comandos. Utilize isto com os comandos cp(1) e mv(1) em conjunto com a edição de linha de comandos. * Alt-Tab mostra escolhas de expansão de nomes de ficheiros da shell.     * Pode-se especificar os directórios de inicio para ambas janelas como argumentos ao MC; por exemplo, "mc /etc /root". * Esc + n-key → Fn (i.e., Esc + 1 → F1, etc.; Esc + 0 → F10) * Carregar em Esc antes da tecla tem o mesmo efeito que carregar em Alt e na tecla em conjunto; isto é, carregar em Esc + c para Alt-C. Esc é chamada uma meta-tecla e por vezes mencionada como "M-". 1.3.5. O editor interno em MC O editor interno tem um esquema de cortar-e-colar interessante. Pressionar F3 marca o inicio da selecção, um segundo F3 marca o final da selecção e destaca a selecção. Depois você pode mover o     cursor. Se pressionar F6, a área seleccionada é movida para a localização do cursor. Se pressionar F5, a área seleccionada é copiada e inserida na localização do cursor. F2 salva o ficheiro. F10 fá-lo sair. A maioria das teclas do cursor funcionam de modo intuitivo.     Este editor pode ser iniciado directamente num ficheiro usando um dos seguintes comandos.     $ mc -e ficheiro_a_editar     $ mcedit ficheiro_a_editar Este não é um editor de várias janelas, mas podem-se utilizar várias consolas de Linux para se conseguir o mesmo efeito. Para     copiar entre janelas, utilize as teclas Alt-F para mudar entre consolas virtuais utilize "Ficheiro→Inserir ficheiro" ou "Ficheiro→Copiar para ficheiro" para mover uma porção de um ficheiro para outro ficheiro.     Este editor interno pode ser substituído por qualquer editor externo à escolha. Além disso, muitos programas utilizam as variáveis de ambiente "$EDITOR" ou "$VISUAL" para decidir que editor utilizar. Se você     não está confortável com o vim(1) ou com o nano(1), você pode definir para o "mcedit" adicionando as seguintes linhas ao "~ /.bashrc".     export EDITOR=mcedit export VISUAL=mcedit     Eu recomendo definir isto para "vim" se possível. Se você não está confortável com o vim(1), pode continuar a     utilizar o mcedit(1) para a maioria das tarefas de manutenção do sistema. 1.3.6. O visualizador interno no MC MC é um visualizador muito inteligente. Esta é uma grande ferramenta para procurar palavras em documentos. Eu uso sempre     isto para ficheiros no directório "/usr/share/doc". Esta é a maneira mais rápida para navegar por entre grandes quantidadede informação de Linux. Este visualizador pode ser iniciado directamente usando um dos seguintes comandos:     $ mc -v caminho/para/nome_de_ficheiro_a_visualizar     $ mcview caminho/para/nome_de_ficheiro_a_visualizar 1.3.7. Funcionalidades de auto-arranque do MC Carregue em Enter num ficheiro, e o programa apropriado lida com     o conteúdo do ficheiro (veja Secção 9.5.11, “Personalizar o programa a ser iniciado”). Esta é uma funcionalidade muito conveniente do MC. Tabela 1.12. A reacção à tecla enter no MC +---------------------------------------------------------------+ |tipo de ficheiro |reacção à tecla enter | |-----------------------+---------------------------------------| |ficheiro executável |executa comando | |-----------------------+---------------------------------------|     |ficheiro man |canaliza o conteúdo para software de | | |visualização | |-----------------------+---------------------------------------| |ficheiro html |canaliza o conteúdo para explorador web| |-----------------------+---------------------------------------| |ficheiros "*.tar.gz" e |explora o seu conteúdo como sendo um | |"*.deb" |sub-directório | +---------------------------------------------------------------+ De modo a permitir esta visualização e funcionalidades de     ficheiros virtuais , os ficheiros a visualizar não devem ser definidos como executáveis. Mude o seu estado com o chmod(1) ou via menu ficheiro do MC. 1.3.8. Sistema de ficheiros virtual FTP no MC O MC pode ser utilizado para aceder a ficheiros pela Internet usando FTP. Vá ao menu pressionando F9, e depois escreva "p" para     activar o sistema de ficheiros virtual FTP. Insira um URL no formato "nome-de-utilizador:palavra-passe@nome-de-máquina.nome-de-domínio", o que obtém um directório remoto que aparece como se fosse local.     Tente "[http.us.debian.org/debian]" como URL e explore o arquivo Debian. 1.4. O ambiente de trabalho estilo Unix básico Apesar do MC lhe permitir fazer quase tudo, é muito importante     aprender a utilizar as ferramentas de linha de comandos invocadas a partir da prompt da shell e familiarizar-se com o ambiente de trabalho do tipo Unix. 1.4.1. A shell de login     Você pode seleccionar a sua shell de login com chsh(1). Tabela 1.13. Lista de programas da shell +-------------------------------------------------------------------------------------+ | | | |Shell| | |pacote |popcon |tamanho |do |descrição | | | | |POSIX| | |-------------------+-------------+----------------------+-----+----------------------| | |V:868, I:999 | | |Bash (http:// | |bash (http:// |(http:// |3942 (http:// | |en.wikipedia.org/wiki/| |packages.debian.org|qa.debian.org|packages.qa.debian.org|Sim |Bash) : a GNU Bourne | |/sid/bash) |/popcon.php? |/b/bash.html) | |Again SHell (o | | |package=bash)| | |standard de facto) | |-------------------+-------------+----------------------+-----+----------------------| | | | | |Shell TENEX C (http://| | |V:26, I:98 | | |en.wikipedia.org/wiki/| |tcsh (http:// |(http:// |1378 (http:// | |Tcsh) : uma versão | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Não |melhorada de Berkeley | |/sid/tcsh) |/popcon.php? |/t/tcsh.html) | |csh (http:// | | |package=tcsh)| | |en.wikipedia.org/wiki/| | | | | |C_shell) | |-------------------+-------------+----------------------+-----+----------------------| | |V:826, I:906 | | |Shell Almquist (http:/| |dash (http:// |(http:// |212 (http:// | |/en.wikipedia.org/wiki| |packages.debian.org|qa.debian.org|packages.qa.debian.org|Sim |/Almquist_shell) , bom| |/sid/dash) |/popcon.php? |/d/dash.html) | |para scripts da shell | | |package=dash)| | | | |-------------------+-------------+----------------------+-----+----------------------| | |V:30, I:68 | | |Z shell (http:// | |zsh (http:// |(http:// |1836 (http:// | |en.wikipedia.org/wiki/| |packages.debian.org|qa.debian.org|packages.qa.debian.org|Sim |Z_shell) : a shell | |/sid/zsh) |/popcon.php? |/z/zsh.html) | |standard com muitas | | |package=zsh) | | |melhorias | |-------------------+-------------+----------------------+-----+----------------------| | |V:1, I:13 | | |versão de domínio | |pdksh (http:// |(http:// |44 (http:// | |público da Korn shell | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Sim |(http:// | |/sid/pdksh) |/popcon.php? |/p/pdksh.html) | |en.wikipedia.org/wiki/| | |package= | | |Korn_shell) |     | |pdksh) | | | | |-------------------+-------------+----------------------+-----+----------------------| | | | | |OpenBSD (http:// | | |V:4, I:16 | | |en.wikipedia.org/wiki/| |csh (http:// |(http:// |340 (http:// | |OpenBSD) shell C, uma | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Não |versão do Berkeley csh| |/sid/csh) |/popcon.php? |/c/csh.html) | |(http:// | | |package=csh) | | |en.wikipedia.org/wiki/| | | | | |C_shell) | |-------------------+-------------+----------------------+-----+----------------------| | | | | |shell Stand-alone | | |V:1, I:8 | | |(http:// | |sash (http:// |(http:// |946 (http:// | |en.wikipedia.org/wiki/| |packages.debian.org|qa.debian.org|packages.qa.debian.org|Sim |Stand-alone_shell) com| |/sid/sash) |/popcon.php? |/s/sash.html) | |comandos embutidos | | |package=sash)| | |(Não se destina a "/ | | | | | |bin/sh" standard) | |-------------------+-------------+----------------------+-----+----------------------| | |V:5, I:27 | | |a real, versão AT&T da| |ksh (http:// |(http:// |3145 (http:// | |Korn shell (http:// | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Sim |en.wikipedia.org/wiki/| |/sid/ksh) |/popcon.php? |/k/ksh.html) | |Korn_shell) | | |package=ksh) | | | | |-------------------+-------------+----------------------+-----+----------------------| | | | | |implementação da rc | | |V:0, I:9 | | |shell (http:// | |rc (http:// |(http:// |169 (http:// | |en.wikipedia.org/wiki/| |packages.debian.org|qa.debian.org|packages.qa.debian.org|Não |Rc) sw AT&T Plan 9 | |/sid/rc) |/popcon.php? |/r/rc.html) | |(http:// | | |package=rc) | | |en.wikipedia.org/wiki/| | | | | |Plan_9_from_Bell_Labs)| |-------------------+-------------+----------------------+-----+----------------------| | |V:0, I:0 | | | | |posh (http:// |(http:// |201 (http:// | |Policy-compliant | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Sim |Ordinary SHell (deriva| |/sid/posh) |/popcon.php? |/p/posh.html) | |da pdksh) | | |package=posh)| | | | +-------------------------------------------------------------------------------------+ Dica     Although POSIX-like shells share the basic syntax, they can differ in behavior for things as basic as shell variables and glob expansions. Please check their documentation for details.     Neste capítulo do tutorial, a shell interactiva significa sempre bash. 1.4.2. Personalizar bash     Você pode personalizar o comportamento da bash(1) em "~/.bashrc".     Por exemplo, tente o seguinte. # CD upon exiting MC . /usr/lib/mc/mc.sh # set CDPATH to a good one CDPATH=.:/usr/share/doc:~:~/Desktop:~ export CDPATH     PATH="${PATH}":/usr/sbin:/sbin # set PATH so it includes user's private bin if it exists if [ -d ~/bin ] ; then PATH=~/bin:"${PATH}" fi export PATH EDITOR=vim export EDITOR Dica     Pode encontrar mais dicas de personalização da bash, como os Secção 9.2.7, “Comandos coloridos”, em Capítulo 9, Dicas do sistema. 1.4.3. Teclas especiais No ambiente do tipo Unix (http://en.wikipedia.org/wiki/Unix-like) , existem algumas combinações de teclas que têm significados     especiais. Por favor note que numa consola de caracteres normal do Linux, apenas as teclas Ctrl e Alt do lado esquerdo funcionam como se espera. Aqui estão algumas combinações de teclas notáveis para lembrar. Tabela 1.14. Lista de teclas de atalho para bash +---------------------------------------------------------------+ |tecla |descrição do atalho da tecla | |------------------------+--------------------------------------| |Ctrl-U |apagar a linha antes do cursor | |------------------------+--------------------------------------| |Ctrl-H |apagar um caractere antes do cursor | |------------------------+--------------------------------------| |Ctrl-D |termina a entrada (sai da shell se | | |estiver a usar uma shell) | |------------------------+--------------------------------------| |Ctrl-C |termina um programa em funcionamento | |------------------------+--------------------------------------| |Ctrl-Z |pára temporariamente o programa ao | | |movê-lo para segundo plano | |------------------------+--------------------------------------| |Ctrl-S |pára a saída para o ecrã | |------------------------+--------------------------------------| |Ctrl-Q |reactiva a saída para o ecrã |     |------------------------+--------------------------------------| |Ctrl-Alt-Del |reinicia/pára o sistema, veja inittab | | |(5) | |------------------------+--------------------------------------| |Left-Alt-key |meta-tecla para o Emacs e a UI | |(opcionalmente, |semelhante | |tecla-do-Windows) | | |------------------------+--------------------------------------| |Seta-para-cima |inicia a busca no histórico de | | |comandos em bash | |------------------------+--------------------------------------| |Ctrl-R |inicia o histórico de comandos | | |incremental em bash | |------------------------+--------------------------------------| |Tab |completa a entrada do nome de ficheiro| | |para a linha de comandos em bash | |------------------------+--------------------------------------| |Ctrl-V Tab |entrada Tab sem expansão para a linha | | |de comandos em bash | +---------------------------------------------------------------+ Dica     A funcionalidade do terminal de Ctrl-S pode ser desactivada usando stty(1). 1.4.4. Operações do rato ao estilo Unix     As operações do rato ao estilo Unix são baseadas num sistema de rato de 3 botões. Tabela 1.15. Lista de operações de rato ao estilo Unix +---------------------------------------------------------------+ |acção |resposta | |--------------------------+------------------------------------| |Clique-esquerdo-e-arrastar|seleccionar e copiar para a área de | |do rato |transferência | |--------------------------+------------------------------------|     |Clique-esquerdo |selecciona o início da selecção | |--------------------------+------------------------------------| |Clique-direito |selecciona o fim da selecção e copia| | |para a área de transferência | |--------------------------+------------------------------------| |Clique-central |cola a área de transferência no | | |cursor | +---------------------------------------------------------------+ A roda central nos modernos ratos de roda é considerada o botão central do rato e pode ser usada como terceiro botão ou     clique-central. Clicar nos botões esquerdo e direito ao mesmo tempo serve como clique-central em situações de sistema de rato de 2 botões. De modo a usar o rato em consolas de caracteres de Linux, você necessita ter o daemon gpm(8) a correr. 1.4.5. O pager The less(1) command is the enhanced pager (file content browser). It reads the file specified by its command argument or its standard input. Hit "h" if you need help while browsing with the     less command. It can do much more than more(1) and can be supercharged by executing "eval $(lesspipe)" or "eval $(lessfile) " in the shell startup script. See more in "/usr/share/doc/lessf/ LESSOPEN". The "-R" option allows raw character output and enables ANSI color escape sequences. See less(1). 1.4.6. O editor de texto Você deve tornar-se conhecedor de uma das variantes dos programas     Vim (http://en.wikipedia.org/wiki/Vim_(text_editor)) ou Emacs (http://en.wikipedia.org/wiki/Emacs) que são populares em sistemas tipo Unix. Eu acho que habituar-se aos comandos do Vim é a coisa certa a fazer, pois o editor Vim está sempre presente no mundo Linux/     Unix. (Na verdade, o vi original ou o novo nvi são programas que vai encontrar em todo o lado. Eu escolho o Vim para novatos porque é bastante semelhante e mais poderoso já que lhe oferece ajuda através da tecla F1 .) Por sua vez você pode escolher o Emacs (http://en.wikipedia.org/ wiki/Emacs) ou o XEmacs (http://en.wikipedia.org/wiki/XEmacs) como o seu editor favorito, essa é realmente uma outra boa escolha, particularmente para programação. O Emacs tem também um leque de outras funcionalidades, incluindo funcionar como um leitor de news, editor de directório, programa de mail, etc.     Quando é usado para programação ou edição de scripts de shell, é inteligente para reconhecer o formato daquilo em que você está a trabalhar, e tenta disponibilizar assistência. Algumas pessoas afirmam que o único programa que necessitam em Linux é o Emacs. 10 minutos a aprender Emacs agora pode poupar-lhe horas mais tarde. Ter o manual do Emacs GNU para referência quando se aprende Emacs é altamente recomendado. Todos estes programas vêm normalmente com um programa tutor para que você aprenda a usá-los pela prática. Arranque o Vim ao     escrever "vim" e carregue an tecla F1. Você deverá ler pelo menos as primeiras 35 linhas. Depois faça o curso de treino online ao mover o cursor para "|tutor|" e pressionar Ctrl-]. Nota Good editors, such as Vim and Emacs, can handle UTF-8 and other     exotic encoding texts correctly. It is a good idea to use the X environment in the UTF-8 locale and to install required programs and fonts to it. Editors have options to set the file encoding independent of the X environment. Please refer to their documentation on multibyte text. 1.4.7. Definir um editor de texto predefinido     Debian vem com um número de editores diferentes. Nós recomendamos instalar o pacote vim, como mencionado anteriormente. Debian disponibiliza acesso unificado ao editor predefinido do     sistema através do comando "/usr/bin/editor" para que outros programas (p.e., reportbug(1)) possam invocá-lo. Você pode alterá-lo com o seguinte:     $ sudo update-alternatives --config editor A escolha de "/usr/bin/vim.basic" em vez de "/usr/bin/vim.tiny" é     uma recomendação minha para novatos pois suporta destaque de sintaxe. Dica Many programs use the environment variables "$EDITOR" or     "$VISUAL" to decide which editor to use (see Secção 1.3.5, “O editor interno em MC” and Secção 9.5.11, “Personalizar o programa a ser iniciado”). For the consistency on the Debian system, set these to "/usr/bin/editor". (Historically, "$EDITOR" was "ed" and "$VISUAL" was "vi".) 1.4.8. Personalizar o vim     Você pode personalizar o comportamento do vim(1) em "~/.vimrc".     Por exemplo, tente o seguinte: " ------------------------------- " Local configuration " set nocompatible set nopaste set pastetoggle= syn on if $USER == "root"     set nomodeline set noswapfile else set modeline set swapfile endif " filler to avoid the line above being recognized as a modeline " filler " filler 1.4.9. Gravar as actividades da shell The output of the shell command may roll off your screen and may     be lost forever. It is a good practice to log shell activities into the file for you to review them later. This kind of record is essential when you perform any system administration tasks.     O método básico de gravar a actividade da shell é corrê-la sob script(1).     Por exemplo, tente o seguinte:     $ script Script iniciado, ficheiro é typescript     Faz quaisquer comandos de shell sob script.     Carregue em Ctrl-D para terminar o script.     $ vim typescript     Veja Secção 9.2.3, “Gravar as actividades da shell de modo limpo” . 1.4.10. Comandos básicos de Unix Vamos aprender comandos básicos do Unix. Aqui Eu uso "Unix" no seu sentido genérico. Geralmente qualquer SO clone do Unix oferece comandos equivalentes. O sistema Debian não é excepção.     Não se preocupe se alguns comandos não funcionarem como deseja por agora. Se for utilizado alias na shell, as saídas dos comandos correspondentes serão diferentes. Estes exemplos não se destinam a ser executados por esta ordem.     Tente os seguintes comandos a partir da conta de utilizador não-privilegiado. Tabela 1.16. lista dos comandos Unix básicos +---------------------------------------------------------------+ |comando |descrição | |-----------------+---------------------------------------------| |pwd |mostrar o nome do directório actual | |-----------------+---------------------------------------------| |whoami |mostrar o nome do utilizador actual | |-----------------+---------------------------------------------| |id |mostrar a identidade do utilizador actual | | |(nome, uid, gid, e grupos associados) | |-----------------+---------------------------------------------| |file |mostrar o tipo de ficheiro para o ficheiro " | | |" | |-----------------+---------------------------------------------| |type -p |mostrar a localização de um ficheiro do | ||comando "" | |-----------------+---------------------------------------------| |which |, , | || | |-----------------+---------------------------------------------| |type |mostrar informação do comando " | ||" | |-----------------+---------------------------------------------| |apropos |mostrar comandos relacionados com a " | | |" | |-----------------+---------------------------------------------| |man -k |, , | | | | |-----------------+---------------------------------------------| |whatis |mostrar a explicação de uma linha para o | ||comando "" | |-----------------+---------------------------------------------| |man -a |mostrar a explicação do comando " | ||" (estilo Unix) | |-----------------+---------------------------------------------| |info |mostrar uma explicação longa do comando " | ||" (estilo GNU) | |-----------------+---------------------------------------------| |ls |listar o conteúdo do directório (ficheiros e | | |directórios não escondidos) | |-----------------+---------------------------------------------| |ls -a |listar o conteúdo do directório (todos os | | |ficheiros e directórios) | |-----------------+---------------------------------------------| | |listar o conteúdo do directório (quase todos | |ls -A |os ficheiros e directórios, isto é, salta o | | |".." e ".") | |-----------------+---------------------------------------------| |ls -la |listar todo o conteúdo do directório com | | |informação detalhada | |-----------------+---------------------------------------------| |ls -lai |listar todo o conteúdo do directório com | | |número de inode e informação detalhada | |-----------------+---------------------------------------------| |ls -d |listar todos os directórios sob o directório | | |actual | |-----------------+---------------------------------------------| |tree |mostrar o conteúdo da árvore de ficheiros | |-----------------+---------------------------------------------| |lsof |listar o estado aberto do ficheiro "" | |-----------------+---------------------------------------------| |lsof -p |listar ficheiros abertos pelo processo de ID:| | |"" | |-----------------+---------------------------------------------| |mkdir |criar um novo directório "" no | | |directório actual | |-----------------+---------------------------------------------| |rmdir |remover um directório "" no directório | | |actual | |-----------------+---------------------------------------------| | |mudar o directório para o directório "" | |cd |no directório actual ou no directório listado| | |na variável "$CDPATH" | |-----------------+---------------------------------------------| |cd / |mudar o directório para o directório raiz | |-----------------+---------------------------------------------| |cd |mudar para o directório home do utilizador | | |actual | |-----------------+---------------------------------------------| |cd / |mudar para o directório de caminho absoluto "| | |/" | |-----------------+---------------------------------------------| |cd .. |mudar para o directório pai | |-----------------+---------------------------------------------| |cd ~ |mudar para o directório home do utilizador " | | |" | |-----------------+---------------------------------------------| |cd - |mudar para o directório anterior | |-----------------+---------------------------------------------| | |criar um ficheiro vazio "" | |-----------------+---------------------------------------------| |cp |copiar um ficheiro "" existente para um | | |novo ficheiro "" | |-----------------+---------------------------------------------| |rm |remover um ficheiro "" | |-----------------+---------------------------------------------| | |renomear um ficheiro "" existente para | |mv |um novo nome "" ("" não pode | | |existir) | |-----------------+---------------------------------------------| | |mover um ficheiro "" existente para uma | |mv |nova localização /" (o directório "| | |" tem de existir) |     |-----------------+---------------------------------------------| | |mover um ficheiro existente "" para uma | |mv / |nova localização com um novo nome "/ | | |" (o directório "" tem de existir | | |mas o directório "/" não pode | | |existir) | |-----------------+---------------------------------------------| | |tornar um ficheiro existente "" proibido| |chmod 600 |de ser lido e ser escrito por outras pessoas | | |(não executável para todos) | |-----------------+---------------------------------------------| | |tornar um ficheiro existente "" | |chmod 644 |permissível de ser lido mas proibido de ser | | |escrito por outras pessoas (não executável | | |para todos) | |-----------------+---------------------------------------------| | |tornar um ficheiro existente "" | |chmod 755 |permissível de ser lido mas proibido de ser | | |escrito por outras pessoas (executável para | | |todos) | |-----------------+---------------------------------------------| |find . -name |procurar nomes de ficheiros correspondentes | | |usando um "" de shell (lento) | |-----------------+---------------------------------------------| |locate -d . |procurar nomes de ficheiros correspondentes | | |usando um "" de shell (mais rápido | | |usando uma base de dados gerada regularmente)| |-----------------+---------------------------------------------| |grep -e "|find a "" in all files ending with | |" *.html |".html" in current directory and display them| | |all | |-----------------+---------------------------------------------| |top |mostrar informação de processos usando ecrã | | |completo, carregue em "q" para sair | |-----------------+---------------------------------------------| |ps aux | pager |mostrar informação dos processos a correr | | |usando saída ao estilo BSD | |-----------------+---------------------------------------------| |ps -ef | pager |mostrar informação dos processos a correr | | |usando saída ao estilo Unix system-V | |-----------------+---------------------------------------------| |ps aux | grep -e |mostrar todos os processos que correm "exim" | |"[e]xim4*" |e "exim4" | |-----------------+---------------------------------------------| |ps axf | pager |mostrar a informação de todos os processos a | | |correr com saída em arte de ACSII | |-----------------+---------------------------------------------| |kill <1234> |matar todos os processos identificados pelo | | |ID de processo: "<1234>" | |-----------------+---------------------------------------------| |gzip |comprimir "" para criar ".gz" | | |usando a codificação Lempel-Ziv (LZ77) | |-----------------+---------------------------------------------| |gunzip .gz |descomprimir ".gz" para criar "" | |-----------------+---------------------------------------------| | |comprimir "" para criar ".bz2" | | |usando o algoritmo de compressão de texto | |bzip2 |organizado em blocos Burrows-Wheeler, e | | |codificação Huffman (melhor compressão que | | |gzip) | |-----------------+---------------------------------------------| |bunzip2 .bz2|descomprimir ".bz2" para criar "" | |-----------------+---------------------------------------------| | |comprimir "" para criar ".xz" | |xz |usando o algoritmo de cadeia | | |Lempel–Ziv–Markov (melhor compressão que | | |bzip2) | |-----------------+---------------------------------------------| |unxz .xz |descomprimir ".xz" para criar "" | |-----------------+---------------------------------------------| |tar -xvf |extrair ficheiros do arquivo ".tar" | |.tar | | |-----------------+---------------------------------------------| |tar -xvzf |extrair ficheiros do arquivo gzipado " | |.tar.gz |.tar.gz" | |-----------------+---------------------------------------------| |tar -xvjf |extrair ficheiros do arquivo ".tar.bz2" | |.tar.bz2 | | |-----------------+---------------------------------------------| |tar -xvJf |extrair ficheiros do arquivo ".tar.xz" | |.tar.xz | | |-----------------+---------------------------------------------| |tar -cvf |arquivar o conteúdo da pasta "/" no | |.tar / |arquivo ".tar" | |-----------------+---------------------------------------------| |tar -cvzf |arquivar o conteúdo da pasta "/" no | |.tar.gz |arquivo comprimido ".tar.gz" | |/ | | |-----------------+---------------------------------------------| |tar -cvjf |arquivar o conteúdo da pasta "/" no | |.tar.bz2 |arquivo ".tar.bz2" | |/ | | |-----------------+---------------------------------------------| |tar -cvJf |arquivar o conteúdo da pasta "/" no | |.tar.xz |arquivo ".tar.xz" | |/ | | |-----------------+---------------------------------------------| |zcat README.gz | |mostrar o conteúdo do "README.gz" comprimido | |pager |usando o paginador predefinido | |-----------------+---------------------------------------------| |zcat README.gz > |criar o ficheiro "foo" com o conteúdo | |foo |descomprimido de "README.gz" | |-----------------+---------------------------------------------| |zcat README.gz >>|acrescentar o conteúdo descomprimido de | |foo |"README.gz" ao final do ficheiro "foo" (se | | |ele não existir, é primeiro criado) | +---------------------------------------------------------------+ Nota     Unix tem a tradição de esconder os nomes de ficheiros que começam por ".". Eles são tradicionalmente ficheiros que contêm informação de configuração e preferências do utilizador. Nota     Para o comando cd, veja builtins(7). Nota O paginador predefinido da vastidão do sistema Debian é o more(1)     , o qual não pode deslocar para trás. A instalar o pacote less usando o comando "apt-get install less", o less(1) torna-se o paginador predefinido e você pode deslocar para trás com as teclas do cursor. Nota O "[" e "]" na expressão regular do comando "ps aux | grep -e " [e]xim4*"" em cima activam grep para evitar a correspondência     consigo próprio. O "4*" na expressão regular significa 0 ou mais repetições do caractere "4" assim activa o grep a corresponder a ambos "exim" e "exim4". Apesar de "*" ser usado no glob de nome de ficheiro da shell e na expressão regular, os seus significados são diferentes. Aprenda a expressão regular a partir do grep(1). Por favor percorra os directórios e espreite no sistema usando os     comandos em cima como treino. Se você tiver questões sobre qualquer comando de consola, por favor certifique-se de ler o manual dele.     Por exemplo, tente o seguinte: $ man man $ man bash     $ man builtins $ man grep $ man ls Pode ser um pouco difícil de habituar-se ao estilo dos manuais,     porque são bastante concisos, particularmente os mais antigos, muito tradicionais. Mas assim que se habituar a eles, vai apreciar a sua brevidade. Por favor note que muitos comandos do tipo Unix incluindo os GNU     e BSD mostram informação breve de ajuda se os invocar numa das seguintes formas (ou sem argumentos nalguns casos).     $ --help $ -h 1.5. O comando simples da shell Agora você tem alguma prática de como utilizar o sistema Debian.     Vamos ver mais fundo no mecanismo da execução de comandos no sistema Debian. Aqui, eu simplifiiquei a realidade para o novato. Veja bash(1) para a explicação exacta.     Um comando simples é uma sequência de componentes. 1. Atribuições de variáveis (opcional) 2. Nome do comando     3. Argumentos (opcional) 4. Re-direcções (opcional: > , >> , < , << , etc.) 5. Operador de controle (opcional: && , || , , ; , & , ( , ) ) 1.5.1. Execução do comando e variável de ambiente The values of some environment variables (http://en.wikipedia.org     /wiki/Environment_variable) change the behavior of some Unix commands. Os valores predefinidos das variáveis de ambiente são definidos     inicialmente pelo sistema PAM e depois alguns deles podem ser redefinidos por alguns programas. * O gestor de ecrã como o gdm3 redefine variáveis de ambiente     * A shell nos seus códigos de arranque redefine variáveis de ambiente em "~/bash_profile" e "~/.bashrc". 1.5.2. The "$LANG" variable     O valor completo do locale dado à variável "$LANG" consiste em 3 partes: "xx_YY.ZZZZ". Tabela 1.17. The 3 parts of locale value +---------------------------------------------------------------+ |valor |significado | |locale | | |-------+-------------------------------------------------------| |xx |códigos de idioma ISO 639 (minúsculas) como em "en" |     | |(http://en.wikipedia.org/wiki/ISO_639) | |-------+-------------------------------------------------------| |YY |códigos de idioma ISO 3166 (maiúsculas) como em "US" | | |(http://en.wikipedia.org/wiki/ISO_3166-3) | |-------+-------------------------------------------------------| |ZZZZ |conjunto de codificação, definido sempre como "UTF-8" | | |(http://en.wikipedia.org/wiki/Codeset) | +---------------------------------------------------------------+     Para códigos de idioma e códigos de países, veja a informação pertinente em "info gettext". Para o conjunto de codificação no sistema Debian moderno, você     deverá sempre defini-lo para UTF-8 a menos que queira especificamente usar o histórico tendo boas razões e conhecimentos para o fazer.     Para mais detalhes sobre configuração do locale, veja Secção 8.3, “O locale”. Nota     O "LANG=en_US" não é "LANG=C" nem "LANG=en_US.UTF-8". É "LANG= en_US.ISO-8859-1" (veja Secção 8.3.1, “Bases de codificação”). Tabela 1.18. Lista de recomendações de locale +-------------------------------------------------+ |recomendação de locale|Idioma (área) | |----------------------+--------------------------| |en_US.UTF-8 |English (USA) | |----------------------+--------------------------| |en_GB.UTF-8 |English (Great Britain) | |----------------------+--------------------------| |fr_FR.UTF-8 |French (France) | |----------------------+--------------------------| |de_DE.UTF-8 |German (Germany) | |----------------------+--------------------------| |it_IT.UTF-8 |Italian (Italy) | |----------------------+--------------------------| |es_ES.UTF-8 |Spanish (Spain) | |----------------------+--------------------------|     |ca_ES.UTF-8 |Catalan (Spain) | |----------------------+--------------------------| |sv_SE.UTF-8 |Swedish (Sweden) | |----------------------+--------------------------| |pt_BR.UTF-8 |Portuguese (Brazil) | |----------------------+--------------------------| |ru_RU.UTF-8 |Russian (Russia) | |----------------------+--------------------------| |zh_CN.UTF-8 |Chinese (P.R. of China) | |----------------------+--------------------------| |zh_TW.UTF-8 |Chinese (Taiwan R.O.C.) | |----------------------+--------------------------| |ja_JP.UTF-8 |Japanese (Japan) | |----------------------+--------------------------| |ko_KR.UTF-8 |Korean (Republic of Korea)| |----------------------+--------------------------| |vi_VN.UTF-8 |Vietnamese (Vietnam) | +-------------------------------------------------+     A execução de comando típica utiliza uma sequência de linha de shell como o seguinte. $ date     Sun Jun 3 10:27:39 JST 2007 $ LANG=fr_FR.UTF-8 date dimanche 3 juin 2007, 10:27:33 (UTC+0900)     Aqui, o programa date(1) é executado com diferentes valores da variável de ambiente "$LANG". * Para o primeiro comando, "$LANG" é definida para o valor locale (http://en.wikipedia.org/wiki/Locale) predefinido do sistema "en_US.UTF-8".     * Para o segundo comando, "$LANG" é definida para o valor locale (http://en.wikipedia.org/wiki/Locale) UTF-8 Francês "fr_FR.UTF-8". A maioria das execuções de comandos geralmente não têm definições     de variáveis de ambiente precedentes. Para o exemplo acima, você pode executar em alternativa o seguinte: $ LANG=fr_FR.UTF-8     $ date dimanche 3 juin 2007, 10:27:33 (UTC+0900) Como pode ver aqui, o resultado do comando é afectado pela variável de ambiente para produzir a saída em Francês. Se desejar     que a variável de ambiente seja hereditária aos sub-processos (p.e. quando chama um script de shell), então necessita de exportá-la com o seguinte.     $ export LANG Nota     When you use a typical console terminal, the "$LANG" environment variable is usually set to be exported by the desktop environment. So the above is not really a good example to test the effect of export. Dica     When filing a bug report, running and checking the command under "LANG=en_US.UTF-8" is a good idea if you use non-English environment.     Veja locale(5) e locale(7) para "$LANG" e variáveis de ambiente relacionadas. Nota     Eu recomendo configurar o ambiente do sistema apenas pela variável "$LANG" e não mexer em variáveis "$LC_*" a menos que seja absolutamente necessário. 1.5.3. The "$PATH" variable Quando você escreve um comando na shell, a shell procura o     comando na lista de directórios contida na variável de ambiente "$PATH". O valor da variável de ambiente "$PATH" também é chamado o caminho de procura da shell. Na instalação Debian, por omissão, a variável de ambiente "$PATH" das contas de utilizadores pode não incluir "/sbin" nem "/usr/     sbin". Por exemplo, o comando ifconfig necessita ser chamado com o caminho completo como "/sbin/ifconfig". (De modo idêntico, o comando ip está localizado em "/bin".)     Pode alterar a variável de ambiente "$PATH" da shell Bash pelos ficheiros "~/.bash_profile" ou "~/.bashrc". 1.5.4. The "$HOME" variable Muitos comandos armazenam configuração específica do utilizador     no directório home, do utilizador, e mudam o seu comportamento de acordo com o seu conteúdo. O directório de utilizador é identificado pela variável de ambiente "$HOME". Tabela 1.19. Lista de valores "$HOME" +---------------------------------------------------------------+ |valor de "$HOME" |situação de execução do programa | |-------------------+-------------------------------------------| |/ |programa executado pelo processo de init | | |(daemon) | |-------------------+-------------------------------------------| |/root |programa executado a partir da shell de | | |root normal | |-------------------+-------------------------------------------|     |/home/ |programa executado a partir da shell de | ||utilizador normal | |-------------------+-------------------------------------------| |/home/ |programa executado a partir menu do | ||ambiente GUI do utilizador normal | |-------------------+-------------------------------------------| |/home/ |programa executado como root com o | ||"programa sudo" | |-------------------+-------------------------------------------| |/root |programa executado como root com o | | |"programa sudo -H" | +---------------------------------------------------------------+ Dica     A shell expande "~/" para o directório home do utilizador actual, isto é, "$HOME/". A shell expande "~foo/" para o directório home de foo, isto é, "/home/foo/". 1.5.5. Opções da linha de comandos Alguns comandos recebem argumentos. Os argumentos que começam com     um "-" ou "--" são chamados opções e controlam o comportamento do comando. $ date     Mon Oct 27 23:02:09 CET 2003 $ date -R Mon, 27 Oct 2003 23:02:40 +0100 Aqui o argumento de linha de comandos "-R" altera o comportamento     de date(1) para gerar uma string da data compatível com RFC2822 (http://tools.ietf.org/html/rfc2822) . 1.5.6. Glob da shell Frequentemente deseja trabalhar com um conjunto de ficheiros sem     os digitar a todos. O padrão de expansão do nome de ficheiro utilizando a glob da shell , (por vezes referida como wildcards), facilita esta necessidade. Tabela 1.20. Padrões glob da shell +---------------------------------------------------------------+ |padrão glob|descrição de regra de correspondência | |da shell | | |-----------+---------------------------------------------------| |* |nome de ficheiro (segmento) não iniciado por "." | |-----------+---------------------------------------------------| |.* |nome de ficheiro (segmento) iniciado por "." | |-----------+---------------------------------------------------|     |? |exactamente um caractere | |-----------+---------------------------------------------------| |[…] |exactamente um caractere com qualquer caractere | | |envolvido em colchetes | |-----------+---------------------------------------------------| |[a-z] |exactamente um caractere com qualquer caractere | | |entre "a" e "z" | |-----------+---------------------------------------------------| |[^…] |exactamente um caractere que não seja qualquer | | |caractere envolvido em colchetes (excluindo "^") | +---------------------------------------------------------------+     Por exemplo, tente o seguinte: $ mkdir junk; cd junk; touch 1.txt 2.txt 3.c 4.h .5.txt ..6.txt $ echo *.txt 1.txt 2.txt $ echo * 1.txt 2.txt 3.c 4.h $ echo *.[hc]     3.c 4.h $ echo .* . .. .5.txt ..6.txt $ echo .*[^.]* .5.txt ..6.txt $ echo [^1-3]* 4.h $ cd ..; rm -rf junk     Veja glob(7). Nota     Ao contrário da expansão de nome de ficheiro da shell, o padrão de shell "*" testado em find(1) com o teste "-name" etc., corresponde ao "." inicial do nome de ficheiro. (Nova funcionalidade POSIX (http://en.wikipedia.org/wiki/POSIX) ) Nota     BASH can be tweaked to change its glob behavior with its shopt builtin options such as "dotglob", "noglob", "nocaseglob", "nullglob", "extglob", etc. See bash(1). 1.5.7. Valor de retorno do comando     Cada comando retorna o seu estado de saída (variável: "$?") como o valor de retorno. Tabela 1.21. Códigos de saída do comando +---------------------------------------------------------------+ |estado de saída do |valor de retorno |valor de retorno | |comando |numérico |lógico |     |---------------------+---------------------+-------------------| |sucesso |zero, 0 |TRUE | |---------------------+---------------------+-------------------| |erro |não-zero, -1 |FALSE | +---------------------------------------------------------------+     Por exemplo, tente o seguinte. $ [ 1 = 1 ] ; echo $?     0 $ [ 1 = 2 ] ; echo $? 1 Nota     Por favor note que, no contexto lógico da shell, sucesso é tratado como o VERDADEIRO lógico o qual tem 0 (zero) como valor. De certa maneira isto não é intuitivo e necessita ser lembrado aqui. 1.5.8. Sequências de comandos típicas e redireccionamento da shell     Vamos tentar lembrar os seguintes idiomas de comando de shell escritos numa linha como parte de um comando de shell. Tabela 1.22. Idiomas de comandos de shell +---------------------------------------------------------------+ |idioma do |descrição | |comando | | |-----------+---------------------------------------------------| |comando & |execução em segundo plano do comando na sub-shell | |-----------+---------------------------------------------------| |comando1 | |liga em pipe a saída standard do comando1 à entrada| |comando2 |standard do comando2 (execução concorrente) | |-----------+---------------------------------------------------| |comando1 2>|liga em pipe a saídas standard e o erro standard do| |&1 | |comando1 à entrada standard do comando2 (execução | |comando2 |concorrente) | |-----------+---------------------------------------------------| |comando1 ; |executa o comando1 e o comando2 sequencialmente | |comando2 | | |-----------+---------------------------------------------------| |comando1 &&|executa o comando1; se tiver sucesso, executa o | |comando2 |comando2 sequencialmente (retorna sucesso se ambos | | |comando1 e comando2 tiverem sucesso) | |-----------+---------------------------------------------------| |comando1 |||executa o comando1; se não tiver sucesso, executa o| |comando2 |comando2 sequencialmente (retorna sucesso se o | | |comando1 ou o comando2 tiverem sucesso. | |-----------+---------------------------------------------------|     |comando > |redirecciona a saída standard do comando para o | |foo |ficheiro foo (sobrescreve) | |-----------+---------------------------------------------------| |comando 2> |redirecciona o erro standard do comando para o | |foo |ficheiro foo (sobrescreve) | |-----------+---------------------------------------------------| |comando >> |redirecciona a saída standard do comando para o | |foo |ficheiro foo (acrescenta) | |-----------+---------------------------------------------------| |comando 2>>|redirecciona o erro standard do comando para o | |foo |ficheiro foo (acrescenta) | |-----------+---------------------------------------------------| |comando > |redirect both standard output and standard error of| |foo 2>&1 |command to a file foo | |-----------+---------------------------------------------------| |comando < |redirecciona a entrada standard do comando para o | |foo |ficheiro foo | |-----------+---------------------------------------------------| |comando << |redirecciona a entrada standard do comando para as | |delimitador|seguintes linhas até que o "delimitador" seja | | |atingido (documentar aqui) | |-----------+---------------------------------------------------| | |redirecciona a entrada standard do comando para as | |comando <<-|seguintes linhas até que o "delimitador" seja | |delimitador|atingido (aqui documento, os caracteres tab de | | |inicio são retirados das linhas de entrada) | +---------------------------------------------------------------+ O sistema Debian é um sistema de multi-tarefa. Os trabalhos em segundo plano permitem aos utilizadores correrem vários programas     numa única shell. A gestão dos processos em segundo plano envolve os embutidos da shell: jobs, fg, bg, e kill. Por favor leia as secções de bash(1) sob "SINAIS", "CONTROLE DE TAREFAS", e builtins(1).     Por exemplo, tente o seguinte:     $ foo $ exec 3bar # abrir ficheiros     $ cat <&3 >&4 # redireccionar stdin para 3, stdout para 4 $ exec 3<&- 4>&- # fechar ficheiros $ cat bar Hello     O descritores de ficheiro 0-2 são predefinidos. Tabela 1.23. Descritores de ficheiro predefinido +--------------------------------------------------+ |dispositivo|descrição |descritor de ficheiro| |-----------+----------------+---------------------|     |stdin |entrada standard|0 | |-----------+----------------+---------------------| |stdout |saída standard |1 | |-----------+----------------+---------------------| |stderr |erro standard |2 | +--------------------------------------------------+ 1.5.9. Comando alias     Você pode definir um nome alternativo (alias) para um comando frequentemente utilizado.     Por exemplo, tente o seguinte:     $ alias la='ls -la'     Agora, "la" funciona como atalho para "ls -la" o que lista todos os ficheiros no formato de lista longa.     Você pode listar quaisquer nomes alternativos existentes com o alias (veja bash(1) sob "COMANDOS EMBUTIDOS NA SHELL"). $ alias     ... alias la='ls -la'     Você pode identificar o caminho exacto ou a identidade do comando com type (veja bash(1) sob "COMANDOS EMBUTIDOS DA SHELL").     Por exemplo, tente o seguinte: $ type ls ls is hashed (/bin/ls) $ type la     la is aliased to ls -la $ type echo echo is a shell builtin $ type file file is /usr/bin/file Aqui o ls foi procurado recentemente enquanto o "file" não foi,     assim o "ls" tem "hash", isto é, a shell tem um registo interno para o acesso rápido à localização do comando "ls". Dica     Veja Secção 9.2.7, “Comandos coloridos”. 1.6. Processamento de texto estilo Unix Em ambientes de trabalho tipo Unix, o processamento de texto é     feito ao canalizar texto por cadeias de ferramentas standard de processamento de texto. Esta foi outra inovação crucial do Unix. 1.6.1. Ferramentas de texto de Unix     Existem algumas ferramentas standard de processamento de texto que são muito usadas nos sistemas tipo Unix. * Não é utilizada nenhuma expressão regular: o cat(1) concatena ficheiros e escreve o conteúdo inteiro. o tac(1) concatena ficheiros e escreve-os em reverso. o cut(1) selecciona partes de linhas e escreve-as. o head(1) escreve a parte inicial de ficheiros. o tail(1) escreve a parte final de ficheiros. o sort(1) organiza as linhas de ficheiros de texto. o uniq(1) remove linhas duplicadas de um ficheiro organizado. o tr(1) traduz ou apaga caracteres. o diff(1) compara ficheiros linha a linha. * É utilizada uma expressão regular básica (BRE): o grep(1) faz coincidir texto com padrões. o ed(1) é um editor de linhas primitivo.     o sed(1) é um editor de streams. o vim(1) é um editor de ecrã. o emacs(1) é um editor de écran. (BRE de certo modo extensa) * É utilizada uma expressão regular extensa (ERE): o egrep(1) faz coincidir texto com padrões. o awk(1) faz processamento de texto simples. o tcl(3tcl) can do every conceivable text processing: See re_syntax(3). Often used with tk(3tk). o perl(1) can do every conceivable text processing. See perlre(1). o pcregrep(1) do pacote pcregrep corresponde texto com padrões Perl Compatible Regular Expressions (PCRE) (http: //en.wikipedia.org/wiki/ Perl_Compatible_Regular_Expressions) . o python(1) com o módulo re pode fazer todo o processamento de texto concebível. Veja "/usr/share/doc/python/html/ index.html".     Se você não tiver a certeza do que estes comandos fazem, por favor utilize "man comando" para descobri-lo por si. Nota     Sort order and range expression are locale dependent. If you wish to obtain traditional behavior for a command, use C locale instead of UTF-8 ones by prepending command with "LANG=C" (see Secção 1.5.2, “The "$LANG" variable” and Secção 8.3, “O locale”). Nota As expressões regulares Perl (http://en.wikipedia.org/wiki/Perl)     (perlre(1)), Perl Compatible Regular Expressions (PCRE) (http:// en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) , e expressões regulares Python (http://en.wikipedia.org/wiki/Python_ (programming_language)) oferecidas pelo módulo re têm muitas extensões comuns ao ERE normal. 1.6.2. Expressões regulares As expressões regulares (http://en.wikipedia.org/wiki/     Regular_expression) são utilizadas em muitas ferramentas de processamento de texto. São análogas aos "globs" da shell, mas são mais complicadas e poderosas.     A expressão regular descreve o padrão de correspondência e é feita de caracteres de texto e de meta-caracteres. A metacharacter is just a character with a special meaning. There     are 2 major styles, BRE and ERE, depending on the text tools as described above. Tabela 1.24. Meta-caracteres para BRE e ERE +---------------------------------------------------------------+ |BRE |ERE |descrição da expressão regular | |--------+------+-----------------------------------------------| |\ . [ ] |\ . [ | | |^ $ * |] ^ $ |meta-caracteres comuns | | |* | | |--------+------+-----------------------------------------------| |\+ \? \(| | | |\) \{ \}|  |BRE apenas meta-caracteres 'escapados' "\" | |\| | | | |--------+------+-----------------------------------------------| | |+ ? ( | | |  |) { } |ERE apenas meta-caracteres não 'escapados' "\" | | || | | |--------+------+-----------------------------------------------| |c |c |corresponde a não-meta-caractere "c" | |--------+------+-----------------------------------------------| |\c |\c |corresponde a um caractere literal "c" mesmo se| | | |"c" é um meta-caractere por si só | |--------+------+-----------------------------------------------| |. |. |corresponde a qualquer caractere incluindo nova| | | |linha | |--------+------+-----------------------------------------------| |^ |^ |posição no início de uma string | |--------+------+-----------------------------------------------|     |$ |$ |posição no fim de uma string | |--------+------+-----------------------------------------------| |\< |\< |posição no início de uma palavra | |--------+------+-----------------------------------------------| |\> |\> |posição no final de uma palavra | |--------+------+-----------------------------------------------| |[abc…] |[abc…]|corresponde a quaisquer caracteres em "abc…" | |--------+------+-----------------------------------------------| |[^abc…] |[^ |corresponde a quaisquer caracteres excepto em | | |abc…] |"abc…" | |--------+------+-----------------------------------------------| |r* |r* |corresponde a zero ou mais expressões regulares| | | |identificadas por "r" | |--------+------+-----------------------------------------------| |r\+ |r+ |corresponde a uma ou mais expressões regulares | | | |identificadas por "r" | |--------+------+-----------------------------------------------| |r\? |r? |corresponde a zero ou uma expressão regular | | | |identificada por "r" | |--------+------+-----------------------------------------------| |r1\|r2 |r1|r2 |corresponde a uma das expressões regulares | | | |identificadas por "r1" ou "r2" | |--------+------+-----------------------------------------------| |\(r1\|r2|(r1| |corresponde a uma das expressões regulares | |\) |r2) |identificadas por "r1" ou "r2" e trata-as como | | | |uma expressão regular entre colchetes | +---------------------------------------------------------------+ A expressão regular do emacs é basicamente BRE mas foi estendida     para tratar "+" e "?" como meta-caracteres como em ERE. Assim, não há necessidade de os 'escapar' com "\" na expressão regular do emacs.     grep(1) pode ser utilizado para executar a pesquisa de texto com expressão regular.     Por exemplo, tente o seguinte: $ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL     GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE Yoyodyne, Inc., hereby disclaims all copyright interest in the program Dica     Veja Secção 9.2.7, “Comandos coloridos”. 1.6.3. Expressões de substituição     Para a expressão de substituição, alguns caracteres têm significados especiais. Tabela 1.25. A expressão de substituição +---------------------------------------------------------------+ |expressão de |descrição do texto para substituir a expressão | |substituição |de substituição | |---------------+-----------------------------------------------|     |& |que expressão regular corresponde (use \& no | | |emacs) | |---------------+-----------------------------------------------| |\n |que n º entre colchetes da expressão regular | | |correspondeu (sendo "n" um número) | +---------------------------------------------------------------+     Para string de substituição de Perl, é utilizado "$n" em vez de " \n" e "&" não tem nenhum significado especial.     Por exemplo, tente o seguinte: $ echo zzz1abc2efg3hij4 | \ sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/' zzz=1abc2efg3hij4= $ echo zzz1abc2efg3hij4 | \ sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/\2===\1/'     zzzefg3hij4===1abc $ echo zzz1abc2efg3hij4 | \ perl -pe 's/(1[a-z]*)[0-9]*(.*)$/$2===$1/' zzzefg3hij4===1abc $ echo zzz1abc2efg3hij4 | \ perl -pe 's/(1[a-z]*)[0-9]*(.*)$/=&=/' zzz=&= Aqui por favor preste atenção extra ao estilo da expressão     regular entre colchetes e como as strings correspondentes são utilizadas no processo de substituição de texto nas diferentes ferramentas. Estas expressões regulares também podem ser utilizadas para     movimentos do cursor e acções de substituição de texto em alguns editores. A barra descendente "\" no fim da linha na linha de comandos da     shell 'escapa' a nova linha como um caractere de espaço em branco e continua a entrada na linha de comandos da shell na próxima linha.     Por favor leia todos os manuais relacionados para aprender estes comandos. 1.6.4. Substituição global com expressões regulares     O comando ed(1) pode substituir todas as instâncias de "FROM_REGEX" por "TO_TEXT" em "file". $ ed file <, , e combinados. Tenha cuidado ao usar estes truques IFS da shell. Podem acontecer     coisas estranhas, quando a shell interpreta partes do script como a sua entrada. $ IFS=":," # usa ":" e "," como IFS $ echo IFS=$IFS, IFS="$IFS" # echo é embutido no Bash IFS= , IFS=:, $ date -R # apenas o resultado do comando     Sat, 23 Aug 2003 08:30:15 +0200 $ echo $(date -R) # sub shell --> entrada para a shell principal Sat 23 Aug 2003 08 30 36 +0200 $ unset IFS # reset IFS para o predefinido $ echo $(date -R) Sat, 23 Aug 2003 08:30:50 +0200 1.6.6. Trechos de script para canalizar comandos em pipe     Os seguintes scripts fazem coisas bonitas como parte de um pipe. Tabela 1.26. Lista de trechos de script para canalizar comandos em pipe +---------------------------------------------------------------+ |trecho de script |efeito do comando | |(escrito numa linha) | | |---------------------+-----------------------------------------| |find /usr -print |encontra todos os sob "/usr" | |---------------------+-----------------------------------------| |seq 1 100 |escreve 1 até 100 | |---------------------+-----------------------------------------| || xargs -n 1 |corre o comando repetidamente com cada | | |item do pipe como seu argumento | |---------------------+-----------------------------------------| || xargs -n 1 echo |divide itens separados por espaços do | | |pipe em linhas | |---------------------+-----------------------------------------| || xargs echo |junta todas as linhas do pipe numa linha | |---------------------+-----------------------------------------| || grep -e |extrai as linhas do pipe que contêm o | | | | |---------------------+-----------------------------------------| || grep -v -e |extrai as linhas do pipe que não contêm o| | | | |---------------------+-----------------------------------------| || cut -d: -f3 - |extrai do pipe o terceiro campo separado | | |por ":" (ficheiro passwd etc.) | |---------------------+-----------------------------------------|     || awk '{ print $3 }' |extrai do pipe o terceiro campo separado | | |por espaços | |---------------------+-----------------------------------------| || awk -F'\t' '{ print|extrai do pipe o terceiro campo separado | |$3 }' |por tab | |---------------------+-----------------------------------------| || col -bx |remove os backspace e expande as tabs | | |para espaços | |---------------------+-----------------------------------------| || expand - |expande separadores | |---------------------+-----------------------------------------| || sort| uniq |organiza e remove duplicados | |---------------------+-----------------------------------------| || tr 'A-Z' 'a-z' |converte maiúsculas para minúsculas | |---------------------+-----------------------------------------| || tr -d '\n' |concatena linhas em uma linha | |---------------------+-----------------------------------------| || tr -d '\r' |remove CR | |---------------------+-----------------------------------------| || sed 's/^/# /' |adiciona "#" ao inicio de cada linha | |---------------------+-----------------------------------------| || sed 's/\.ext//g' |remove ".ext" | |---------------------+-----------------------------------------| || sed -n -e 2p |escreve a segunda linha | |---------------------+-----------------------------------------| || head -n 2 - |escreve as primeiras duas linhas | |---------------------+-----------------------------------------| || tail -n 2 - |escreve as últimas duas linhas | +---------------------------------------------------------------+ A one-line shell script can loop over many files using find(1)     and xargs(1) to perform quite complicated tasks. See Secção 10.1.5, “Idiomas para a selecção de ficheiros” and Secção 9.5.9, “Repetindo um ciclo de comandos sobre ficheiros”. Quando a utilização dos modos interactivos da shell se torna     muito complicada, por favor considere escrever um script de shell (veja Secção 12.1, “O script de shell”). Capítulo 2. Gestão de pacotes Debian Nota     Este capítulo é escrito assumindo que o lançamento estável mais recente tem o nome de código: squeeze. Debian (http://www.debian.org) é uma organização voluntária que     constrói distribuições consistentes de pacotes binários pré-compilados de software livre e distribui-os a partir do seu arquivo. O arquivo Debian (http://ftp.us.debian.org/debian/) é oferecido     por muitos sites mirror remotos (http://www.debian.org/mirror/) para acesso através de métodos HTTP e FTP. Também está disponível em CD-ROM/DVD (http://www.debian.org/CD/) . O sistema de gestão de pacotes Debian, quando utilizado de modo apropriado, oferece ao utilizador o instalar de conjuntos     consistentes de pacotes binários no sistema a partir do arquivo. Actualmente, existem 40514 pacotes disponíveis para a arquitectura amd64. O sistema de gestão de pacotes Debian tem um histórico rico e     muitas opções de escolha para o programa cliente do utilizador e de método de acesso ao arquivo. Actualmente, recomendamos o seguintei: * apt-get(8) para todas as operações de linha de comandos, incluindo a instalação e remoção de pacotes, e dist-upgrade. * aptitude(8) para uma interface de texto interactiva para     gerir os pacotes instalados e procurar os pacotes disponíveis. * update-manager(8) para manter o seu sistema actualizado se você estiver a correr o ambiente de trabalho GNOME. Tabela 2.1. Lista de ferramentas de gestão de pacotes Debian +----------------------------------------------------------------------------------------+ |pacote |popcon |tamanho |descrição | |--------------------+--------------------+-------------------------+--------------------| | | | |Advanced Packaging | | | | |Tool (APT), | | | | |front-end para o | |apt (http:// |V:862, I:999 (http:/|3447 (http:// |dpkg que | |packages.debian.org/|/qa.debian.org/ |packages.qa.debian.org/a/|disponibiliza os | |sid/apt) |popcon.php?package= |apt.html) |métodos "http", | | |apt) | |"ftp", e "file" para| | | | |acesso a arquivos | | | | |(comandos apt-get/ | | | | |apt-cache incluídos)| |--------------------+--------------------+-------------------------+--------------------| |aptitude (http:// |V:228, I:990 (http:/|4541 (http:// |Gestor de pacotes | |packages.debian.org/|/qa.debian.org/ |packages.qa.debian.org/a/|baseado em terminal | |sid/aptitude) |popcon.php?package= |aptitude.html) |interactivo com | | |aptitude) | |aptitude(8) | |--------------------+--------------------+-------------------------+--------------------| | |V:54, I:963 (http://| |tool for selecting | |tasksel (http:// |qa.debian.org/ |714 (http:// |tasks for | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/t/|installation on the | |sid/tasksel) |tasksel) |tasksel.html) |Debian system | | | | |(front-end for APT) | |--------------------+--------------------+-------------------------+--------------------| |unattended-upgrades | | |pacote de melhoria | |(http:// |V:56, I:454 (http://|312 (http:// |para o APT para | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/u/|activar a instalação| |sid/ |popcon.php?package= |unattended-upgrades.html)|automática de | |unattended-upgrades)|unattended-upgrades)| |actualizações de | | | | |segurança | |--------------------+--------------------+-------------------------+--------------------| | | | |gestor de pacotes | | |V:10, I:89 (http:// | |baseado em terminal | |dselect (http:// |qa.debian.org/ |2516 (http:// |(foi o standard | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/d/|anterior, frontend | |sid/dselect) |dselect) |dselect.html) |para o APT e outros |     | | | |métodos de acesso | | | | |antigos) | |--------------------+--------------------+-------------------------+--------------------| |dpkg (http:// |V:919, I:999 (http:/|6427 (http:// | | |packages.debian.org/|/qa.debian.org/ |packages.qa.debian.org/d/|sistema de gestão de| |sid/dpkg) |popcon.php?package= |dpkg.html) |pacotes para Debian | | |dpkg) | | | |--------------------+--------------------+-------------------------+--------------------| |synaptic (http:// |V:108, I:457 (http:/|7632 (http:// |gestor de pacotes | |packages.debian.org/|/qa.debian.org/ |packages.qa.debian.org/s/|gráfico (frontend do| |sid/synaptic) |popcon.php?package= |synaptic.html) |GNOME para o APT) | | |synaptic) | | | |--------------------+--------------------+-------------------------+--------------------| | | | |Programas | |apt-utils (http:// |V:409, I:997 (http:/|1362 (http:// |utilitários do APT: | |packages.debian.org/|/qa.debian.org/ |packages.qa.debian.org/a/|apt-extracttemplates| |sid/apt-utils) |popcon.php?package= |apt-utils.html) |(1), apt-ftparchive | | |apt-utils) | |(1), e apt-sortpkgs | | | | |(1) | |--------------------+--------------------+-------------------------+--------------------| |apt-listchanges |V:356, I:734 (http:/|203 (http:// |ferramenta de | |(http:// |/qa.debian.org/ |packages.qa.debian.org/a/|notificação do | |packages.debian.org/|popcon.php?package= |apt-listchanges.html) |histórico de | |sid/apt-listchanges)|apt-listchanges) | |alterações do pacote| |--------------------+--------------------+-------------------------+--------------------| |apt-listbugs (http:/|V:10, I:16 (http:// |443 (http:// |lista bugs críticos | |/packages.debian.org|qa.debian.org/ |packages.qa.debian.org/a/|antes de cada | |/sid/apt-listbugs) |popcon.php?package= |apt-listbugs.html) |instalação do APT | | |apt-listbugs) | | | |--------------------+--------------------+-------------------------+--------------------| |apt-file (http:// |V:20, I:92 (http:// |69 (http:// |Utilitário de busca | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/a/|de pacotes do APT - | |sid/apt-file) |popcon.php?package= |apt-file.html) |interface de linha | | |apt-file) | |de comandos | |--------------------+--------------------+-------------------------+--------------------| |apt-rdepends (http:/|V:1, I:8 (http:// |64 (http:// |lista recursivamente| |/packages.debian.org|qa.debian.org/ |packages.qa.debian.org/a/|dependências de | |/sid/apt-rdepends) |popcon.php?package= |apt-rdepends.html) |pacotes | | |apt-rdepends) | | | +----------------------------------------------------------------------------------------+ 2.1. Pré-requisitos da gestão de pacotes Debian 2.1.1. Configuração de pacotes     Aqui estão alguns pontos chave para a configuração de pacotes no sistema Debian. * A configuração manual feita pelo administrador do sistema é respeitada. Por outras palavras, o sistema de configuração de pacotes não faz configurações intrusivas por conveniência. * Cada pacote vem com o seu próprio script de configuração com a interface de utilizador standard chamada debconf(7) para ajudar no processo inicial de instalação do pacote. * Os Programadores do Debian dão o seu melhor para tornar a sua experiência de actualização isenta de falhas com scripts de configuração de pacotes.     * As funcionalidades totais do software empacotado estão disponíveis ao administrador do sistema. Mas aquelas com riscos de segurança estão desactivadas na instalação predefinida. * Se você activou manualmente um serviço com alguns riscos de segurança você é o responsável pelo confinamento de risco. * Esoteric configuration may be manually enabled by the system administrator. This may create interferences with popular generic helper programs for the system configuration. 2.1.2. Precauções básicas Atenção Não instale pacotes de misturas aleatórias de suites.     Provavelmente vai quebrar a consistência do pacote o que requer conhecimentos profundos de gestão do sistema tais como ABI (http: //en.wikipedia.org/wiki/Application_binary_interface) compilador, versão de biblioteca (http://en.wikipedia.org/wiki/Library_ (computing)) , funcionalidades do interpretador, etc. O administrador novato (http://en.wikipedia.org/wiki/Newbie) de sistemas Debian deve manter-se com o lançamento stable de Debian     e aplicar apenas as actualizações de segurança. Eu quero dizer que é melhor evitar algumas das seguintes acções válidas, como uma precaução, até que você compreenda muito bem o sistema Debian. Aqui ficam algumas lembranças. * Não inclua testing ou unstable em "/etc/apt/sources.list". * Não misture Debian standard com outros arquivos que não sejam Debian, como o Ubuntu em "/etc/apt/sources.list". * Não crie "/etc/apt/preferences". * Não altere o comportamento predefinido das ferramentas de gestão de pacotes através de ficheiros de configuração sem conhecer os seus impactos totais.     * Não instale pacotes aleatórios com "dpkg -i ". * Nunca instale pacotes aleatórios com "dpkg --force-all -i ". * Não apague ou altere os ficheiros em "/var/lib/dpkg/". * Não sobrescreva ficheiros do sistema ao instalar programas compilados a partir do código-fonte. o Instale-os em "/usr/local" ou "/opt", se necessário. Os efeitos não-compatíveis causados ao sistema de gestão de     pacotes de Debian, pelas ações referidas acima, podem deixar o seu sistema inutilizado.     O administrador de sistema Debian sério que corre servidores de missões críticas, deve tomar precauções extra. * Não instale nenhuns pacotes incluindo as actualizações de segurança da Debian sem os testar completamente com as suas configurações particulares sob condições seguras.     o Você como o administrador do sistema é o responsável final pelo seu sistema. o The long stability history of the Debian system is no guarantee by itself. 2.1.3. A vida com actualizações eternas Apesar dos meus avisos em cima, eu sei que muitos leitores deste documento desejam correr as suites testing ou unstable de Debian     como o seu sistema principal para ambientes de trabalho auto-administrados. Isto porque funcionam muito bem, são actualizadas frequentemente, e oferecem as funcionalidades mais recentes. Cuidado     Para o seu servidor de produção, é recomendada a suite stable com as actualizações de segurança. O mesmo pode ser dito para PCs de ambiente de trabalho onde você pode dispor de esforços limitados de administração, p.e. o PC da sua mãe. Não é preciso mais do que simplesmente definir a string da     distribuição em "/etc/apt/sources.list" para o nome de suite: "testing" ou "unstable"; ou o nome de código: "wheezy" ou "sid". Isto fá-lo viver a vida das actualizações eternas. The use of testing or unstable is a lot of fun but comes with some risks. Even though the unstable suite of the Debian system looks very stable for most of the times, there have been some     package problems on the testing and unstable suite of the Debian system and a few of them were not so trivial to resolve. It may be quite painful for you. Sometimes, you may have a broken package or missing functionality for a few weeks.     Aqui estão algumas ideias para assegurar recuperação fácil e rápida de bugs nos pacotes Debian: * Make the system dual bootable by installing the stable suite of the Debian system to another partition * Tenha o CD de instalação 'à mão' para o arranque de recuperação * Considere instalar o apt-listbugs para verificar informação     do Debian Bug Tracking System (BTS) (http://www.debian.org/ Bugs/) antes das actualizações * Conheça o suficiente da infraestrutura do sistema de pacotes para contornar o problema * Crie um chroot ou ambiente semelhante para antecipadamente correr nele o sistema mais recente (veja Secção 9.8, “Sistema virtualizado”) (Se você não conseguir fazer nenhumas destas acções de precaução,     provavelmente não está preparado para as suites testing e unstable.) O Esclarecimento (http://en.wikipedia.org/wiki/Bodhi) com o seguinte salva uma pessoa do karma (http://en.wikipedia.org/wiki/     Karma) da eterna luta do inferno (http://en.wikipedia.org/wiki/ Naraka) das actualizações e permite-lhe alcançar o nirvana (http: //en.wikipedia.org/wiki/Nirvana) de Debian. 2.1.4. Básico do arquivos Debian     Vamos olhar para o arquivo Debian (http://ftp.us.debian.org/ debian/) a partir da perspectiva do utilizador do sistema. Dica     A política oficial do arquivo Debian está definida em Manual de Políticas Debian, Capítulo 2 - O Arquivo Debian (http:// www.debian.org/doc/debian-policy/ch-archive) . Para o típico acesso HTTP, o arquivo está especificado no     ficheiro "/etc/apt/sources.list" como o seguinte exemplo para o sistema stable = squeeze actual. deb http://ftp.XX.debian.org/debian/ squeeze main contrib non-free deb-src http://ftp.XX.debian.org/debian/ squeeze main contrib non-free     deb http://security.debian.org/ squeeze/updates main contrib deb-src http://security.debian.org/ squeeze/updates main contrib Por favor note que "ftp.XX.debian.org" tem de ser substituído com o URL do mirror apropriado para a sua localização, para EUA     "ftp.us.debian.org", o qual pode ser encontrado em a lista de mirrors Debian de todo o mundo (http://www.debian.org/mirror/ list) . O estado destes servidores pode ser verificado no Debian Mirror Checker (http://ftp.de.debian.org/dmc/) . Aqui, eu uso o nome de código "squeeze" em vez do nome de suite     "stable" para evitar surpresas quando a próxima stable for lançada.     O significado de "/etc/apt/sources.list" é descrito em sources.list(5) e os pontos chave são os seguintes: * A linha "deb" define os pacotes binários. * A linha "deb-src" define os pacotes fonte. * O 1º argumento é o URL raiz do arquivo Debian.     * O 2º argumento é o nome da distribuição: seja o nome de suite ou o nome de código. * O 3º argumento e seguintes são a lista de nomes de área de arquivo válidos do arquivo Debian. As linhas "deb-src" pode ser omitidas (ou comentadas ao colocar um "#" no inicio da linha) se for apenas para o aptitude o qual     não acede a meta-dados relacionados com a fonte. Isso acelera as actualizações dos meta-dados do arquivo. O URL pode ser "http:// ", "ftp://", "file://", …. Dica Se for usado "sid" no exemplo em cima em vez de "squeeze", a     linha "deb: http://security.debian.org/ …" para actualizações de segurança em "/etc/apt/sources.list", não é necessária. Isto porque não há arquivo de actualizações de segurança para "sid" (unstable). Aqui está uma lista de URLs de sites de arquivo Debian e nomes     das suites ou nomes de código utilizados no ficheiro de configuração. Tabela 2.2. Lista de sites de arquivos Debian +---------------------------------------------------------------+ |URL do arquivo |nome da suite (nome de |objectivo | | |código) | | |-------------------+-----------------------+-------------------| |http:// | | | |ftp.XX.debian.org/ | |lançamento | |debian/ (http:// |stable (squeeze) |(squeeze) stable | |ftp.us.debian.org/ | | | |debian/) | | | |-------------------+-----------------------+-------------------| |http:// | | | |ftp.XX.debian.org/ | |lançamento (wheezy)| |debian/ (http:// |testing (wheezy) |testing | |ftp.us.debian.org/ | | | |debian/) | | | |-------------------+-----------------------+-------------------| |http:// | | | |ftp.XX.debian.org/ | |lançamento (sid) | |debian/ (http:// |unstable (sid) |unstable | |ftp.us.debian.org/ | | | |debian/) | | | |-------------------+-----------------------+-------------------| |http:// | |pré-lançamento | |ftp.XX.debian.org/ | |experimental | |debian/ (http:// |experimental |(opcional, apenas | |ftp.us.debian.org/ | |para | |debian/) | |desenvolvedores) | |-------------------+-----------------------+-------------------|     |http:// | |Actualizações para | |ftp.XX.debian.org/ | |o próximo | |debian/ (http:// |stable-proposed-updates|lançamento de ponto| |ftp.us.debian.org/ | |estável (opcional) | |debian/) | | | |-------------------+-----------------------+-------------------| |http:// | |actualizações de | |security.debian.org| |segurança para o | |/ (http:// |stable/updates |lançamento stable | |security.debian.org| |(importante) | |/) | | | |-------------------+-----------------------+-------------------| |http:// | |actualizações de | |security.debian.org| |segurança para o | |/ (http:// |testing/updates |lançamento testing | |security.debian.org| |(importante) | |/) | | | |-------------------+-----------------------+-------------------| |http:// | |actualizações | |ftp.XX.debian.org/ | |compatíveis para | |debian/ (http:// |squeeze-updates |filtro de spam, | |ftp.us.debian.org/ | |clientes IM, etc. | |debian/) | |para squeeze | |-------------------+-----------------------+-------------------| |http:// | | | |ftp.XX.debian.org/ | |pacotes backport | |debian/ (http:// |squeeze-backports |mais recentes para | |ftp.us.debian.org/ | |squeeze (opcional) | |debian/) | | | +---------------------------------------------------------------+ Cuidado Apenas o puro lançamento stable com as actualizações de segurança disponibilizam a melhor estabilidade. Correr o lançamento stable misturado com alguns pacotes dos lançamentos testing ou unstable é mais arriscado que correr o lançamento unstable puro devido a     versões erradas de bibliotecas e etc. Se realmente você precisa da versão mais recente de alguns programas sob o lançamento stable, por favor utilize pacotes do squeeze-updates (http:// www.debian.org/News/2011/20110215) e http://backports.debian.org (http://backports.debian.org) (veja os serviços Secção 2.7.4, “Actualizações e Backports”) Estes serviços têm de ser utilizados com cuidados extra. Cuidado Basicamente você deve listar apenas uma das suites stable, testing, ou unstable na linha "deb". Se você listar qualquer     combinação das suites stable, testing, e unstable na linha "deb", os programas do APT abrandam enquanto apenas o arquivo mais recente é efectivo. Faz sentido várias listagens quando o ficheiro "/etc/apt/preferences" é utilizado com objectivos claros (veja Secção 2.7.3, “Moldar a versão candidata”). Dica     Para o sistema Debian com as suites stable e testing, é uma boa ideia incluir linhas com "http://security.debian.org/" em "/etc/ apt/sources.list" para activar as actualizações de segurança como no exemplo em cima. Nota Os bugs de segurança do arquivo stable são corrigidos pela equipa de segurança do Debian. Esta actividade tem sido bastante rigorosa e fidedigna. Os do arquivo testing poderão ser corrigidos pela equipa de segurança de Debian testing. Por várias (http://lists.debian.org/debian-testing-security-announce/2008/12 /msg00019.html) razões (http://lists.debian.org/     debian-testing-security-announce/2008/12/msg00019.html) , esta actividade não é tão rigorosa como a de stable e você pode necessitar de aguardar pela migração de pacotes unstable com as correções. Os pacotes do arquivo unstable são corrigidos pelo maintainer. Os pacotes unstable mantidos activamente estão geralmente em boa forma por conterem as correcções de segurança mais recentes desde a origem. Veja a FAQ de segurança Debian (http://www.debian.org/security/faq) para saber como Debian lida com os bugs de segurança. Tabela 2.3. Lista de área de arquivo Debian +---------------------------------------------------------------+ |área |número de |critério do componente do pacote | | |pacotes | | |--------+------------+-----------------------------------------| |main |39765 |em conformidade com DFSG e nenhuma |     | | |dependência a non-free | |--------+------------+-----------------------------------------| |contrib |246 |em conformidade com DFSG mas com | | | |dependências a non-free | |--------+------------+-----------------------------------------| |non-free|503 |não complacente com DFSG | +---------------------------------------------------------------+ Aqui o número de pacotes em cima é para a arquitectura amd64. A     área main disponiboliza o sistema Debian (veja Secção 2.1.5, “Debian é 100% software livre”). A organização do arquivo Debian pode ser melhor estudada ao     apontar o seu explorador a cada URL de arquivo seguido de dists ou pool. A distribuição é referida de duas maneiras, a suite ou o nome-de-código (http://www.debian.org/doc/manuals/     developers-reference/resources.html#codenames) . A palavra distribuição é usada alternativamente como o sinónimo de suite em muitas documentações. A relação entre a suite e o nome de código pode ser resumida ao seguinte. Tabela 2.4. A relação entre suite e nome de código +---------------------------------------------------------------+ |Tempo |suite = stable |suite = testing|suite = | | | | |unstable | |----------------+----------------+---------------+-------------| |após o |nome de código =|nome de código |nome de |     |lançamento |squeeze |= wheezy |código = sid | |squeeze | | | | |----------------+----------------+---------------+-------------| |após o |nome de código =|nome de código |nome de | |lançamento |wheezy |= jessie |código = sid | |wheezy | | | | +---------------------------------------------------------------+ The history of codenames are described in Debian FAQ: 6.2.1 Which     other codenames have been used in the past? (http:// www.debian.org/doc/manuals/debian-faq/ch-ftparchives# s-oldcodenames) Na terminologia estrita do arquivo Debian, a palavra "seção" é utilizada especialmente para categorizar os pacotes pela área de     aplicação. (Apesar da palavra "seção main" poder por vezes ser utilizada para descrever a área do arquivo Debian com o nome "main".) Every time a new upload is done by a Debian developer (DD) to the unstable archive (via incoming (http://incoming.debian.org/)     processing), the DD is required to ensure uploaded packages to be compatible with the latest set of packages in the latest unstable archive. Se o DD quebrar esta compatibilidade intencionalmente para uma     actualização importante de biblioteca ou etc., geralmente existe um anúncio na lista de email debian-devel (http:// lists.debian.org/debian-devel/) etc. Antes que um conjunto de pacotes seja movido pelo script de manutenção do arquivo Debian do arquivo unstable para o arquivo testing, o script de manutenção do arquivo não verifica apenas a     maturidade (cerca de 10 dias de idade) e o estado dos relatórios de bug RC para os pacotes mas também tenta assegurar que sejam compatíveis com o conjunto de pacotes mais recente no arquivo testing. Este processo torna o arquivo testing muito actual e utilizável. Através do processo de congelamento gradual do arquivo liderado pela equipa de lançamento, o arquivo testing é amadurecido para o tornar completamente consistente e livre de bugs com algumas     intervenções manuais. Então o novo lançamento stable é criado ao atribuir o nome de código do antigo arquivo testing ao novo arquivo stable e criando um novo nome de código para o novo arquivo testing. O conteúdo inicial do novo arquivo testing é exactamente o mesmo que o arquivo stable recentemente lançado.     Ambos os arquivos unstable e testing podem sofrer falhas temporárias devido a vários factores: * Upload, para o arquivo, de pacotes danificados (maioritariamente para unstable) * Atraso de aceitação dos novos pacotes no arquivo (maioritariamente para unstable)     * Problemas com o tempo de sincronização do arquivo (tanto para testing como unstable) * Intervenção manual no arquivo, tal como remoção de pacotes (mais para testing) etc.     Se alguma vez você decidir utilizar estes arquivos, deverá ser capaz de corrigir ou contornar este tipo de problemas. Cuidado Durante alguns meses após um novo lançamento de stable, a maioria dos utilizadores de ambientes de trabalho devem usar o arquivo stable com as sua actualizações de segurança mesmo que normalmente usem os arquivos unstable ou testing. Durante este período de transição, ambos arquivos unstable e testing não são bons para a maioria das pessoas. O seu sistema é difícil de     manter em boas condições de funcionamento com o arquivo unstable porque sofre de vagas de grandes actualizações nos pacotes principais. O arquivo testing também não é útil porque contém praticamente o mesmo conteúdo que o arquivo stable mas sem o seu suporte de segurança ( Anúncio-de-segurança-de-testing-Debian-2008-12 (http:// lists.debian.org/debian-testing-security-announce/2008/12/ msg00019.html) ). Após um mês ou mais, o arquivo unstable pode ser usado se você for cuidadoso. Dica     Quando se acompanha o arquivo testing, um problema causado por um pacote removido é geralmente contornado ao instalar o pacote correspondente do arquivo unstable que foi lançado para correcção de bug.     Veja Manual de Políticas Debian (http://www.debian.org/doc/ debian-policy/) para as definições do arquivo. * "Secções (http://www.debian.org/doc/debian-policy/ch-archive# s-subsections) " * "Prioridades (http://www.debian.org/doc/debian-policy/ ch-archive#s-priorities) "     * "Sistema base (http://www.debian.org/doc/debian-policy/ ch-binary#s3.7) " * "Pacotes essenciais (http://www.debian.org/doc/debian-policy/ ch-binary#s3.8) " 2.1.5. Debian é 100% software livre     Debian é 100% software livre por causa do seguinte: * Debian installs only free software by default to respect user's freedoms. * Debian disponibiliza apenas software livre no main.     * Debian recomenda correr apenas software livre do main. * Nenhum pacote no main depende ou recomenda pacotes do non-free ou do contrib.     Algumas pessoas pensam se os 2 seguintes factos se contradizem ou não. * "Debian irá manter-se 100% livre". (Primeiro termo do Debian Socal Contract (http://www.debian.org/social_contract) )     * Os servidores Debian irão alojar alguns pacotes non-free e contrib.     Estes não se contradizem, devido ao seguinte. * O sistema Debian é 100% livre e os seus pacotes estão alojados em servidores Debian na área main.     * Os pacotes fora do sistema Debian são alojado em servidores Debian nas áreas non-free e contrib.     Isto é perfeitamente explicado nos termos 4º e 5º do Debian Social Contract (http://www.debian.org/social_contract) : * As nossas prioridades são os nossos utilizadores e o software livre o Seremos guiados pelas necessidades dos nossos utilizadores e da comunidade de software livre. Iremos colocar o seu interesse no topo das nossas prioridades. Iremos suportar as necessidades dos nossos utilizadores para operação em muitos ambientes de computação distintos. Não nos oporemos a software não-livre que se destine a ser utilizado em sistemas Debian, nem tentaremos cobrar qualquer taxa a pessoas que criem ou utilizem tais trabalhos. Iremos permitir que terceiros criem distribuições contendo o sistema Debian com outros trabalhos, sem qualquer taxa para nós. Para apoio destes objectivos, iremos disponibilizar um sistema integrado de materiais de alta qualidade sem restrições legais que previnam tais utilizaçõs do sistema.     * Trabalhos que não coincidem com os nossos standards de software livre o Nós reconhecemos que alguns dos nossos utilizadores necessitam utilizar trabalhos que não estão de acordo com a Debian Free Software Guidelines. Nós criamos no nosso arquivo as áreas "contrib" e "non-free" para esses trabalhos. Os pacotes nessas áreas não fazem parte do sistema Debian, embora tenham sido configurados para serem utilizados com Debian. Nós encorajamos os fabricantes de CDs a ler as licenças dos pacotes nessas áreas e determinar se podem distribuir os pacotes nos seus CDs. Por isso, embora os trabalhos não-livres não sejam parte de Debian, nós suportamos a sua utilização e disponibilizamos infra-estrutura para os pacotes não-livres (tal como o nosso sistema de seguimento de bugs e listas de email).     Os utilizadores devem estar cientes dos riscos da utilização de pacotes das áreas non-free e contrib: * falta de liberdade para tais pacotes de software * falta de suporte Debian em tais pacotes de software (Debian     não pode suportar devidamente software sem ter acesso ao seu código-fonte.) * contaminação do seu sistema Debian 100% livre The Debian Free Software Guidelines (http://www.debian.org/ social_contract#guidelines) are the free software standards for     Debian (http://www.debian.org) . Debian interprets "software" in the widest scope including document, firmware, logo, and artwork data in the package. This makes Debian's free software standards very strict ones. De modo a respeitar estes restritos standards de software livre para a main, Debian retira a marca Mozilla (http://     bugs.debian.org/cgi-bin/bugreport.cgi?bug=354622) de pacotes de software tais como o Firefox, Thunderbird e Seamonkey removendo o seu logotipo e alguns dados artísticos; e distribui-os respectivamente como Iceweasel, Icedove e Iceape.     Tipicamente os pacotes da non-free e da contrib incluem pacotes distribuidos livremente dos seguintes tipos: * Pacotes de documentação sob a GNU Free Documentation License (http://en.wikipedia.org/wiki/GNU_Free_Documentation_License) com secções invariantes tais como as do GCC e do Make. (a maioria encontra-se na secção non-free/doc.)     * Pacotes de firmware contendo dados binários sem código-fonte tais como os listados em Secção 9.7.6, “Controladores de hardware e firmware” como não-livre. (a maioria encontra-se na secção non-free/kernel.) * Pacotes de fontes e jogos com restrições comerciais de utilização e/ou modificação de conteúdo. Por favor note que o número de pacotes das non-free e contrib é menos de 2% dos pacotes da main. Activar o acesso às áreas     non-free e contrib não turva a fonte dos pacotes. A utilização do ecrã interactivo do aptitude(8) disponiza-lhe visibilidade e controlo total sobre que pacotes estão instalados e a partir de qual das áreas, para manter o seu sistema livre conforme desejar. 2.1.6. Dependências de pacote O sistema Debian oferece um conjunto consistente de pacotes     binários através do seu mecanismo de declaração de dependências binárias com versões nos campos do ficheiro de controle. Aqui está uma definição deles um pouco simplificada: * "Depends" o Isto declara uma dependência absoluta e todos os pacotes listados neste campo têm de ser instalados ao mesmo tempo ou com antecedência. * "Pre-Depends" o Isto é como o Depends, excepto que requer a instalação completa de todos os pacotes listados com antecedência. * "Recommends" o Isto declara uma dependência forte mas não absoluta. A maioria dos utilizadores não iriam querer o pacote a menos que todos os pacotes listados neste campo estejam instalados. * "Suggests" o Isto declara uma dependência fraca. Muitos utilizadores deste pacote podem beneficiar ao instalar os pacotes listados neste campo mas podem ter as funções razoáveis sem eles.     * "Enhances" o Isto declara uma dependência fraca como o Suggests mas funciona na direcção oposta. * "Breaks" o Isto declara uma incompatibilidade do pacote normalmente com alguma especificação de versão. Geralmente a resolução é actualizar todos os pacotes listados neste campo. * "Conflicts" o Isto declara uma incompatibilidade absoluta. Todos os pacotes listados neste campo têm de ser removidos para instalar este pacote. * "Replaces" o Isto é declarado quando os ficheiros instalados por este pacote substituem ficheiros nos pacotes listados. * "Provides" o Isto é declarado quando este pacote disponibiliza todos os ficheiros e funcionalidades dos pacotes listados. Nota     Please note that defining "Provides", "Conflicts" and "Replaces" simultaneously to an virtual package is the sane configuration. This ensures that only one real package providing this virtual package can be installed at any one time. A definição oficial incluindo dependências de fonte pode ser     encontrada em O Manual de Políticas: Capítulo 7 - Declarar relações entre pacotes (http://www.debian.org/doc/debian-policy/ ch-relationships) . 2.1.7. O fluxo de eventos da gestão de pacotes     Aqui está um resumo do fluxo de eventos simplificado da gestão de pacotes pelo APT. * Update ("aptitude update" ou "apt-get update"): 1. Obtém meta-dados do arquivo a partir do arquivo remoto 2. Reconstrói e actualiza os meta-dados locais para utilização do APT * Upgrade ("aptitude safe-upgrade" e "aptitude full-upgrade", ou "apt-get upgrade" e "apt-get dist-upgrade"): 1. Escolhe a versão candidata que geralmente é a versão mais recente disponível para todos os pacotes instalados (veja Secção 2.7.3, “Moldar a versão candidata” para excepções). 2. Resolve a dependência do pacote 3. Obtém os pacotes binários seleccionados do arquivo remoto se a versão candidata for diferente da versão instalada. 4. Desempacota os pacotes binários obtidos 5. Corre o script preinst 6. Instala os ficheiros binários 7. Corre o script postinst * Install ("aptitude install …" ou "apt-get install …"): 1. Escolhe os pacotes listados na linha de comandos 2. Resolve a dependência do pacote     3. Obtém os pacotes binários seleccionados a partir do arquivo remoto 4. Desempacota os pacotes binários obtidos 5. Corre o script preinst 6. Instala os ficheiros binários 7. Corre o script postinst * Remove ("aptitude remove …" ou "apt-get remove …"): 1. Escolhe os pacotes listados na linha de comandos 2. Resolve a dependência do pacote 3. Corre o script prerm 4. Remove os ficheiros instalados excepto os ficheiros de configuração 5. Corre o script postrm * Purge ("aptitude purge …" ou "apt-get purge …"): 1. Escolhe os pacotes listados na linha de comandos 2. Resolve a dependência do pacote 3. Corre o script prerm 4. Remove os ficheiros instalados incluindo os ficheiros de configuração 5. Corre o script postrm     Aqui, saltei intencionalmente detalhes técnicos por causa da visão geral. 2.1.8. Primeira resposta a problemas com a gestão de pacotes Você deve ler a boa documentação oficial. O primeiro documento a ler é específico de Debian "/usr/share/doc//     README.Debian". Também deve ser consultada outra documentação em "/usr/share/doc//". Se você definir a shell como Secção 1.4.2, “Personalizar bash”, escreva o seguinte. $ cd     $ pager README.Debian $ mc Você pode necessitar instalar o pacote de documentação     correspondente, com o sufixo "-doc" no nome, para informações mais detalhadas. Se você estiver a ter problemas com um pacote específico,     certifique-se que verifica primeiro o Sistema de acompanhamento de bugs Debian (BTS) (http://bugs.debian.org/) . Tabela 2.5. Lista de sites web chave para resolver problemas com um pacote específico. +---------------------------------------------------------------+ |site web |comando | |-------------------------------------+-------------------------| |Página inicial do Sistema de |sensible-browser "http://| |acompanhamento de bugs Debian (BTS) |bugs.debian.org/" | |(http://bugs.debian.org/) | |     |-------------------------------------+-------------------------| |O relatório de bug de um nome de |sensible-browser "http://| |pacote conhecido |bugs.debian.org/ | | |" | |-------------------------------------+-------------------------| |O relatório de bug de um número de |sensible-browser "http://| |bug conhecido |bugs.debian.org/ | | |" | +---------------------------------------------------------------+ Procure no Google (http://www.google.com) com palavras de busca     incluindo "site:debian.org", "site:wiki.debian.org", "site:lists.debian.org", etc.     Quando você criar um relatório de bug, por favor use o comando reportbug(1). 2.2. Operações básicas de gestão de pacotes As operações básicas de gestão de pacotes no sistema Debian podem     ser executas por qualquer ferramenta de gestão de pacotes disponível no sistema Debian. Aqui vamos explicar as ferramentas de gestão básica de pacotes: apt-get / apt-cache e aptitude. Para as operações de gestão de pacotes que envolvam a instalação     ou actualização de metadados do pacote, você necessita ter privilégios de root. 2.2.1. apt-get / apt-cache contra o aptitude     Os comandos apt-get e apt-cache são as ferramentas de gestão de pacotes mais básicas * O apt-get e o apt-cache oferecem apenas a interface de linha de comandos. * O apt-get é mais apropriado para uma actualização maior ao sistema entre lançamentos, etc. * O apt-get oferece um resolvedor de pacotes robusto e estável que utiliza os dados comuns do estado dos pacotes. * apt-get é menos exigente em recursos de hardware. Consome menos memória e é mais rápido.     * O apt-get foi actualizado para suportar a auto-instalação e auto-remoção de pacotes recomendados. * O apt-get foi actualizado para suportar o registo em log das actividades de pacotes. * O apt-cache oferece uma busca baseada em expressões regulares standard no nome do pacote e na descrição. * O apt-get e o apt-cache podem gerir várias versões de pacotes utilizando o /etc/apt/preferences mas é um pouco incómodo.     O comando aptitude é a ferramenta de gestão de pacotes mais versátil. * O aptitude oferece a interface de utilizador de texto interactiva de ecrã completo. * O aptitude também oferece uma interface de utilizador de linha de comandos. * O aptitude é mais apropriado para a gestão de pacotes interactiva diária como inspeccionar os pacotes instalados e procurar pacotes disponíveis. * O aptitude é mais exigente em recursos de hardware. Consome mais memória e é mais lento.     * O aptitude oferece um resolvedor de pacotes avançado que também utiliza dados extra de estado de pacotes utilizados apenas pelo aptitude. * O aptitude suporta auto-instalação e auto-remoção de pacotes recomendados. * O aptitude suporta registo em log das actividades de pacotes. * O aptitude oferece um busca baseada em expressões regulares avançada em todos os metadados dos pacotes. * O aptitude pode gerir várias versões de pacotes sem utilizar o /etc/apt/preferences e é bastante intuitivo. Nota Apesar do comando aptitude vir com ricas funcionalidades como o seu resolvedor avançado de pacotes, esta complexidade já causou     (ou pode ainda causar) algumas regressões como os Bug #411123 (http://bugs.debian.org/411123) , Bug #514930 (http:// bugs.debian.org/514930) , e Bug #570377 (http://bugs.debian.org/ 570377) . Em caso de dúvidas, por favor utilize os comandos apt-get e apt-cache sobre o comando aptitude. 2.2.2. Operações básicas de gestão de pacotes com a linha de comandos     Aqui estão algumas operações básicas de gestão de pacotes com a linha de comandos usando aptitude(8) e apt-get(8) / apt-cache(8). Tabela 2.6. Operações básicas de gestão de pacotes com a linha de comandos utilizando aptitude(8) e apt-get(8) / apt-cache(8). +---------------------------------------------------------------+ |sintaxe do |sintaxe do | | |aptitude |apt-get/ |descrição | | |apt-cache | | |------------+------------+-------------------------------------| |aptitude |apt-get |actualiza os metadados do arquivo de | |update |update |pacotes | |------------+------------+-------------------------------------| |aptitude |apt-get |instala a versão candidata do pacote | |install foo |install foo |"foo" com as suas dependências | |------------+------------+-------------------------------------| |aptitude |apt-get |instala as versões candidatas dos | |safe-upgrade|upgrade |pacotes instalados sem remover | | | |quaisquer outros pacotes | |------------+------------+-------------------------------------| |aptitude |apt-get |instala as versões candidatas dos | |full-upgrade|dist-upgrade|pacotes instalados removendo outros | | | |pacotes caso necessário | |------------+------------+-------------------------------------| |aptitude |apt-get |remove o pacote "foo" deixando os | |remove foo |remove foo |seus ficheiros de configuração | |------------+------------+-------------------------------------| |N/D |apt-get |remove auto-installed packages which |     | |autoremove |are no longer required | |------------+------------+-------------------------------------| |aptitude |apt-get |purga o pacote "foo" com os seus | |purge foo |purge foo |ficheiros de configuração | |------------+------------+-------------------------------------| |aptitude |apt-get |limpa completamente o repositório | |clean |clean |local de ficheiros de pacotes obtidos| |------------+------------+-------------------------------------| |aptitude |apt-get |limpa os pacotes desactualizados do | |autoclean |autoclean |repositório local dos ficheiros de | | | |pacotes recebidos | |------------+------------+-------------------------------------| |aptitude |apt-cache |mostra informação detalhada acerca do| |show foo |show foo |pacote "foo" | |------------+------------+-------------------------------------| |aptitude |apt-cache |procura pacotes que correspondem à | |search |search | | | | | | |------------+------------+-------------------------------------| |aptitude why| |explica a razão porque o pacotes que | | |N/D |correspondem à | | | |devem ser instalados | |------------+------------+-------------------------------------| |aptitude | |explica a razão porque o pacotes que | |why-not |N/D |correspondem à | | | |não podem ser instalados | +---------------------------------------------------------------+ Nota Como o apt-get e o aptitude partilham o estado dos pacotes     auto-instalados (veja Secção 2.5.5, “O estado dos pacote para o APT”) após o lenny, você pode misturar estas ferramentas sem grandes problemas (veja Bug #594490 (http://bugs.debian.org/ 594490) ). A diferença entre "safe-upgrade"/"upgrade" e "full-upgrade"/ "dist-upgrade" apenas aparece quando novas versões de pacotes     ficam com relações de dependências diferentes das versões antigas desses pacotes. O comando "aptitude safe-upgrade" não instala novos pacotes nem remove pacotes instalados. O "aptitude why " pode listar mais informação     por "aptitude -v why ". Informação semelhante pode ser obtida por "apt-cache rdepends ". Quando o comando aptitude é arrancado em modo de linha de     comandos e enfrenta alguns problemas como conflitos de pacotes, você pode mudar para modo interactivo em ecrã total, ao pressionar a tecla "e", mais tarde na linha de comandos.     Você pode dar opções de comando logo após "aptitude". Tabela 2.7. Opções de comando notáveis para o aptitude(8) +---------------------------------------------------------------+ |opção de |descrição | |comando | | |------------+--------------------------------------------------|     |-s |simula o resultado do comando | |------------+--------------------------------------------------| |-d |faz apenas o download e não instala/actualiza | |------------+--------------------------------------------------| |-D |mostra breves explicações antes das instalações e | | |remoções automáticas | +---------------------------------------------------------------+     Para mais veja aptitude(8) e o "Manual de utilizador do aptitude" em "/usr/share/doc/aptitude/README". Dica     O pacote dselect ainda está disponível e foi a ferramenta de gestão de pacotes interactiva de ecrã inteiro preferida nos lançamentos anteriores. 2.2.3. Uso interactivo do aptitude Para gestão de pacotes interactiva, arranque o aptitude em modo     interactivo a partir da linha de comandos da consola conforme se segue:     $ sudo aptitude -u Password: Isto actualiza a cópia local da informação do arquivo e mostra a     lista de pacotes em ecrã completo com menu. O aptitude coloca a sua configuração em "~/.aptitude/config". Dica     Se desejar utilizar a configuração do root em vez da do utilizador, utilize "sudo -H aptitude …" em vez de "sudo aptitude …" na expressão acima. Dica     O aptitude define automaticamente as acções pendentes como se fosee arrancado interactivamente. Se não gostar disso, pode redefinir isto a partir do menu: "Acção" → "Cancelar acções pendentes". 2.2.4. Teclas de atalho do aptitude As combinações notáveis de teclas para explorar o estado dos     pacotes e definir uma "acção planeada" neles neste modo de ecrã total são as seguintes: Tabela 2.8. Lista de teclas de atalho do aptitude +---------------------------------------------------------------+ |tecla |tecla de atalho | |--------------------+------------------------------------------| |F10 ou Ctrl-t |menu | |--------------------+------------------------------------------| |? |mostra a ajuda para teclas (listagem mais | | |completa) | |--------------------+------------------------------------------| |F10 → Ajuda → Manual|mostra o Manual do Utilizador | |do Utilizador | | |--------------------+------------------------------------------| |u |actualiza a informação de arquivo do | | |pacote | |--------------------+------------------------------------------| |+ |marca o pacote para actualização ou | | |instalação | |--------------------+------------------------------------------| |- |marca o pacote para remoção (manter os | | |ficheiros de configuração) | |--------------------+------------------------------------------| |_ |marca o pacote para purgar (remover | | |ficheiros de configuração) |     |--------------------+------------------------------------------| |= |coloca o pacote em retenção (hold) | |--------------------+------------------------------------------| |U |marca todos os pacotes com actualizações | | |(funciona como full-upgrade) | |--------------------+------------------------------------------| |g |começa a descarregar e a instalar os | | |pacotes seleccionados | |--------------------+------------------------------------------| |q |sai do ecrã actual e guarda as alterações | |--------------------+------------------------------------------| |x |sai do ecrã actual e descarta as | | |alterações | |--------------------+------------------------------------------| |Enter |ver informação acerca de um pacote | |--------------------+------------------------------------------| |C |ver o relatório de alterações de um pacote| |--------------------+------------------------------------------| |l |altera o limite dos pacotes mostrados | |--------------------+------------------------------------------| |/ |procura pela primeira correspondência | |--------------------+------------------------------------------| |\ |repetir a última pesquisa | +---------------------------------------------------------------+ A especificação de nome de ficheiro da linha de comandos ou do aviso de menu após pressionar "l" e "//" toma a expressão regular     do aptitude conforme descrito em baixo. A expressão regular do aptitude pode corresponder explicitamente a um nome de pacote utilizando uma string começada por "~n e seguida do nome do pacote. Dica Você necessita pressionar "U", no interface visual, para ter     todos os pacotes instalados actualizados para a versão candidata. Caso contrário, apenas os pacotes seleccionados e certos pacotes com dependências deles, versionadas, são actualizados para a versão candidata. 2.2.5. Vistas de pacote no aptitude     No modo de ecrã completo interactivo do aptitude(8), os pacotes na lista de pacotes são mostrados como no próximo exemplo.     idA libsmbclient -2220kB 3.0.25a-1 3.0.25a-2     Aqui, esta linha significa desde a esquerda o seguinte: * A flag "estado actual" (a primeira letra) * A flag "acção planeada" (a segunda letra) * A flag "automático" ( a terceira letra)     * O nome do Pacote * A alteração na utilização do espaço do disco atribuída a "acção planeada" * A versão actual do pacote * A versão candidata do pacote Dica     A lista completa de flags é fornecida ao fundo do ecrã de Ajuda mostrada ao pressionar "?". A versão candidata é escolhida de acordo com as preferências     locais actuais (veja apt_preferences(5) e Secção 2.7.3, “Moldar a versão candidata”).     Estão disponíveis vários tipos de vistas de pacotes sob o menu "Vistas". Tabela 2.9. Lista de vistas para o aptitude +---------------------------------------------------------------+ |vista |estado |descrição da vista | |-------------+----------+--------------------------------------| |Vista de | |veja Tabela 2.10, “A categorização das| |Pacote |Bom |vista de pacotes standard” | | | |(predefinição) | |-------------+----------+--------------------------------------| |Recomendações| |list packages which are recommended by| |de Auditoria |Bom |some installed packages but not yet | | | |installed |     |-------------+----------+--------------------------------------| |Lista de |Bom |lista pacotes sem categorização (para | |Pacotes Lisa | |utilizar com expressões regulares) | |-------------+----------+--------------------------------------| |Explorador de|Muito |lista pacotes categorizados de acordo | |Debtags |utilizável|com as suas entradas debtags (http:// | | | |debtags.alioth.debian.org/) | |-------------+----------+--------------------------------------| |Explorador | |lista pacotes categorizados de acordo | |por |Obsoleto |com a sua categoria (utilize o | |Categorias | |Explorador de Debtags, em vez disto) | +---------------------------------------------------------------+ Nota     Por favor ajude-nos a melhorar a etiquetagem de pacotes com debtags! (http://debtags.alioth.debian.org/todo.html)     A "Vista de Pacotes standard categoriza os pacotes de certo modo como o dselect com algumas funcionalidades extra. Tabela 2.10. A categorização das vista de pacotes standard +---------------------------------------------------------------+ |categoria |descrição da vista | |---------------------+-----------------------------------------| |Pacotes Actualizáveis|lista pacotes organizados como secção → | | |área → pacote | |---------------------+-----------------------------------------| |Pacotes Novos |, , | |---------------------+-----------------------------------------| |Pacotes Instalados |, , |     |---------------------+-----------------------------------------| |Pacotes Não |, , | |Instalados | | |---------------------+-----------------------------------------| |Pacotes Obsoletos ou |, , | |Criados Localmente | | |---------------------+-----------------------------------------| |Pacotes Virtuais |lista pacotes com a mesma função | |---------------------+-----------------------------------------| |Tarefas |lista pacotes com diferentes funções | | |geralmente necessárias para uma tarefa | +---------------------------------------------------------------+ Dica     A vista Tarefas pode ser usada para escolher pacotes para a sua tarefa. 2.2.6. Opções do método de pesquisa com o aptitude     O aptitude oferece várias opções para você procurar pacotes utilizando a sua fórmula de expressões regulares. * Linha de comandos da shell: o "aptitude search ''" para listar estado de instalação, nome do pacote e descrição curta dos pacotes correspondentes o "aptitude show ''" para listar a descrição detalhada do pacote * modo de ecrã total interactivo:     o "l" para limitar a vista de pacotes aos pacotes correspondentes o "/" para procurar um pacote correspondente o "\" para procurar um pacote correspondente voltando para trás o "n" para procurar o próximo o "N" para procurar o próximo (andando para trás) Dica     A string para é tratada como a correspondência exacta da string para o nome do pacote a menos que seja iniciada explicitamente com "~" para ser uma fórmula de expressão regular. 2.2.7. A fórmula regex do aptitude A fórmula de expressão regular do aptitude é estendida tipo mutt     ERE (veja Secção 1.6.2, “Expressões regulares”) e o significado da extensões de regras de correspondência especial específicas do aptitude são as seguintes: Tabela 2.11. Lista da fórmula regex do aptitude +----------------------------------------------------------------------+ |descrição da regra | | |de correspondência |fórmula da expressão regular | |extensa | | |-------------------+--------------------------------------------------| |corresponde com o |~n | |nome do pacote | | |-------------------+--------------------------------------------------| |corresponde com a |~d | |descrição | | |-------------------+--------------------------------------------------| |corresponde com |~t | |nome da tarefa | | |-------------------+--------------------------------------------------| |corresponde com |~G | |debtag | | |-------------------+--------------------------------------------------| |corresponde com o |~m | |maintainer | | |-------------------+--------------------------------------------------| |corresponde com |~s | |secção do pacote | | |-------------------+--------------------------------------------------| |corresponde com |~V | |versão do pacote | | |-------------------+--------------------------------------------------| |corresponde com |~A{squeeze,wheezy,sid} | |arquivo | | |-------------------+--------------------------------------------------| |corresponde com |~O{debian,…} | |origem | | |-------------------+--------------------------------------------------| |prioridade da |~p{extra,important,optional,required,standard} | |correspondência | | |-------------------+--------------------------------------------------| |corresponde com |~E | |pacotes essenciais | | |-------------------+--------------------------------------------------| |corresponde com |~v | |pacotes virtuais | | |-------------------+--------------------------------------------------| |corresponde com |~N | |pacotes novos | | |-------------------+--------------------------------------------------| |corresponde com |~a | |acções pendentes |{install,upgrade,downgrade,remove,purge,hold,keep}| |-------------------+--------------------------------------------------| |corresponde com os |~i | |pacotes instalados | | |-------------------+--------------------------------------------------| |match installed | | |packages with A |~M | |-mark (auto | | |installed packages)| | |-------------------+--------------------------------------------------| |match installed | | |packages without A | | |-mark |~i!~M | |(administrator | | |selected packages) | | |-------------------+--------------------------------------------------| |corresponde com | | |pacotes instalados |~U | |e com actualizações| | |disponíveis | | |-------------------+--------------------------------------------------| |corresponde com | |     |pacotes removidos |~c | |mas não purgados | | |-------------------+--------------------------------------------------| |corresponde com | | |pacotes removidos, |~g | |purgados ou que | | |podem-ser-removidos| | |-------------------+--------------------------------------------------| |match packages | | |declaring a broken |~b | |dependency | | |-------------------+--------------------------------------------------| |match packages | | |declaring broken |~B | |dependency of | | | | | |-------------------+--------------------------------------------------| |match | | |packages declaring |~D[:] | |dependency of | | | | | |-------------------+--------------------------------------------------| |match | | |packages declaring |~DB[:] | |broken dependency | | |of | | |-------------------+--------------------------------------------------| |match packages to | | |which the | | |matching package |~R[:] | |declares dependency| | | | | |-------------------+--------------------------------------------------| |match packages to | | |which the | | |matching package |~RB[:] | |declares broken | | |dependency | | |-------------------+--------------------------------------------------| |corresponde com | | |pacotes com os | | |quais alguns |~R~i | |pacotes instalados | | |dependem | | |-------------------+--------------------------------------------------| |corresponde com | | |pacotes com os | | |quais nenhum outro |!~R~i | |pacote instalado | | |depende | | |-------------------+--------------------------------------------------| |corresponde com | | |pacotes com os | | |quais alguns |~R~i|~Rrecommends:~i | |pacotes instalados | | |dependem ou | | |recomendam | | |-------------------+--------------------------------------------------| |match | | |package with |~S filter | |filtered version | | |-------------------+--------------------------------------------------| |corresponde com | | |todos os pacotes |~T | |(true) | | |-------------------+--------------------------------------------------| |não corresponde com| | |nenhum pacote |~F | |(false) | | +----------------------------------------------------------------------+ * A parte da expressão regular é a mesma ERE que aquela utilizada nas típicas ferramentas de texto tipo-Unix que utilizam "^", ".*", "$" etc. como o egrep(1), awk(1) e perl (1).     * The dependency is one of (depends, predepends, recommends, suggests, conflicts, replaces, provides) specifying the package interrelationship. * The default dependency is "depends". Dica     Quando for uma string nula, coloca "~T" imediatamente após o comando.     Aqui estão alguns atalhos. * "~P" == "~Dprovides:"     * "~C" == "~Dconflicts:" * "…~W term" == "(…|term)" Os utilizadores familiarizados com o mutt aprendem rápido, pois o     mutt foi a inspiração para a sintaxe de expressão. Veja "PROCURANDO, LIMITANDO,E EXPRESSÕES" no "Manual do Utilizador" "/ usr/share/doc/aptitude/README". Nota Com a versão lenny do aptitude(8), a nova sintaxe de formato longo como a "?broken" pode ser utilizada para correspondência de     expressões regulares no lugar da sua equivalente antiga de formato curto "~b". Agora o caractere de espaço " " é considerado como um caractere terminante de expressão regular em adição ao caractere til "~". Veja o "Manual do Utilizador" para a nova sintaxe de formato longo. 2.2.8. Resolução de dependências do aptitude The selection of a package in aptitude not only pulls in packages which are defined in its "Depends:" list but also defined in the     "Recommends:" list if the menu "F10 → Options → Preferences → Dependency handling" is set accordingly. These auto installed packages are removed automatically if they are no longer needed under aptitude. Nota     Ante do lançamento do lenny, o apt-get e outras ferramentas standard do APT não ofereciam a funcionalidade autoremove. 2.2.9. Logs de actividade de pacotes     Você pode verificar o histórico de actividade de pacotes nos ficheiros log. Tabela 2.12. Os ficheiros log para actividades de pacotes +---------------------------------------------------------------+ |ficheiro |conteúdo | |--------------+------------------------------------------------| |/var/log/ |Log da actividade de nível do dpkg para as | |dpkg.log |actividades de todos os pacotes |     |--------------+------------------------------------------------| |/var/log/apt/ |Log da actividade genérica do APT | |term.log | | |--------------+------------------------------------------------| |/var/log/ |Log da actividade de comandos do aptitude | |aptitude | | +---------------------------------------------------------------+ Na realidade, não é muito fácil obter rapidamente uma compreensão     significativa a partir destes logs. Veja Secção 9.2.10, “Gravar alterações em ficheiros de configuração” para um modo mais fácil. 2.3. Exemplos de operações do aptitude     Aqui estão alguns exemplos de operações do aptitude(8). 2.3.1. Listagem de pacotes com correspondência por expressão regular nos nomes de pacotes     O seguinte comando lista pacotes com regex a condizer com nomes de pacotes. $ aptitude search '~n(pam|nss).*ldap'     p libnss-ldap - módulo NSS para usar LDAP como um serviço de nomes p libpam-ldap - Módulo de Autenticação Acoplável que permite interfaces do LDAP     Isto dá muito jeito para para encontrar o nome exacto de um pacote. 2.3.2. Explorar com a correspondência de expressão regular a expressão regular "~dipv6" na vista "Nova Lista de Pacotes     Simples" com o aviso "l", limita a vista aos pacotes com a descrição correspondente e permite-lhe explorar interactivamente a sua informação. 2.3.3. Purgar pacotes removidos definitivamente     Você pode purgar todos os restantes ficheiros de configuração dos pacotes removidos.     Verifique os resultados do seguinte comando.     # aptitude search '~c'     Se achar que os pacotes listados podem ser purgados, execute o seguinte comando:     # aptitude purge '~c'     Você pode querer fazer o mesmo no modo interactivo para um controle mais preciso. You provide the regex "~c" in the "New Package View" view with     "l" prompt. This limits the package view only to regex matched packages, i.e., "removed but not purged". All these regex matched packages can be shown by pressing "[" at top level headings. Then you press "_" at top level headings such as "Not Installed     Packages". Only regex matched packages under the heading are marked to be purged by this. You can exclude some packages to be purged by pressing "=" interactively for each of them.     Esta técnica é muito útil e funciona com muitas outras teclas de comando. 2.3.4. Acertar o estado auto/manual de instalação Aqui está como acertar o estado auto/manual de instalação dos     pacotes (após usar um instalador de pacotes sem ser o aptitude e etc.). 1. Arranque o aptitude em modo interactivo como root. 2. Escreva "u", "U", "f" e "g" para actualizar a lista de pacotes e actualizar os pacotes. 3. Escreva "l" para inserir o limite de visualização de pacotes aos "~i(~R~i|~Recomendados:~i)" e escreva "M" sobre "Pacotes Instalados" como auto-instalado. 4. Escreva "l" para inserir o limite de visualização de pacotes como "~prequired|~pimportant|~pstandard|~E" e escreva "m" sobre "Pacotes Instalados" como instalados manualmente. 5. Escreva "l" para inserir o limite de visualização de pacotes como "~i!~M" e remover pacotes não utilizados ao escrever "-" sobre cada um deles após expô-los ao escrever "[" sobre "Pacotes Instalados".     6. Type "l", to enter the package display limit as "~i"; then type "m" over "Tasks", to mark that packages as manual installed. 7. Termina o aptitude. 8. Inicie "apt-get -s autoremove|less" como root para verificar os que não são usados. 9. Reinicie o aptitude em modo interactivo e marque os pacotes necessários como "m". 10. Reinicie o "apt-get -s autoremove|less" como root para verificar que o REMOVED contém apenas os pacotes esperados. 11. Arranque "apt-get autoremove|less" como root para auto-remover os pacotes não usados.     A opção "m" sobre "Tasks" é uma opção para prevenir situações de remoção de pacotes em massa no futuro. 2.3.5. Actualização total ao sistema Nota Quando mover para um novo lançamento etc, deverá considerar fazer uma instalação limpa do novo sistema mesmo sabendo que Debian é actualizável como descrito em baixo. Isto dá-lhe a hipótese de     remover os lixos coleccionados e expõe-lhe a melhor combinação do pacotes mais recentes. É claro que deverá fazer uma cópia de segurança do sistema para um lugar seguro (veja Secção 10.1.6, “Salvaguarda (backup) e recuperação”) antes de fazer isto. Eu recomendo fazer uma configuração de duplo arranque usando partições diferentes para ter a transição mais suave. Você pode executar a actualização geral do sistema para um     lançamento mais recente ao alterar o conteúdo do ficheiro "/etc/ apt/sources.list" apontando para um novo lançamento e correndo o comando "apt-get update; apt-get dist-upgrade". Para actualizar de stable para testing ou unstable, você     substitui "squeeze" no exemplo "/etc/apt/sources.list" de Secção 2.1.4, “Básico do arquivos Debian” por "wheezy" ou "sid". Na realidade, você pode enfrentar algumas complicações devido a problemas com a transição de alguns pacotes, na maioria devido a dependências desses pacotes. Quanto maior a diferença da     actualização, maior a probabilidade de ter grandes problemas. Para a transição da stable antiga para a nova stable após o seu lançamento, você pode ler as suas novas Notas de Lançamento (http://www.debian.org/releases/stable/releasenotes) e seguir o procedimento exacto descrito lá para minimizar problemas. Quando você decidir mover de stable para testing antes do seu lançamento formal, não existem Notas de Lançamento (http://     www.debian.org/releases/stable/releasenotes) para o ajudar. A diferença entre stable e testing pode ter crescido bastante após o lançamento stable anterior e complicar a situação da actualização. Você deve dar passos de precaução para a actualização total     enquanto recolhe a informação mais recente da lista de mail e usando senso comum. 1. Leia as "Notas de Lançamento" anteriores. 2. Faça cópia de segurança a todo o sistema (especialmente dados e informação de configuração). 3. Tenha um meio de arranque à mão para o caso do gestor de arranque ficar danificado. 4. Informe os utilizadores do sistema com bastante antecedência. 5. Grave a actividade de actualização com o script(1). 6. Para prevenir a remoção aplique "unmarkauto" aos pacotes necessários, p.e., "aptitude unmarkauto vim", . 7. Minimize o número de pacotes instalados para reduzir a hipótese de conflitos de pacotes, p.e., remova os pacotes da     tarefas de ambiente de trabalho. 8. Remova o ficheiro "/etc/apt/preferences" (desactiva o apt-pinning). 9. Tente a actualização em passos inteligentes: oldstable → stable → testing → unstable. 10. Actualize o ficheiro "/etc/apt/sources.list" para apontar apenas para o novo arquivo e corra "aptitude update". 11. Instale, opcionalmente, os novos pacotes de base primeiro, ex., "aptitude install perl". 12. Corra o comando "apt-get -s dist-upgrade" para avaliar o impacto. 13. Corra o comando "apt-get dist-upgrade" em último lugar. Cuidado     Não é sensato saltar grandes lançamentos de Debian quando se actualiza entre lançamentos stable. Cuidado     Nas "Notas de Lançamento" anteriores, GCC, Linux Kernel, initrd-tools, Glibc, Perl, a cadeia de ferramentas do APT, etc. necessitaram de alguma atenção especial para a actualização geral do sistema.     Para actualizações diárias em unstable, veja Secção 2.4.3, “Salvaguardar para problemas de pacotes.”. 2.4. Operações de gestão avançada de pacotes 2.4.1. Operações de gestão avançada de pacotes com linha de comandos Aqui está uma lista de outras operações de gestão de pacotes para     as quais o aptitude é de demasiado alto nível ou faltam-lhe funcionalidades necessárias. Tabela 2.13. Lista de operações de gestão avançada de pacotes +---------------------------------------------------------------+ |comando |acção | |----------------------------+----------------------------------| |COLUMNS=120 dpkg -l |lista o estado de um pacote | | |instalado para o relatório de bug | |----------------------------+----------------------------------| |dpkg -L |lista o conteúdo de um pacote | | |instalado | |----------------------------+----------------------------------| |dpkg -L | |lista os manuais para um pacote | |egrep '/usr/share/man/man.* |instalado | |/.+' | | |----------------------------+----------------------------------| |dpkg -S |lista os pacotes instalados que | ||condizem com o nome de ficheiro | |----------------------------+----------------------------------| |apt-file search |lista pacotes no arquivo que | ||condizem com o nome de ficheiro | |----------------------------+----------------------------------| |apt-file list |lista os conteúdos dos pacotes que| | |condizam no arquivo | |----------------------------+----------------------------------| |dpkg-reconfigure |reconfigura o pacote exacto | | | | |----------------------------+----------------------------------| |dpkg-reconfigure -p=low |reconfigura o pacote exacto com as| | |questões mais detalhadas | |----------------------------+----------------------------------| |configure-debian |reconfigura pacotes a partir do | | |menu de ecrã completo | |----------------------------+----------------------------------| |dpkg --audit |faz auditoria ao sistema por | | |pacotes parcialmente instalados | |----------------------------+----------------------------------| |dpkg --configure -a |configura todos os pacotes | | |parcialmente instalados | |----------------------------+----------------------------------| |apt-cache policy |mostra a versão disponível, a | | |prioridade e informação de arquivo| | |de um pacote binário | |----------------------------+----------------------------------| |apt-cache madison |mostra a versão disponível e | | |informação de arquivo de um pacote| |----------------------------+----------------------------------| |apt-cache showsrc |mostra informação do pacote de | | |código-fonte de um pacote binário | |----------------------------+----------------------------------|     |apt-get build-dep |instala os pacotes necessários | | |para compilar pacote | |----------------------------+----------------------------------| |aptitude build-dep |instala os pacotes necessários | | |para compilar pacote | |----------------------------+----------------------------------| |apt-get source |descarrega código-fonte (do | | |arquivo standard) | |----------------------------+----------------------------------| |dget |descarrega um pacote de | | |código-fonte (de outro arquivo) | |----------------------------+----------------------------------| | |constrói uma árvore de | |dpkg-source -x |códifo-fonte a partir de um | |_- |conjunto de pacotes de | |.dsc |código-fonte ("*.orig.tar.gz" e | | |"*.debian.tar.gz"/"*.diff.gz") | |----------------------------+----------------------------------| |debuild binary |compila pacote(s) a partir de uma | | |árvore fonte local | |----------------------------+----------------------------------| | |compila um pacote de kernel a | |make-kpkg imagem_de_kernel |partir de uma árvore fonte de | | |kernel | |----------------------------+----------------------------------| |make-kpkg --initrd |compila um pacote de kernel a | |imagem_de_kernel |partir de uma árvore fonte de | | |kernel com initramfs activa | |----------------------------+----------------------------------| |dpkg -i _ |instalar um pacote local no | |-_ |sistema | |.deb | | |----------------------------+----------------------------------| |debi _-|instala pacote(s) locais no | |_ |sistema | |.dsc | | |----------------------------+----------------------------------| |dpkg --get-selections '*' > |guarda a informação de estado de | |selecção.txt |selecção a nível de pacotes do | | |dpkg | |----------------------------+----------------------------------| |dpkg --set-selections |define a informação de estado de | | hold ||pacote ao nível do dpkg para hold | |dpkg --set-selections |(equivalente a "aptitude hold | | |") | +---------------------------------------------------------------+ Cuidado As ferramentas de pacotes de nível mais baixo como "dpkg -i …" e "debi …" deverão ser utilizadas com cuidado pelo administrador do     sistema. Não tomam conta automaticamente das dependências de pacotes necessárias. As opções de linha de comandos do dpkg "--force-all" e semelhantes (veja dpkg(1)) destinam-se apenas a serem utilizadas por especialistas. Utiliza-las sem o conhecimento total dos seus efeitos pode danificar completamente o seu sistema.     Por favor note o seguinte: * Toda a configuração do sistema e comandos de instalação necessitam ser executados pelo root. * A contrário do aptitude, que utiliza regex (veja Secção 1.6.2, “Expressões regulares”), os outros comandos de gestão de pacotes utilizam padrões como a shell glob (veja Secção 1.5.6, “Glob da shell”). * O apt-file(1), é disponibilizado pelo pacote apt-file, tem de correr previamente "apt-file update". * O configure-debian(8) disponibilizado pelo pacote configure-debian corre o dpkg-reconfigure(8) como seu backend. * O dpkg-reconfigure(8) corre scripts de pacote utilizando o     debconf(1) como o seu backend. * Os comandos "apt-get build-dep", "apt-get source" e "apt-cache showsrc" necessitam de "deb-src" em "/etc/apt/ sources.list". * Os dget(1), debuild(1), e debi(1) necessitam do pacote devscripts. * Veja o procedimento de (re)empacotamento utilizando "apt-get source" em Secção 2.7.13, “Portar um pacote para o sistema stable”. * O comando make-kpkg necessita do pacote kernel-package (veja Secção 9.7, “O kernel”). * Para empacotamento em geral veja Secção 12.11, “Criar um pacote Debian”. 2.4.2. Verificação dos ficheiros pacotes instalados A instalação de debsums permite a verificação dos ficheiros dos     pacotes instalados contra valores MD5sum do ficheiro "/var/lib/ dpkg/info/*.md5sums" com debsums(1). Para saber como o MD5sum funciona veja Secção 10.4.5, “O valor de controlo MD5” . Nota     Como a base de dados MD5sum pode ser adulterada por um intruso, o debsums(1) é uma ferramenta de segurança de utilização limitada. É bom apenas para verificar modificações locais pelo administrador ou danos devido a erros de media. 2.4.3. Salvaguardar para problemas de pacotes. Muito utilizadores preferem seguir o lançamento unstable do     sistema Debian pelas suas novas funcionalidades e pacotes. Isto torna o sistema permeável a a bugs críticos dos pacotes. A instalação do pacote apt-listbugs salvaguarda o seu sistema     contra bugs críticos ao verificar automaticamente o Debian BTS por bugs críticos quando fizer actualizações com o sistema APT.     A instalação do pacote apt-listchanges disponibiliza notícias importantes de "NEWS.Debian" ao actualizar com o sistema APT. 2.4.4. Procurar nos meta-dados do pacote Embora hoje em dia visitar o site Debian http://     packages.debian.org/ (http://packages.debian.org/) facilite a busca nos meta-dados do pacote, vamos ver modos mais tradicionais. Os comandos grep-dctrl(1), grep-status(1) e grep-available(1)     podem ser utilizados para procurar qualquer ficheiro que tenha o formato geral de um ficheiro de controle de pacote Debian. "dpkg -S " pode ser utilizado para     procurar nomes de pacotes instalados pelo dpkgque contenham ficheiros com o nome coincidente. Mas isto não vê os ficheiros criados pelo script do responsável do pacote. Se necessitar de fazer uma busca mais elaborada nos meta-dados do dpkg, você necessita executar o comando "grep -e     padrão_de_expressão_regular *" no directório "/var/lib/dpkg/info/ ". Isto fá-lo procurar as palavras mencionadas nos scripts dos pacotes e nos textos de questões de instalação.     Se desejair procurar, recursivamente, as dependências de pacotes, deverá utilizar o apt-rdepends(8). 2.5. Os interiores da gestão de pacotes Debian Vamos aprender como o sistema de gestão de pacotes Debian     funciona internamente. Isto deverá ajudá-lo a criar a sua própria solução para alguns problemas com pacotes. 2.5.1. Meta dados do arquivo Os ficheiros de meta-dados para cada distribuição são armazenados sob "dist/" em cada site mirror Debian, p.e.,     "http://ftp.us.debian.org/debian/". A sua estrutura de arquivo pode ser explorada com um navegador web. Existem 6 tipos de meta-dados chave. Tabela 2.14. O conteúdo dos meta dados do arquivo Debian +---------------------------------------------------------------+ |ficheiro |localização |conteúdo | |--------------+---------------------+--------------------------| |Release |topo da distribuição |descrição do arquivo e | | | |informação de integridade | |--------------+---------------------+--------------------------| | | |ficheiro de assinatura | |Release.gpg |topo da distribuição |para o ficheiro "Release" | | | |assinado com a chave do | | | |arquivo | |--------------+---------------------+--------------------------| | | |lista de todos os | |Contents- |topo da distribuição |ficheiros para todos os | || |pacotes no arquivo |     | | |pertinente | |--------------+---------------------+--------------------------| | |topo de cada |descrição do arquivo | |Release |combinação de |utilizada para a regra do | | |distribuição/área/ |apt_preferences(5) | | |arquitectura | | |--------------+---------------------+--------------------------| | |topo de cada | | |Packages |combinação de |debian/control concatenado| | |distribuição/área/ |para pacotes binários | | |arquitectura-binário | | |--------------+---------------------+--------------------------| | |topo de cada | | |Sources |combinação de |debian/control concatenado| | |distribuição/área/ |para pacotes fonte | | |fonte | | +---------------------------------------------------------------+ No arquivo recente, estes meta-dados são armazenados como     ficheiros diferenciais e comprimidos para reduzir o tráfego de rede. 2.5.2. Ficheiro "Release" de nível de topo e autenticidade: Dica     O ficheiro "Release" no nível de topo é usado para assinar o arquivo sob o sistema secure APT. Cada suite do arquivo Debian tem um ficheiro "Release" no nível     de topo, p.e., "http://ftp.us.debian.org/debian/dists/unstable/ Release", como o seguinte: Origin: Debian Label: Debian Suite: unstable Codename: sid Date: Sat, 14 May 2011 08:20:50 UTC Valid-Until: Sat, 21 May 2011 08:20:50 UTC     Architectures: alpha amd64 armel hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sparc Components: main contrib non-free Description: Debian x.y Unstable - Not Released MD5Sum: bdc8fa4b3f5e4a715dd0d56d176fc789 18876880 Contents-alpha.gz 9469a03c94b85e010d116aeeab9614c0 19441880 Contents-amd64.gz 3d68e206d7faa3aded660dc0996054fe 19203165 Contents-armel.gz ... Nota Here, you can find my rationale to use the "suite", and     "codename" in Secção 2.1.4, “Básico do arquivos Debian”. The "distribution" is used when referring to both "suite" and "codename". All archive "area" names offered by the archive are listed under "Components". A integridade do ficheiro "Release" de nível de topo é verificada     pela infraestrutura criptográfica chamada secure apt (http:// wiki.debian.org/SecureApt) . * O ficheiro de assinatura criptográfica "Release.gpg" é criado a partir do ficheiro "Release" de nível de topo autenticado e da chave secreta do arquivo Debian. * A chave do arquivo Debian público pode ser semeada em "/etc/ apt/trusted.gpg"; o automaticamente ao instalar o chaveiro com o pacote     base-files mais recente, ou o manualmente pela ferramenta gpg ou apt-key com a chave de arquivo público mais recente publicada em ftp-master.debian.org (http://ftp-master.debian.org/) . * O sistema secure APT verifica a integridade do ficheiro "Release" de nível de topo descarregado criptograficamente por este ficheiro "Release.gpg" a pela chave de arquivo público Debian em "/etc/apt/trusted.gpg". A integridade de todos os ficheiros "Packages" e "Sources" é verificada utilizando valores MD5sum do ficheiro "Release" de     nível de topo. A integridade de todos os ficheiros de pacotes é verificada utilizando valores MD5sum nos ficheiros "Packages" e "Sources" Veja debsums(1) e Secção 2.4.2, “Verificação dos ficheiros pacotes instalados”. Since the cryptographic signature verification is a much more CPU intensive process than the MD5sum value calculation, use of MD5sum value for each package while using cryptographic signature     for the top level "Release" file provides the good security with the performance (http://www.infodrom.org/~joey/Writing/ Linux-Journal/secure-apt/) (see Secção 10.4, “Infraestrutura da segurança de dados”). 2.5.3. Ficheiros "Release" do nível de arquivo Dica     Os ficheiros "Release" do nível de arquivo são utilizados para a regra do apt_preferences(5). Existem ficheiros "Release" do nível de arquivo para todas as localizações do arquivo especificadas pela linha "deb" em "/etc/     apt/sources.list", tais como "http://ftp.us.debian.org/debian/ dists/unstable/main/binary-amd64/Release" ou "http:// ftp.us.debian.org/debian/dists/sid/main/binary-amd64/Release" conforme se segue: Archive: unstable Origin: Debian     Label: Debian Component: main Architecture: amd64 Cuidado Para a estrofe "Archive:" são utilizados os nomes de suite     ("stable", "testing" e "unstable", …) no arquivo Debian (http:// ftp.us.debian.org/debian/) enquanto que os nomes de código ("dapper", "feisty", "gutsy", "hardy" e "intrepid", …) são utilizados no arquivo Ubuntu (http://archive.ubuntu.com/ubuntu/) . Para alguns arquivos, tais como experimental, e squeeze-backports, que contêm pacotes que não devem ser     instalados automaticamente, existe uma linha extra, p.e., "http:/ /ftp.us.debian.org/debian/dists/experimental/main/binary-amd64/ Release" como se segue. Archive: experimental Origin: Debian     Label: Debian NotAutomatic: yes Component: main Architecture: amd64 Por favor note que para arquivos normais sem "NotAutomatic: yes", o valor Pin-Priority predefinido é 500, enquanto que para     arquivos especiais com "NotAutomatic: yes", o valor Pin-Priority predefinido é 1 (veja apt_preferences(5) e Secção 2.7.3, “Moldar a versão candidata”). 2.5.4. Obter os meta dados do pacote Quando as ferramentas do APT, como o aptitude, apt-get, synaptic, apt-file, auto-apt, … são utilizadas, nós precisamos de actualizar as cópias locais dos meta-dados que contêm a     informação do arquivo Debian. Estas cópias locais têm os seguintes nomes de ficheiros correspondentes aos nomes de distribuição, área, e arquitectura especificados em "/etc/apt/ sources.list" (veja Secção 2.1.4, “Básico do arquivos Debian”). * "/var/lib/apt/lists/ftp.us.debian.org_debian_dists_ _Release" * "/var/lib/apt/lists/ftp.us.debian.org_debian_dists_ _Release.gpg"     * "/var/lib/apt/lists/ftp.us.debian.org_debian_dists_ _<área>_binário-_Packages" * "/var/lib/apt/lists/ftp.us.debian.org_debian_dists_ _<área>_fonte_Sources" * "/var/cache/apt/apt-file/ftp.us.debian.org_debian_dists_ _Contents-.gz" (para o apt-file) First 4 types of files are shared by all the pertinent APT commands and updated from command line by "apt-get update" or     "aptitude update". The "Packages" meta data are updated if there is the "deb" line in "/etc/apt/sources.list". The "Sources" meta data are updated if there is the "deb-src" line in "/etc/apt/ sources.list". Os meta-dados "Packages" e "Sources" contêm a estrofe "Filename:" que aponta para a localização de ficheiro dos pacotes binários e     de código-fonte. Actualmente, estes pacotes estão localizados sob a árvore de directórios "pool/" para a transição melhorada através dos lançamentos. As cópias locais dos meta-dados "Packages" podem ser pesquisadas     interactivamente com a ajuda do aptitude. O comando de procura especializada grep-dctrl(1) pode pesquisar as cópias locais dos meta-dados "Packages" e "Sources". A cópia local dos meta-dados "Contents-" pode ser actualizada pelo "apt-file update" e a sua localização é     diferente dos outros 4. Veja apt-file(1). (O auto-apt utiliza localização diferente para a cópia local de "Contents- .gz" por predefinição.) 2.5.5. O estado dos pacote para o APT Além aos meta-dados obtidos remotamente, a ferramenta APT após o lenny armazena a sua informação de estado de instalação gerada     localmente em "/var/lib/apt/extended_states" que é utilizada por todas as ferramentas do APT para seguirem todos os pacotes auto-instalados. 2.5.6. O estado dos pacote para o aptitude Além aos meta-dados obtidos remotamente, o aptitude armazena a     sua informação de estado de instalação gerada localmente em "/var /lib/aptitude/pkgstates" que é usada apenas pelo próprio. 2.5.7. Copias locais dos pacotes obtidos     Todos os pacotes obtidos remotamente através do mecanismo APT são armazenados em "/var/cache/apt/archives" até que sejam limpos. This cache file cleaning policy for aptitude can be set under     "Options" → "Preferences" and it may be forced by its menu "Clean package cache" or "Clean obsolete files" under "Actions". 2.5.8. Nomes de ficheiros de pacotes Debian     Ficheiros de pacotes Debian têm estruturas de nomes particulares. Tabela 2.15. A estrutura de nomes dos pacotes Debian +---------------------------------------------------------------+ |tipo de pacote |estrutura de nomes | |---------------------------+-----------------------------------| |O pacote binário (a.k.a |_: | |deb) |-- | | |.deb | |---------------------------+-----------------------------------| |The binary package for |_: | |debian-installer (a.k.a |-- | |udeb) |.udeb | |---------------------------+-----------------------------------| |O pacote de código-fonte |_: |     |(código-fonte da origem) |- | | |.orig.tar.gz | |---------------------------+-----------------------------------| |O pacote de código-fonte |_: | |1.0 (alterações do Debian) |- | | |.diff.gz | |---------------------------+-----------------------------------| |O pacote de código-fonte |_: | |3.0 (quilt) (alterações do |- | |Debian) |.debian.tar.gz | |---------------------------+-----------------------------------| |O pacote de código-fonte |_: | |(descrição) |- | | |.dsc | +---------------------------------------------------------------+ Dica     Aqui apenas são descritos formatos de pacote fonte básicos. Veja mais em dpkg-source(1). Tabela 2.16. Os caracteres utilizáveis para cada componente nos nomes de pacotes Debian +------------------------------------------------------------+ |componente do nome|caracteres utilizáveis (regex)|existência| |------------------+------------------------------+----------| | |[a-z,A-Z,0-9,.,+,-]+ |necessário|     |------------------+------------------------------+----------| |: |[0-9]+: |opcional | |------------------+------------------------------+----------| | |[a-z,A-Z,0-9,.,+,-,:]+ |necessário| |------------------+------------------------------+----------| | |[a-z,A-Z,0-9,.,+,~]+ |opcional | +------------------------------------------------------------+ Nota     Pode verificar a ordem da versão de pacotes com o dpkg(1), p.e., "dpkg --compare-versions 7.0 gt 7.~pre1 ; echo $?" . Nota O debian-installer (d-i) (http://www.debian.org/devel/ debian-installer/) utiliza udeb como a extensão de ficheiro para     o seu pacote binário em vez do normal deb. Um pacote udeb é um pacote deb despido que remove alguns conteúdos não essenciais como a documentação para poupar espaço enquanto relaxa os requisitos de política do pacote. Ambos os pacotes deb e udeb partilham a mesma estrutura de pacote. O "u" significa micro. 2.5.9. O comando dpkg dpkg(1) é a ferramenta de mais baixo nível para a gestão de     pacotes Debian. É muito poderosa e tem que ser utilizada com cuidado.     Enquanto instala o pacote chamado "", o dpkg processa-o na seguinte ordem: 1. Desempacota o ficheiro deb (equivalente a "ar -x") 2. Executa ".preinst" utilizando o debconf(1)     3. Instala o conteúdo do pacote no sistema (equivalente a "tar -x") 4. Executa ".postinst" utilizando o debconf(1)     O sistema debconf disponibiliza interacção standard com o utilizador com suporte de I18N e L10N (Capítulo 8, I18N e L10N). Tabela 2.17. Ficheiros notáveis criados pelo dpkg +---------------------------------------------------------------+ |ficheiro |descrição dos conteúdos | |--------------------------+------------------------------------| |/var/lib/dpkg/info/ |lista de ficheiros de configuração. | |.conffiles|(modificável pelo utilizador) | |--------------------------+------------------------------------| |/var/lib/dpkg/info/ |lista de ficheiros e directórios | |.list |instalados pelo pacote | |--------------------------+------------------------------------| |/var/lib/dpkg/info/ |lista de valores de hash MD5 para os| |.md5sums |ficheiros instalados pelo pacote | |--------------------------+------------------------------------| |/var/lib/dpkg/info/ |package script to be run before the | |.preinst |package installation | |--------------------------+------------------------------------| |/var/lib/dpkg/info/ |package script to be run after the | |.postinst |package installation | |--------------------------+------------------------------------| |/var/lib/dpkg/info/ |package script to be run before the | |.prerm |package removal | |--------------------------+------------------------------------| |/var/lib/dpkg/info/ |package script to be run after the | |.postrm |package removal | |--------------------------+------------------------------------|     |/var/lib/dpkg/info/ |script de pacote para o sistema | |.config |debconf | |--------------------------+------------------------------------| |/var/lib/dpkg/alternatives|a informação alternativa usada pelo | |/ |comando update-alternatives | |--------------------------+------------------------------------| |/var/lib/dpkg/available |a informação de disponibilidade para| | |todos os pacotes | |--------------------------+------------------------------------| |/var/lib/dpkg/diversions |the diversions information used by | | |dpkg(1) and set by dpkg-divert(8) | |--------------------------+------------------------------------| | |the stat override information used | |/var/lib/dpkg/statoverride|by dpkg(1) and set by | | |dpkg-statoverride(8) | |--------------------------+------------------------------------| |/var/lib/dpkg/status |a informação de estado para todos os| | |pacotes | |--------------------------+------------------------------------| |/var/lib/dpkg/status-old |o backup de primeira geração do | | |ficheiro "var/lib/dpkg/status" | |--------------------------+------------------------------------| | |o backup de segunda geração e os | |/var/backups/dpkg.status* |mais antigos do ficheiro "var/lib/ | | |dpkg/status" | +---------------------------------------------------------------+     O ficheiro "status" também é utilizado por ferramentas como o dpkg(1), o "dselect update" e o "apt-get -u dselect-upgrade".     O comando especializado de busca grep-dctrl(1) pode procurar as cópias locais dos meta dados "status" e "available". Dica     No ambiente do debian-installer (http://www.debian.org/devel/ debian-installer/) , o comando udpkg é usado para abrir pacotes udeb. O comando udpkg é uma versão reduzida do comando dpkg. 2.5.10. The update-alternatives command O sistema Debian tem um mecanismo para instalar programas de certa maneira sobrepostos de um modo pacífico usando     update-alternatives(8). Por exemplo, você pode fazer o comando vi seleccionar o vim para executar enquanto instala ambos os pacotes vim e nvi. $ ls -l $(type -p vi) lrwxrwxrwx 1 root root 20 2007-03-24 19:05 /usr/bin/vi -> /etc/alternatives/vi $ sudo update-alternatives --display vi ... $ sudo update-alternatives --config vi     Selection Command ---------------------------------------------- 1 /usr/bin/vim *+ 2 /usr/bin/nvi Enter para manter a predefinição[*], ou escreva o número da selecção: 1 O sistema de alternativas do Debian mantêm a sua selecção como     links simbólicos em "/etc/alternatives/". O processo de selecção utiliza um ficheiro correspondente em "/var/lib/dpkg/alternatives /". 2.5.11. O comando dpkg-statoverride Stat overrides disponibilizados pelo comando dpkg-statoverride(8) são um modo de dizer ao dpkg(1) para usar um dono ou modo     diferente para um ficheiro quando um pacote for instalado. Se for especificado "--update" e o ficheiro existir é imediatamente definido para o novo dono e modo. Cuidado     A alteração directa do dono ou modo para um ficheiro cujo dono é o pacote usando os comandos chmod ou chown pelo administrador do sistema é reiniciada pela próxima actualização do pacote. Nota     Eu uso a palavra ficheiro aqui, mas na verdade pode ser qualquer objecto de sistema de ficheiros com que o dpkg lide, incluindo directórios, dispositivos, etc. 2.5.12. O comando dpkg-divert As diversões de ficheiros disponibilizadas pelo comando dpkg-divert(8) são um modo de forçar o dpkg(1) a não instalar um     ficheiro na sua localização predefinida, mas para uma localização divergida. Os uso do dpkg-divert destina-se aos scripts do responsável do pacote. A sua utilização casual pelo administrador do sistema está descontinuada. 2.6. Recuperação de um sistema danificado Quando corre o sistema unstable, espera-se que o administrador     saiba recuperar o sistema de situações de gestão de pacotes com conflitos. Cuidado     Alguns métodos descritos aqui são acções de alto risco. Você foi avisado! 2.6.1. Incompatibilidade com configuraçiões antigas de utilizador If a desktop GUI program experienced instability after significant upstream version upgrade, you should suspect     interferences with old local configuration files created by it. If it is stable under a newly created user account, this hypothesis is confirmed. (This is a bug of packaging and usually avoided by the packager.) Para recuperar a estabilidade, você deve mover os ficheiros de configuração locais correspondentes e reiniciar o programa GUI.     Você poderá ter que ler o conteúdo dos ficheiros de configuração antigos para mais tarde recuperar informação de configuração. (Não os apague muito depressa.) 2.6.2. Pacotes diferentes com ficheiros sobrepostos Os sistemas de gestão de pacotes a nível de arquivo, como o     aptitude(8) ou o apt-get(1), nem tentam instalar pacotes com ficheiros sobrepostos utilizando as dependências do pacote. (veja Secção 2.1.6, “Dependências de pacote”). Errors by the package maintainer or deployment of inconsistently mixed source of archives (see Secção 2.7.2, “Pacotes de fontes de arquivos misturados”) by the system administrator may create a     situation with incorrectly defined package dependencies. When you install a package with overlapped files using aptitude(8) or apt-get(1) under such a situation, dpkg(1) which unpacks package ensures to return error to the calling program without overwriting existing files. Cuidado A utilização de pacotes de terceiros introduz riscos     significantes ao sistema através dos scripts do desenvolvedor do pacote que são executados com privilégios de root e podem fazer o que quiserem ao seu sistema. O comando dpkg(1) apenas protege contra a sobreposição de ficheiros ao desempacotar.     Você pode contornar tal problema de instalação ao remover primeiro o pacote ofensivo antigo, .     $ sudo dpkg -P 2.6.3. Corrigir script problemático de pacote Quando um comando no script do pacote retorna erro por alguma razão e o script termina com erro, o sistema de gestão de pacotes     aborta a sua acção e termina com pacotes parcialmente instalados. Quando um pacote contém bugs nos seus scripts de remoção, o pacote pode tornar-se impossível de remover e isso é bastante desagradável.     Para o problema do script de pacote de "", você deve observar os seguintes scripts do pacote: * "/var/lib/dpkg/info/.preinst" * "/var/lib/dpkg/info/.postinst"     * "/var/lib/dpkg/info/.prerm" * "/var/lib/dpkg/info/.postrm"     Editar o script do pacote ofensivo a partir de root usando as seguintes técnicas: * desactivar a linha ofensiva ao preceder um "#"     * forçar um retorno com sucesso ao acrescentar a linha ofensiva com "|| true"     Configurar todos os pacotes parcialmente instalados com o seguinte comando.     # dpkg --configure -a 2.6.4. Recuperação com o comando dpkg Como o dpkg é uma ferramenta de pacotes de muito baixo nível,     pode funcionar sob situações muito más como um sistema que não arranca sem ligação a rede. Vamos assumir que o pacote foo está danificado e precisa de ser substituído. Você pode ainda encontrar cópias em cache de uma versão antiga livre de bugs do pacote foo no directório de cache de pacotes: "/     var/cache/apt/archives/". (se não, você pode descarregá-lo a partir do arquivo http://snapshot.debian.net/ (http:// snapshot.debian.net/) ou copiá-lo da cache de pacotes de uma máquina funcional.)     Se puder arrancar o sistema, você pode instalá-lo com o seguinte comando.     # dpkg -i /caminho/para/foo__.deb Dica     If system breakage is minor, you may alternatively downgrade the whole system as in <_emergency_downgrading>> using the higher level APT system.     Se o seu sistema não puder arrancar pelo disco rígido, você precisa procurar outras maneiras de arrancá-lo. 1. Arranque o sistema usando o CD de instalação de Debian (debian-installer) em modo de recuperação.     2. Monte o sistema danificado no disco rígido em "/target". 3. Instale uma versão antiga do pacote foo com o seguinte.     # dpkg --root /target -i /caminho/para/foo__.deb     Este exemplo funciona mesmo se o comando dpkg no disco rígido estiver danificado. Dica     Pode ser utilizado, de modo semelhante, para recuperar um sistema danificado qualquer sistema GNU/Linux arrancado de outro sistema no disco rígido, Live CD de GNU/Linux, por pen USB de arranque ou arranque pela rede. Se a tentativa de instalar um pacote deste modo falha devido a algumas violações de dependências e você necessitar realmente de fazer isto como último recurso, você pode sobrepor a dependência     utilizando a "--ignore-depends", "--force-depends" e outras opções do dpkg. Se fizer isto, você precisa de fazer um sério esforço para restaurar as dependências apropriadas mais tarde. Veja dpkg(8) para mais detalhes. Nota If your system is seriously broken, you should make a full backup     of system to a safe place (see Secção 10.1.6, “Salvaguarda (backup) e recuperação”) and should perform a clean installation. This is less time consuming and produces better results in the end. 2.6.5. Recuperar dados de selecção de pacotes Se por qualquer razão o "/var/lib/dpkg/status" ficar corrompido o     sistema Debian perde os dados de selecção de pacotes e sofre severamente. Procure o ficheiro antigo "/var/lib/dpkg/status" em "/var/lib/dpkg/status-old" ou "/var/backups/dpkg.status.*". Manter "/var/backups/" numa partição separada pode ser uma boa     ideia porque este directório contém muitos dados importantes do sistema . Em caso de sérios danos eu recomendo fazer uma instalação limpa após fazer a salvaguarda do sistema. Mesmo que tudo em "/var/"     esteja perdido, você ainda pode recuperar alguma informação dos directórios em "/usr/share/doc/" para o guiar na sua nova instalação.     Reinstalar o sistema mínimo (ambiente de trabalho).     # mkdir -p /caminho/para/sistema/antigo     Monte o sistema antigo em "/caminho/para/sistema/antigo/". # cd /caminho/para/sistema/antigo/usr/share/doc # ls -1 >~/ls1.txt     # cd /usr/share/doc # ls -1 >>~/ls1.txt # cd # sort ls1.txt | uniq | less     Então ser-lhe-ão apresentados nomes de pacotes para instalar. (Podem existir alguns nomes que não de pacotes como "texmf".) 2.7. Dicas para a gestão de pacotes 2.7.1. Como escolher os pacotes Debian Você pode procurar os pacotes que satisfaçam as suas necessidades     com o aptitude a partir da descrição do pacote ou a partir da lista "Tarefas". Quando encontrar mais de 2 pacotes semelhantes e não sabe qual     deles instalar sem o esforço de "teste e erro", você deve utilizar algum senso comum. Eu considero os seguintes pontos como boas indicações dos pacotes preferidos: * Essencial: sim > não * Area: main > contrib > non-free * Prioridade: required > important > standard > optional > extra * Tasks: pacotes listados em tarefas como "Ambiente de Trabalho" * Pacotes seleccionados pela dependência de pacote (p.e., python2.4 por python)     * Popcon: mais alto na votação e número de instalações * Changelog: actualizações regulares feitas pelo responsável do pacote * BTS: Nenhum bug RC (nenhum crítico, nenhum grave, e nenhum bug sério) * BTS: manutenção responsável dos relatórios de bugs * BTS: o maior número de bugs corrigidos recentemente * BTS: o menor número de bugs "não-lista-de-desejos" remanescentes Sendo o Debian um projecto voluntário com modelo de     desenvolvimento distribuído, o seu arquivo contém muitos pacotes com diferentes objectivos e qualidade. Você tem de tomar as suas próprias decisões sobre o que fazer com eles. 2.7.2. Pacotes de fontes de arquivos misturados Cuidado Instalar pacotes de fontes misturadas de arquivos não é suportado     pela distribuição oficial Debian excepto para combinações de arquivos oficialmente suportadas tais como a stable com security updates (http://www.debian.org/security/) e squeeze-updates (http://www.debian.org/News/2011/20110215) . Aqui está um exemplo de operações para incluir, uma vez, pacotes     específicos com novas versões da origem encontrados em unstable enquanto se acompanha a testing. 1. Altere o ficheiro "/etc/apt/sources.list" temporariamente para entrada única "unstable". 2. Corra "aptitude update".     3. Corra "aptitude install ". 4. Recupere o ficheiro "/etc/apt/sources.list" original para testing. 5. Corra "aptitude update". Você não cria o ficheiro "/etc/apt/preferences" nem precisa de se     preocupar com o apt-pinning com esta abordagem manual. Mas é muito incómoda. Cuidado Quando utiliza fontes misturadas de arquivos, você tem que assegurar por si próprio a compatibilidade dos pacotes pois     Debian não o garante. Se existir incompatibilidade de pacotes, você pode danificar o seu sistema. Você tem que ser capaz de julgar estes requisitos técnicos. A utilização de fontes misturadas de arquivos aleatórios é uma operação completamente opcional e a sua utilização não é algo que uu o encoraje a utilizar.     General rules for installing packages from different archives are the following. * Pacotes não-binários de ("Arquitecture: all") são mais seguro para instalar. o pacotes de documentação: sem requisitos especiais o pacotes de programa interpretador: tem de estar disponível interpretador compatível * Binary packages (non "Architecture: all") usually face many road blocks and are unsafe to install.     o compatibilidade de versão de biblioteca (incluindo a "libc") o compatibilidade de versão de programa utilitário relacionada o compatibilidade da ABI (http://en.wikipedia.org/wiki/ Application_binary_interface) do Kernel o Compatibilidade ABI (http://en.wikipedia.org/wiki/ Application_binary_interface) C++ o … Nota De modo a tornar um pacote seguro para instalar, alguns pacotes     de programas binários comerciais não-livres podem vir fornecidos com bibliotecas completamente ligadas estaticamente. Mesmo assim você deve verificar problemas de compatibilidade da ABI (http:// en.wikipedia.org/wiki/Application_binary_interface) e etc. com eles. Nota Excepto para evitar pacotes com problemas a curto prazo, instalar pacotes binários de arquivos não suportados oficialmente é     geralmente uma má ideia. Isto é verdadeiro mesmo que utilize apt-pinning (veja Secção 2.7.3, “Moldar a versão candidata”). Você deve considerar o chroot ou técnicas semelhantes (veja Secção 9.8, “Sistema virtualizado”) para correr programas de arquivos diferentes. 2.7.3. Moldar a versão candidata Sem o ficheiro "/etc/apt/preferences", o sistema APT escolhe a versão disponível mais recente com a versão candidata utilizando a string de versão. Este é o estado normal e a utilização     recomendada do sistema APT. Todas as combinações de arquivos oficialmente suportadas não necessitam do ficheiro "/etc/apt/ preferences" porque alguns arquivos que não devem ser utilizados como fonte automática de actualizações são marcados como NotAutomatic e são tratados de modo apropriado. Dica     A regra de comparação da string de versão pode ser verificada com, p.e., "dpkg --compare-versions ver1.1 gt ver1.1~1; echo $?" (veja dpkg(1)). Quando você instala regularmente pacotes de uma mistura de fontes de arquivos (veja Secção 2.7.2, “Pacotes de fontes de arquivos misturados”), você pode automatizar estas operações complicadas     ao criar o ficheiro "/etc/apt/preferences" com entradas apropriadas e moldando a regra de selecção de pacotes para a versão candidata como descrito em apt_preferences(5). A isto chama-se apt-pinning. Atenção     A utilização de apt-pinning por um utilizador novato é certamente pedir grandes problemas. Você deve evitar utilizar o apt-pinning excepto quando necessitar absolutamente dele. Cuidado     Quando utilizar apt-pinning, você próprio tem que assegurar a compatibilidade dos pacotes pois Debian não o garante. O apt-pinning é uma operação completamente opcional e a sua utilização não é algo que eu encoraje a fazer. Cuidado Archive level Release files (see Secção 2.5.3, “Ficheiros "Release" do nível de arquivo”) are used for the rule of apt_preferences(5). Thus apt-pinning works only with "suite" name     for normal Debian archives (http://ftp.us.debian.org/debian/dists /) and security Debian archives (http://security.debian.org/dists /) . (This is different from Ubuntu (http://www.ubuntu.com/) archives.) For example, you can do "Pin: release a=unstable" but can not do "Pin: release a=sid" in the "/etc/apt/preferences" file. Cuidado     Quando utilizar um arquivo não-Debian como parte de apt-pinning, você deve verificar ao que ele se destina e também verificar a sua credibilidade. Por exemplo, Ubuntu e Debian não se destinam a ser misturados. Nota     Mesmo que você não crie o ficheiro "/etc/apt/preferences", você pode fazer operações no sistema bastante complexas (veja Secção 2.6.4, “Recuperação com o comando dpkg” e Secção 2.7.2, “Pacotes de fontes de arquivos misturados”) sem o apt-pinning.     Aqui está uma explicação simplificada da técnica de apt-pinning. The APT system choses the highest Pin-Priority upgrading package from available package sources defined in the "/etc/apt/     sources.list" file as the candidate version package. If the Pin-Priority of the package is larger than 1000, this version restriction for upgrading is dropped to enable downgrading (see Secção 2.7.10, “Downgrade de emergência”). O valor Pin-Priority de cada pacote é definido por entradas     "Pin-Priority" no ficheiro "/etc/apt/preferences" ou utiliza o seu valor predefinido. Tabela 2.18. Lista de valores notáveis de Pin-Priority para a técnica de apt-pinning. +---------------------------------------------------------------+ |Pin-Priority|efeitos do apt-pinning no pacote | |------------+--------------------------------------------------| |1001 |instala o pacote mesmo que isto constitua uma | | |regressão na versão (downgrade) do pacote | |------------+--------------------------------------------------| |990 |utilizado como predefinição para o arquivo de | | |lançamento de destino | |------------+--------------------------------------------------|     |500 |utilizado por predefinição para o arquivo normal | |------------+--------------------------------------------------| |100 |utilizado como predefinição para os arquivos | | |NotAutomatic e ButAutomaticUpgrades | |------------+--------------------------------------------------| |100 |utilizado para o pacote instalado | |------------+--------------------------------------------------| |1 |utilizado como predefinição para o arquivo | | |NotAutomatic | |------------+--------------------------------------------------| |-1 |nunca instala o pacote mesmo que este seja | | |recomendado | +---------------------------------------------------------------+     O arquivo do lançamento alvo pode ser definido por diferentes métodos. * ficheiro de configuração "/etc/apt/apt.conf" com a linha "APT::Default-Release "stable";"     * opção de linha de comandos, p.e. "apt-get install -t testing algum-pacote" Os arquivos NotAutomatic e ButAutomaticUpgrades são definidos pelo servidor de arquivo que contêm no seu ficheiro Release do nível de arquivo (veja Secção 2.5.3, “Ficheiros "Release" do     nível de arquivo”) ambos "NotAutomatic: yes" e "ButAutomaticUpgrades: yes". O arquivo NotAutomatic é definido pelo servidor de arquivo que contém no seu ficheiro Release de nível de arquivo apenas "NotAutomatic: yes".     A situação de apt-pinning do de várias fontes de arquivos é mostrada por "apt-cache policy ". * Uma linha começada com "Package pin:" lista a versão do pacote de pin se estiver definida a associação apenas com o p.e., "Package pin: 0.190". * Não existe nenhuma linha com "Package pin:" se não estiver definida nenhuma associação apenas com . * O valor Pin-Priority associando ao é listado no lado     direito de todas as strings de versão, p.e., "0.181 700". * É listado "0" à direita de todas as strings de versão se nenhuma associação apenas com for definida, ex., "0.181 0". * Os valores Pin-Priority dos arquivos (definidos como "Package: *" no ficheiro "/etc/apt/preferences") são listados à esquerda dos caminhos dos arquivos, ex., "100 http:// ftp.XX.debian.org/debian/ squeeze-backports/main Packages". 2.7.4. Actualizações e Backports Existem os arquivos squeeze-updates (http://www.debian.org/News/     2011/20110215) e backports.debian.org (http:// backports.debian.org) que disponibilizam pacotes de actualização para stable (squeeze).     De modo a utilizar estes arquivos, liste todos os arquivos necessários no ficheiro "/etc/apt/sources.list" como se segue: deb http://ftp.us.debian.org/debian/ squeeze main contrib non-free     deb http://security.debian.org/ squeeze/updates main contrib deb http://ftp.us.debian.org/debian/ squeeze-updates main contrib non-free deb http://ftp.us.debian.org/debian/ squeeze-backports main contrib non-free Não há necessidade de definir valores específicos de Pin-Priority no ficheiro "/etc/apt/preferences". Quando os novos pacotes ficam     disponíveis, a configuração predefinida disponibiliza as actualizações mais razoáveis (veja Secção 2.5.3, “Ficheiros "Release" do nível de arquivo”). * Todos os pacotes antigos instalados são actualizados para mais recentes a partir de squeeze-updates.     * Apenas os pacotes antigos instalados manualmente a partir de squeeze-backports são actualizados para mais recentes a partir de squeeze-backports. Sempre que desejar instalar um pacote chamado ""     com as suas dependências a partir do arquivo squeeze-backports manualmente, utilize o seguinte comando enquanto muda o lançamento alvo com a opção "-t".     $ sudo apt-get install -t squeeze-backports 2.7.5. Bloquear pacotes instalados por "Recomendados" Se desejar não puxar determinados pacotes automaticamente através     de "Recommends", tem de criar o ficheiro "/etc/apt/preferences" e listar explicitamente esses pacotes no topo conforme se segue: Package: Pin: version * Pin-Priority: -1     Package: Pin: version * Pin-Priority: -1 2.7.6. Acompanhar testing com alguns pacotes de unstable Aqui está um exemplo de técnica de apt-pinning para incluir pacotes específicos de versão original mais recente encontrados     em unstable e actualizados regularmente enquanto de segue o testing. Liste todos os arquivos necessários no ficheiro "/etc/ apt/sources.list" conforme se segue: deb http://ftp.us.debian.org/debian/ testing main contrib non-free     deb http://ftp.us.debian.org/debian/ unstable main contrib non-free deb http://security.debian.org/ testing/updates main contrib     Configure o ficheiro "/etc/apt/preferences" como o seguinte: Package: *     Pin: release a=unstable Pin-Priority: 100 When you wish to install a package named "" with     its dependencies from unstable archive under this configuration, you issue the following command which switches target release with "-t" option (Pin-Priority of unstable becomes 990).     $ sudo apt-get install -t unstable Com esta configuração, a execução usual de "apt-get upgrade" e "apt-get dist-upgrade" (ou "aptitude safe-upgrade" e "aptitude     full-upgrade") actualiza os pacotes que foram instalados a partir do arquivo testing usando o arquivo testing actual e os pacotes que foram instalados a partir do arquivo unstable usando o arquivo unstable actual. Cuidado     Tenha cuidado para não remover a entrada "testing" do ficheiro "/ etc/apt/sources.list". Sem a entrada "testing" lá, o sistema APT actualiza os pacotes do novo arquivo unstable. Dica Geralmente edito o ficheiro "/etc/apt/sources.list" para comentar     a entrada do arquivo "unstable" logo após a operação acima. Isto evita a lentidão do processo de actualização ao ter demasiadas entradas no ficheiro "/etc/apt/sources.list" embora isto impeça a actualização dos pacotes que foram instalados a partir do arquivo unstable utilizando o arquivo unstable actual. Dica If "Pin-Priority: 1" is used instead of "Pin-Priority: 100" in     the "/etc/apt/preferences" file, already installed packages having Pin-Priority value of 100 are not upgraded by unstable archive even if "testing" entry in the "/etc/apt/sources.list" file is removed. Se desejar acompanhar pacotes particulares em unstable     automaticamente sem uma instalação inicial "-t unstable", tem de criar o ficheiro "/etc/apt/preferences" e listar explicitamente todos esses pacotes no topo conforme se segue: Package: Pin: release a=unstable Pin-Priority: 700     Package: Pin: release a=unstable Pin-Priority: 700 Estes definem o valor Pin-Priority para cada pacote específico.     Por exemplo, de modo a acompanhar a versão unstable mais recente deste "Debian Reference" em Português, você deve ter as seguintes entradas no ficheiro "/etc/apt/preferences". Package: debian-reference-pt Pin: release a=unstable Pin-Priority: 700     Package: debian-reference-common Pin: release a=unstable Pin-Priority: 700 Dica     Esta técnica de apt-pinning é válida mesmo se você estiver a seguir o arquivo stable. Pela minha experiência e até agora, os pacotes de documentação sempre foram seguros de instalar a partir do arquivo unstable. 2.7.7. Acompanhar unstable com alguns pacotes de experimental Aqui está outro exemplo de técnica de apt-pinning para incluir pacotes de versão de origem mais recentes encontrados em     experimental enquanto se segue unstable. Você lista todos os arquivos necessários no ficheiro "/etc/apt/sources.list" conforme o seguinte: deb http://ftp.us.debian.org/debian/ unstable main contrib non-free     deb http://ftp.us.debian.org/debian/ experimental main contrib non-free deb http://security.debian.org/ testing/updates main contrib O valor Pin-Priority predefinido para o arquivo experimental é sempre 1 (<<100) porque é um arquivo NotAutomatic (veja Secção 2.5.3, “Ficheiros "Release" do nível de arquivo”). Não é     necessário definir o valor Pin-Priority explicitamente no ficheiro "/etc/apt/preferences" apenas para usar o arquivo experimental a menos que deseje seguir pacotes particulares nele automaticamente para a próxima actualização. 2.7.8. Descarga e actualização automática de pacotes O pacote apt vem com o seu próprio script de cron "/etc/ cron.daily/apt" para suportar a descarga automática de pacotes. Este script pode ser melhorado para executar a actualização     automática de pacotes ao instalar o pacote unattended-upgrades. Esta pode ser personalizada por parâmetros em "/etc/apt/ apt.conf.d/02backup" e "/etc/apt/apt.conf.d/ 50unattended-upgrades" conforme descrito em "/usr/share/doc/ unattended-upgrades/README". O pacote unattended-upgrades destina-se principalmente para as actualizações de segurança do sistema stable. Se o risco de danificar um sistema stable existente pelas actualizações     automáticas for menor do que ser danificado por um intruso que usa buracos de segurança que foram fechados por actualizações de segurança, você deve considerar usar estas actualizações automáticas com parâmetros de configuração como os que se seguem. APT::Periodic::Update-Package-Lists "1";     APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::Unattended-Upgrade "1"; Se estiver a correr um sistema unstable, não vai querer utilizar as actualizações automáticas pois um dia, com certeza, irão     danificar o seu sistema. Mesmo para casos de unstable, você pode ainda querer descarregar os pacotes com antecedência para poupar tempo na actualização interactiva com parâmetros de configuração como os que se seguem. APT::Periodic::Update-Package-Lists "1";     APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::Unattended-Upgrade "0"; 2.7.9. Limitar a largura de banda de descarga para o APT Se desejar limitar a largura de banda para o APT para, por     exemplo, 800Kib/sec (=100kiB/sec), deve configurar o APT e o seu parâmetro de configuração conforme o seguinte.     APT::Acquire::http::Dl-Limit "800"; 2.7.10. Downgrade de emergência Cuidado Downgrading is not officially supported by the Debian by design.     It should be done only as a part of emergency recovery process. Despite of this situation, it is known to work well in many incidents. For critical systems, you should backup all important data on the system after the recovery operation and re-install the new system from the scratch. Você pode ter sorte ao fazer o downgrade de uma arquivo recente para um arquivo mais antigo para recuperar de uma actualização ao sistema que o deixou danificado ao manipular a versão candidata     (veja Secção 2.7.3, “Moldar a versão candidata”). Esta é uma alternativa preguiçosa às acções tediosas de muitos comandos "dpkg -i _.deb" (veja Secção 2.6.4, “Recuperação com o comando dpkg”).     Procure as linhas no ficheiro "/etc/apt/sources.list" que acompanham unstable como se segue.     deb http://ftp.us.debian.org/debian/ sid main contrib non-free     Substitua-as de modo a acompanharem testing.     deb http://ftp.us.debian.org/debian/ wheezy main contrib non-free     Altere o ficheiro "/etc/apt/preferences" como o seguinte. Package: *     Pin: release a=testing Pin-Priority: 1010     Run "apt-get update; apt-get dist-upgrade" to force downgrading of packages across the system.     Remova este ficheiro especial "/etc/apt/preferences" após este downgrade de emergência. Dica It is a good idea to remove (not purge!) as much packages to     minimize dependency problems. You may need to manually remove and install some packages to get system downgraded. Linux kernel, bootloader, udev, PAM, APT, and networking related packages and their configuration files require special attention. 2.7.11. Quem fez o upload do pacote? Apesar do nome do responsável listado em "/var/lib/dpkg/ available" e "/usr/share/doc/package_name/changelog" fornecer     alguma informação sobre "quem está por detrás a actividade de empacotamento", quem faz o upload real do pacote é um tanto obscuro. O who-uploads(1) no pacote devscripts identifica quem foi o uploader real dos pacotes fonte Debian. 2.7.12. O pacote equivs Se vai compilar um programa a partir do código-fonte para     substituir um pacote Debian, o melhor é torná-lo num pacote local realmente 'debianizado' (*.deb) e utilizar um arquivo privado. Se escolher compilar um programa de fonte e instalá-lo sob "/usr/     local", pode necessitar de utilizar o equivs como último recurso para satisfazer as dependências em falta para o pacote. Package: equivs Priority: extra     Section: admin Description: Engana as dependências de pacotes Debian Este é um pacote dummy que pode ser usado para criar pacotes Debian, que apenas contêm informação de dependências. 2.7.13. Portar um pacote para o sistema stable Para actualizações parciais do sistema stable, é desejável     reconstruir um pacote dentro do seu ambiente utilizando um pacote de código-fonte. Isto evita actualizações maciças de pacotes devido às suas dependências.     Adicione as seguintes entradas ao "/etc/apt/sources.list" de um sistema stable.     deb-src http://http.us.debian.org/debian unstable main contrib non-free     Instale os pacotes necessários para a compilação e descarregue o pacote de código-fonte conforme o seguinte: # apt-get update # apt-get dist-upgrade     # apt-get install fakeroot devscripts build-essential $ apt-get build-dep foo $ apt-get source foo $ cd foo*     Update some tool chain packages such as dpkg, and debhelper from the backport packages if they are required for the backporting.     Execute o seguinte.     $ dch -i     Aumentar a versão do pacote, p.e. um com "+bp1" acrescentado em "debian/changelog"     Compile os pacotes e instale-os para o sistema com o seguinte: $ debuild     $ cd .. # debi foo*.changes 2.7.14. Servidor proxy para o APT Como colocar em mirror uma sub-secção inteira do arquivo Debian é um desperdício de espaço de disco e largura de banda de rede, a implantação se um servidor proxy local para o APT é desejável tendo em consideração se administrar muitos sistemas em LAN (http://en.wikipedia.org/wiki/Local_area_network) . O APT pode     ser configurado para utilizar servidores proxy web genéricos (http) como o squid (veja Secção 6.10, “Outras aplicações de servidor de rede”) conforme descrito em apt.conf(5) e em "/usr/ share/doc/apt/examples/configure-index.gz". A variável de ambiente $http_proxy" pode ser utilizada para sobrepor a definição de servidor proxy do ficheiro "/etc/apt/apt.conf".     Existem ferramentas de proxy especiais para o arquivo Debian. Você deve verificar o BTS antes de as utilizar. Tabela 2.19. Lista de ferramentas proxy especiais para arquivos Debian +--------------------------------------------------------------------------+ |pacote |popcon |tamanho |descrição | |-------------------+--------------+----------------------+----------------| | | | |servidor proxy | | | | |de cache para | | |V:1, I:2 | |ficheiros de | |approx (http:// |(http:// |3489 (http:// |arquivo Debian | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|(programa OCaml | |/sid/approx) |popcon.php? |/a/approx.html) |(http:// | | |package= | |en.wikipedia.org| | |approx) | |/wiki/ | | | | |Objective_Caml) | | | | |compilado) | |-------------------+--------------+----------------------+----------------| | |V:1, I:2 | |Proxy de cache | |apt-cacher (http://|(http:// |313 (http:// |para pacotes |     |packages.debian.org|qa.debian.org/|packages.qa.debian.org|Debian e | |/sid/apt-cacher) |popcon.php? |/a/apt-cacher.html) |ficheiros de | | |package= | |código-fonte | | |apt-cacher) | |(programa Perl) | |-------------------+--------------+----------------------+----------------| | |V:4, I:6 | |Proxy de cache | |apt-cacher-ng |(http:// | |para | |(http:// |qa.debian.org/|1180 (http:// |distribuição de | |packages.debian.org|popcon.php? |packages.qa.debian.org|pacotes de | |/sid/apt-cacher-ng)|package= |/a/apt-cacher-ng.html)|software | | |apt-cacher-ng)| |(programa C++ | | | | |compilado) | |-------------------+--------------+----------------------+----------------| | |V:0, I:0 | | | |debtorrent (http://|(http:// |1185 (http:// |BitTorrent proxy| |packages.debian.org|qa.debian.org/|packages.qa.debian.org|for downloading | |/sid/debtorrent) |popcon.php? |/d/debtorrent.html) |Debian packages | | |package= | |(Python program)| | |debtorrent) | | | +--------------------------------------------------------------------------+ Cuidado Quando Debian reorganiza a estrutura do seu arquivo, estas     ferramentas de proxy especializadas tendem a necessitar ser reescritas de pelo responsável do pacote e podem não estar funcionais durante algum tempo. Por outro lado, os servidores proxy web (http) genéricos são mais robustos e mais fáceis de acompanhar estas mudanças. 2.7.15. Pequeno arquivo de pacotes público Aqui está um exemplo para criar um pequeno arquivo de pacotes     público compatível com o moderno sistema secure APT (veja Secção 2.5.2, “Ficheiro "Release" de nível de topo e autenticidade:”). Vamos assumir algumas coisas: * nome da conta: "foo" * Nome da máquina: "www.example.com"     * Pacotes necessários: apt-utils, gnupg, e outros pacotes * URL: "http://www.example.com/~foo/" ( → "/home/foo/ public_html/index.html") * Arquitectura de pacotes: "amd64"     Crie uma chave de arquivo APT de Foo no seu sistema servidor como o seguinte: $ ssh foo@www.example.com $ gpg --gen-key ... $ gpg -K     ... sec 1024D/3A3CB5A6 2008-08-14 uid Foo (ARCHIVE KEY) ssb 2048g/6856F4A7 2008-08-14 $ gpg --export -a 3A3CB5A6 >foo.public.key     Publique o ficheiro de chave de arquivo "foo.public.key" com o ID de chave "3A3CB5A6" para Foo     Crie uma árvore de arquivo chamada "Origin: Foo" como o seguinte: $ umask 022 $ mkdir -p ~/public_html/debian/pool/main $ mkdir -p ~/public_html/debian/dists/unstable/main/binary-amd64 $ mkdir -p ~/public_html/debian/dists/unstable/main/source $ cd ~/public_html/debian $ cat > dists/unstable/main/binary-amd64/Release << EOF Archive: unstable Version: 4.0 Component: main Origin: Foo Label: Foo Architecture: amd64 EOF $ cat > dists/unstable/main/source/Release << EOF Archive: unstable Version: 4.0 Component: main Origin: Foo Label: Foo Architecture: source EOF $ cat >aptftp.conf <aptgenerate.conf < "www.exemplo.com", method => "scpb", incoming => "/home/foo/public_html/debian/pool/main", # The dinstall on ftp-master sends emails itself dinstall_runs => 1, };     $cfg{'foo'}{postupload}{'changes'} = " echo 'cd public_html/debian ; apt-ftparchive generate -c=aptftp.conf aptgenerate.conf; apt-ftparchive release -c=aptftp.conf dists/unstable >dists/unstable/Release ; rm -f dists/unstable/Release.gpg ; gpg -u 3A3CB5A6 -bao dists/unstable/Release.gpg dists/unstable/Release'| ssh foo@www.exemplo.com 2>/dev/null ; echo 'Arquivo pacote criado!'";     O script hook postupload inicializado pelo dupload(1) cria ficheiros de arquivo actualizados para cada upload.     Pode adicionar este pequeno arquivo público à linha de apt do sistema cliente com o seguinte: $ sudo bash     # echo "deb http://www.example.com/~foo/debian/ unstable main" \ >> /etc/apt/sources.list # apt-key add foo.public.key Dica     Se o arquivo estiver localizado no sistema de ficheiros local, então pode utilizar antes "deb file:///home/foo/debian/ …" 2.7.16. Gravar e copiar a configuração do sistema     Você pode criar um cópia local do estado de selecção de pacotes e debconf com o seguinte:     # dpkg --get-selections '*' > selection.dpkg # debconf-get-selections > selection.debconf     Aqui, "*" faz com que "selection.dpkg" também inclua entradas de pacotes para "purgar".     Você pode transferir estes 2 ficheiros para outro computador e instalá-los lá com o seguinte. # dselect update     # debconf-set-selections < minha_selecção.debconf # dpkg --set-selections < minha_selecção.dpkg # apt-get -u dselect-upgrade # ou dselect install Se está a pensar em gerir muitos servidores num cluster com     praticamente a mesma configuração, você deve considerar utilizar um pacote especializado como o fai para gerir o sistema completo. 2.7.17. Converter e instalar um pacote binário alienígena O alien(1) permite a conversão de pacotes binários disponibilizados em formatos de ficheiro rpm da Red Hat, slp da Stampede, tgz de Slackware e pkg de Solaris num pacote deb     Debian.Se quiser utilizar um pacote de outra distribuição de Linux em vez daquele que tem instalado no seu sistema, pode utilizar o alien para convertê-lo a partir do seu formato de pacote preferido e instala-lo. O alien também suporta pacotes LSB. Atenção alien(1) should not be used to replace essential system packages,     such as sysvinit, libc6, libpam-modules, etc. Practically, alien (1) should only be used for non-free binary-only packages which are LSB compliant or statically linked. For free softwares, you should use their source packages to make real Debian packages. 2.7.18. Extrair um pacote sem o dpkg O conteúdo actual dos pacotes "*.deb" pode ser extraído sem     utilizar o dpkg(1) em qualquer ambiente estilo Unix (http:// en.wikipedia.org/wiki/Unix-like) utilizando os ar(1) e tar(1) standard. # ar x /path/to/dpkg__.deb # ls total 24 -rw-r--r-- 1 bozo bozo 1320 2007-05-07 00:11 control.tar.gz     -rw-r--r-- 1 bozo bozo 12837 2007-05-07 00:11 data.tar.gz -rw-r--r-- 1 bozo bozo 4 2007-05-07 00:11 debian-binary # mkdir control # mkdir data # tar xvzf control.tar.gz -C control # tar xvzf data.tar.gz -C data     Também pode explorar o conteúdo de um pacote utilizando o comando mc. 2.7.19. Mais leituras sobre a gestão de pacotes     Você pode aprender mais sobre a gestão de pacotes a partir das seguintes documentações. * Documentações principais sobre a gestão de pacotes: o aptitude(8), dpkg(1), tasksel(8), apt-get(8), apt-config (8), apt-key(8), sources.list(5), apt.conf(5), e apt_preferences(5); o "/usr/share/doc/apt-doc/guide.html/index.html" e "/usr/ share/doc/apt-doc/offline.html/index.html" do pacote apt-doc; e o "/usr/share/doc/aptitude/html/en/index.html" do pacote aptitude-doc-en. * Documentações oficiais e detalhadas no arquivo Debian:     o "Manual de Política Debian Capítulo 2 - O Arquivo Debian" (http://www.debian.org/doc/debian-policy/ch-archive) , o "Referência dos Programadores de Debian, Capítulo 4 - Recursos para Programadores de Debian 4.6 O Arquivo Debian" (http://www.debian.org/doc/manuals/ developers-reference/resources.html#archive) , e o "The Debian GNU/Linux FAQ, Chapter 6 - The Debian FTP archives" (http://www.debian.org/doc/FAQ/ch-ftparchives) . * Tutorial para construir um pacote Debian para utilizadores de Debian: o "Guia dos Novos Maintainers de Debian" (http:// www.debian.org/doc/manuals/maint-guide/) . Capítulo 3. A inicialização do sistema É inteligente para si como o administrador do sistema ter uma ideia como o sistema Debian é arranca e é configurado. Apesar dos     detalhes exactos estarem nos ficheiros de código-fonte dos pacotes instalados e nas suas documentações, é um pouco exagerado para a maioria de nós. Eu fiz o meu melhor para disponibilizar uma visão geral breve dos pontos chave do sistema Debian a da sua configuração para sua referência, baseando-me em conhecimentos actuais e anteriores     meus e de outros. Como o sistema Debian é um alvo em movimento, a situação sobre o sistema pode ter mudado. Antes da fazer quaisquer alterações ao sistema, você deve consultar a documentação mais recente de cada pacote. 3.1. Uma visão geral do processo de arranque O sistema do computador passa por várias fases de processos de     arranque (http://en.wikipedia.org/wiki/Booting) desde o ligar da energia até que oferece, ao utilizador, o sistema operativo (SO) totalmente funcional.     Para simplicidade, eu limito a discussão à plataforma PC típico com a instalação por omissão. O processo típico de arranque é como um foguete de quatro etapas.     Cada etapa do foguete entrega o controle do sistema à próxima etapa. * Secção 3.2, “Estágio 1: a BIOS” * Secção 3.3, “Estágio 2: o gestor de arranque”     * Secção 3.4, “Estágio 3: o mini-sistema Debian” * Secção 3.5, “Estágio 4: o sistema Debian normal” É claro que, estes podem ser configurados de modo diferente. Por exemplo, se você compilou o seu próprio kernel, você pode estar a     saltar o passo com o mini sistema Debian. Portanto por favor não assuma que é este o caso para o seu sistema até que o verifique por si próprio. Nota Para uma plataforma de PC não-legacy como o sistema SUN ou o     Macintosh, a BIOS em ROM e o particionamento do disco podem ser bastante diferentes (Secção 9.3.2, “Configuração das partições do disco”). Por favor procure noutro lado a documentação específica da plataforma para tais casos. 3.2. Estágio 1: a BIOS A BIOS (http://en.wikipedia.org/wiki/BIOS) é o 1ª etapa do processo de arranque que é iniciado com o evento de ligar a energia. A BIOS (http://en.wikipedia.org/wiki/BIOS) que reside na     read only memory (ROM) (http://en.wikipedia.org/wiki/ Read-only_memory) é executada a partir de um endereço de memória particular no qual o contador de programa da CPU é inicializado pelo evento de ligar a energia. Esta BIOS executa a inicialização básica do hardware (POST: power on self test (http://en.wikipedia.org/wiki/Power-on_self-test) )     e entrega o controle do sistema ao próximo passo que você disponibiliza. A BIOS é normalmente disponibilizada com o hardware. O ecrã de arranque da BIOS geralmente indica que tecla(s) pressionar para entrar no ecrã de configuração da BIOS para configurar o comportamento da BIOS. As teclas populares são F1,     F2, F10, Esc, Ins, e Del. Se o seu ecrã de arranque da BIOS está escondido por um vistoso ecrã gráfico, você pode pressionar algumas teclas como a Esc para o desactivar. Estas teclas dependem fortemente do hardware. A localização do hardware e prioridade do código iniciado pela BIOS pode ser selecionado no ecrã de configuração da BIOS.     Tipicamente, os primeiros poucos sectores do primeiro dispositivo seleccionado encontrado (disco rígido, disquete, CD-ROM, ...) são carregados para a memória e este código inicial é executado. Este código inicial pode ser um dos seguintes: * O código do gestor de arranque * O código de kernel do SO da idade da pedra como o FreeDOS     (http://www.freedos.org/) * O código do kernel do SO de destino se ele couber neste pequeno espaço Tipicamente, o sistema é arrancado a partir da partição especificada das partições do disco rígido principal. Os primeiros 2 sectores do disco rígido em PCs legacy contêm o     master boot record (MBR) (http://en.wikipedia.org/wiki/ Master_boot_record) . A informação de partições do disco incluindo a selecção de arranque é gravada no final deste MBR. O código do primeiro gestor de arranque executado pela BIOS ocupa o resto deste MBR. 3.3. Estágio 2: o gestor de arranque O gestor de arranque (http://en.wikipedia.org/wiki/Boot_loader) é o 2º estágio do processo de arranque que é iniciado pela BIOS. Ele carrega a imagem de kernel do sistema e a imagem initrd     (http://en.wikipedia.org/wiki/Initrd) para a memória e passa o controle para eles. Esta imagem initrd é a imagem do sistema de ficheiros raiz e o seu suporte depende do gestor de arranque utilizado. O sistema Debian normalmente usa o kernel Linux como kernel predefinido do sistema. A imagem initrd para o kernel Linux 2.6     actual é tecnicamente a initramfs (sistema de ficheiros de RAM inicial). A imagem initramfs é um arquivo de ficheiros cpio gzipado no sistema de ficheiros raiz. A instalação predefinida do sistema Debian coloca código da primeira etapa do gestor de arranque GRUB no MBR (http://     en.wikipedia.org/wiki/Master_boot_record) para a plataforma PC. Existem muitos gestores de arranque e opções de configuração disponíveis. Tabela 3.1. Lista de gestores de arranque +----------------------------------------------------------------------------------------------------------------------+ |pacote |popcon |tamanho |initrd |gestor de arranque |descrição | |-------------------+---------------+----------------------+---------+--------------------------+----------------------| | | | | | |É suficientemente | |grub-legacy (http:/|V:0, I:5 (http:| | | |inteligente para | |/ |//qa.debian.org|1747 (http:// | |GRUB Legacy (http:// |compreender partições | |packages.debian.org|/popcon.php? |packages.qa.debian.org|Suportado|en.wikipedia.org/wiki/ |de disco e sistemas de| |/sid/grub-legacy) |package= |/g/grub-legacy.html) | |GNU_GRUB) |ficheiros como vfat, | | |grub-legacy) | | | |ext3, ... | | | | | | |(predefinição em lenny| |-------------------+---------------+----------------------+---------+--------------------------+----------------------| | |V:65, I:855 | | | |É suficientemente | |grub-pc (http:// |(http:// |550 (http:// | |GRUB 2 (http:// |inteligente para | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|Suportado|en.wikipedia.org/wiki/ |compreender partições | |/sid/grub-pc) |popcon.php? |/g/grub-pc.html) | |GNU_GRUB) |de disco e sistemas de| | |package= | | | |ficheiros como vfat, | | |grub-pc) | | | |ext3, ... | |-------------------+---------------+----------------------+---------+--------------------------+----------------------| |grub-rescue-pc |V:0, I:3 (http:|4477 (http:// | | |Isto são imagens de | |(http:// |//qa.debian.org|packages.qa.debian.org| |GRUB 2 (http:// |arranque de | |packages.debian.org|/popcon.php? |/g/ |Suportado|en.wikipedia.org/wiki/ |recuperação do GRUB 2 | |/sid/ |package= |grub-rescue-pc.html) | |GNU_GRUB) |(CD ou disquete) | |grub-rescue-pc) |grub-rescue-pc)| | | |(Versão PC/BIOS) | |-------------------+---------------+----------------------+---------+--------------------------+----------------------| | |V:1, I:11 | | | |Isto baseia-se nas | |lilo (http:// |(http:// |594 (http:// | |Lilo (http:// |localizações de | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|Suportado|en.wikipedia.org/wiki/ |sectores de dados no | |/sid/lilo) |popcon.php? |/l/lilo.html) | |LILO_(boot_loader)) |disco rígido. (Antigo)| | |package=lilo) | | | | |     |-------------------+---------------+----------------------+---------+--------------------------+----------------------| | |V:12, I:92 | | | | | |syslinux (http:// |(http:// |134 (http:// | |Isolinux (http:// |Isto compreende o | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|Suportado|en.wikipedia.org/wiki/ |sistema de ficheiros | |/sid/syslinux) |popcon.php? |/s/syslinux.html) | |SYSLINUX) |ISO9660. É utilizado | | |package= | | | |pelo CD de arranque. | | |syslinux) | | | | | |-------------------+---------------+----------------------+---------+--------------------------+----------------------| | |V:12, I:92 | | | |Isto compreende o | | |(http:// | | | |sistema de ficheiros | |syslinux (http:// |qa.debian.org/ |134 (http:// | |Syslinux (http:// |MSDOS (FAT) (http:// | |packages.debian.org|popcon.php? |packages.qa.debian.org|Suportado|en.wikipedia.org/wiki/ |en.wikipedia.org/wiki/| |/sid/syslinux) |package= |/s/syslinux.html) | |SYSLINUX) |File_Allocation_Table)| | |syslinux) | | | |. É utilizado pela | | | | | | |disquete de arranque. | |-------------------+---------------+----------------------+---------+--------------------------+----------------------| | |V:0, I:2 (http:| | | | | |loadlin (http:// |//qa.debian.org|105 (http:// | |Loadlin (http:// |Novo sistema é | |packages.debian.org|/popcon.php? |packages.qa.debian.org|Suportado|en.wikipedia.org/wiki/ |iniciado a partir do | |/sid/loadlin) |package= |/l/loadlin.html) | |Loadlin) |sistema FreeDOS/MSDOS.| | |loadlin) | | | | | |-------------------+---------------+----------------------+---------+--------------------------+----------------------| | | | | | |Isto é software livre | | |V:2, I:21 | | | |que substitui o MBR | |mbr (http:// |(http:// |72 (http:// | |MBR por Neil Turton (http:|(http:// | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|Não |// |en.wikipedia.org/wiki/| |/sid/mbr) |popcon.php? |/m/mbr.html) |suportado|www.chiark.greenend.org.uk|Master_boot_record) do| | |package=mbr) | | |/~neilt/) |MSDOS. Apenas | | | | | | |compreende partições | | | | | | |de disco. | +----------------------------------------------------------------------------------------------------------------------+ Atenção Não brinque com os gestores de arranque sem ter discos de     arranque de recuperação (CD ou disquete) criados a partir de imagens do pacote grub-rescue-pc. Torna-o capaz de arrancar o seu sistema mesmo sem um gestor de arranque funcional no disco rígido. Para o GRUB Legacy, o ficheiro de configuração do menu está     localizado em "/boot/grub/menu.lst". Por exemplo, tem entradas como a seguinte. title Debian GNU/Linux     root (hd0,2) kernel /vmlinuz root=/dev/hda3 ro initrd /initrd.img Para o GRUB 2, o ficheiro de configuração do menu está localizado em "/boot/grub/grub.cfg". É gerado automaticamente pelo "/usr/     sbin/update-grub" utilizando modelos de "/etc/grub.d/*" e definições de "/etc/default/grub". Por exemplo, tem entradas como as que se seguem: menuentry "Debian GNU/Linux" { set root=(hd0,3)     linux /vmlinuz root=/dev/hda3 initrd /initrd.img }     Para estes exemplos, estes parâmetros do GRUB significam o seguinte. Tabela 3.2. O significado dos parâmetros do GRUB +---------------------------------------------------------------+ |Parâmetro|significado | |do GRUB | | |---------+-----------------------------------------------------| | |utiliza a 3ª partição no disco primário ao defini-la | |root |como "(hd0,2)" no GRUB Legacy ou como "(hd0,3)" no |     | |GRUB 2 | |---------+-----------------------------------------------------| |kernel |utiliza o kernel localizado em "/vmlinuz" com | | |parâmetro de kernel: "root=/dev/hda3 ro" | |---------+-----------------------------------------------------| | |utiliza a imagem initrd/initramfs (http:// | |initrd |en.wikipedia.org/wiki/Initrd) localizada em "/ | | |initrd.img" | +---------------------------------------------------------------+ Nota     O valor do número de partição utilizado pelo programa GRUB legacy é menos um que o normal usado pelo kernel Linux e ferramentas utilitárias. O programa GRUB 2 corrige este problema. Dica Pode ser utilizado o UUID (http://en.wikipedia.org/wiki/     Universally_Unique_Identifier) (veja Secção 9.3.3, “Aceder a partição usando UUID”) para identificar um dispositivo especial de bloco em vez do seu nome de ficheiro como "/dev/hda3", ex. "root=UUID=81b289d5-4341-4003-9602-e254a17ac232 ro". Dica     Você pode iniciar um gestor de arranque a partir de outro gestor de arranque utilizando técnicas chamadas chain loading (http:// en.wikipedia.org/wiki/Chain_loading) .     Veja "info grub" e grub-install(8). 3.4. Estágio 3: o mini-sistema Debian O mini-sistema Debian é o 3º estágio do processo de arranque que     é iniciado pelo gestor de arranque. Corre o kernel do sistema com o seu sistema de ficheiros raiz na memória. Este é um estágio preparatório opcional do processo de arranque. Nota O termo "mini-sistema Debian" é cunhado pelo autor para descrever     este 3º estágio do processo de arranque para este documento. Este sistema é geralmente referido como o initrd (http:// en.wikipedia.org/wiki/Initrd) ou sistema initramfs. É utilizado pelo Instalador de Debian (http://www.debian.org/devel/ debian-installer/) um sistema semelhante em memória . O script "/init" é executado como o primeiro programa neste sistema de ficheiros raiz em memória. É um programa script de shell que inicializa o kernel no espaço de utilizador e entrega o     controle ao próximo estágio. Este mini-sistema Debian oferece flexibilidade ao processo de arranque tal como adicionar módulos de kernel antes do processo de arranque principal ou montar o sistema de ficheiros raiz como um encriptado. Você pode interromper esta parte do processo de arranque para obter a shell de root ao fornecer "break=init" etc. ao parâmetro     de arranque do kernel. Veja o script "/init" para mais condições de interrupção. Este ambiente shell é suficientemente sofisticado para fazer uma boa inspecção do hardware da sua máquina. Os comandos disponíveis neste mini-sistema Debian são versões     reduzidas e disponibilizados principalmente por uma ferramenta GNU chamada busybox(1). Cuidado     Você precisa de utilizar a opção "-n" para o comando mount quando está no sistema de ficheiros raiz apenas de leitura. 3.5. Estágio 4: o sistema Debian normal Tabela 3.3. Lista de utilitários de arranque para o sistema Debian +-----------------------------------------------------------------------------+ |pacote |popcon |tamanho |descrição | |-------------------+-----------------+----------------------+----------------| | |V:867, I:999 | | | |initscripts (http:/|(http:// |276 (http:// |scripts para | |/ |qa.debian.org/ |packages.qa.debian.org|inicializar e | |packages.debian.org|popcon.php? |/i/initscripts.html) |desligar o | |/sid/initscripts) |package= | |sistema | | |initscripts) | | | |-------------------+-----------------+----------------------+----------------| | |V:849, I:997 | | | |sysvinit (http:// |(http:// |243 (http:// |utilitários de | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|init(8) estilo | |/sid/sysvinit) |popcon.php? |/s/sysvinit.html) |System-V | | |package=sysvinit)| | | |-------------------+-----------------+----------------------+----------------| | |V:868, I:998 | |mecanismo de | |sysv-rc (http:// |(http:// |215 (http:// |mudança de | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|runlevel estilo | |/sid/sysv-rc) |popcon.php? |/s/sysv-rc.html) |System-V | | |package=sysv-rc) | | | |-------------------+-----------------+----------------------+----------------| |sysvinit-utils |V:868, I:998 | | | |(http:// |(http:// |231 (http:// |utilitários | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|estilo System-V | |/sid/ |popcon.php? |/s/ |(startpar(8), | |sysvinit-utils) |package= |sysvinit-utils.html) |bootlogd(8), …) | | |sysvinit-utils) | | | |-------------------+-----------------+----------------------+----------------| | | | |Linux Standard | | |V:870, I:999 | |Base (http:// | |lsb-base (http:// |(http:// |36 (http:// |en.wikipedia.org| |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|/wiki/ | |/sid/lsb-base) |popcon.php? |/l/lsb-base.html) |Linux_kernel) | | |package=lsb-base)| |funcionalidade | | | | |de script de | | | | |init 3.2 | |-------------------+-----------------+----------------------+----------------| | | | |ferramenta para | | |V:772, I:900 | |organizar a | |insserv (http:// |(http:// |183 (http:// |sequência de | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|arranque usando | |/sid/insserv) |popcon.php? |/i/insserv.html) |dependências dos| | |package=insserv) | |scripts init.d | | | | |LSB | |-------------------+-----------------+----------------------+----------------| | | | |daemon de | |upstart (http:// |V:0, I:0 (http://|1107 (http:// |eventos baseado | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|em init(8) para | |/sid/upstart) |popcon.php? |/u/upstart.html) |a concorrência | | |package=upstart) | |(alternativa a |     | | | |sysvinit) | |-------------------+-----------------+----------------------+----------------| | | | |daemon de | |systemd (http:// |V:8, I:11 (http:/|3477 (http:// |eventos baseado | |packages.debian.org|/qa.debian.org/ |packages.qa.debian.org|em init(8) para | |/sid/systemd) |popcon.php? |/s/systemd.html) |a concorrência | | |package=systemd) | |(alternativa a | | | | |sysvinit) | |-------------------+-----------------+----------------------+----------------| |readahead-fedora |V:4, I:8 (http://| |readahead(8) | |(http:// |qa.debian.org/ |87 (http:// |para | |packages.debian.org|popcon.php? |packages.qa.debian.org|pré-carregar os | |/sid/ |package= |/r/ |ficheiros do | |readahead-fedora) |readahead-fedora)|readahead-fedora.html)|processo de | | | | |arranque | |-------------------+-----------------+----------------------+----------------| | | | |ferramentas | | | | |disponibilizadas| |uswsusp (http:// |V:8, I:32 (http:/|574 (http:// |pelo Linux para | |packages.debian.org|/qa.debian.org/ |packages.qa.debian.org|utilizar a | |/sid/uswsusp) |popcon.php? |/u/uswsusp.html) |suspensão de | | |package=uswsusp) | |software no | | | | |espaço de | | | | |utilizador | |-------------------+-----------------+----------------------+----------------| | |V:1, I:6 (http://| |ferramenta kexec| |kexec-tools (http:/|qa.debian.org/ |290 (http:// |para | |/ |popcon.php? |packages.qa.debian.org|re-arranques | |packages.debian.org|package= |/k/kexec-tools.html) |kexec(8) | |/sid/kexec-tools) |kexec-tools) | |(re-arranque a | | | | |quente) | |-------------------+-----------------+----------------------+----------------| | |V:0, I:2 (http://| |analisador de | |bootchart (http:// |qa.debian.org/ |46 (http:// |performance do | |packages.debian.org|popcon.php? |packages.qa.debian.org|processo de | |/sid/bootchart) |package= |/b/bootchart.html) |arranque | | |bootchart) | | | |-------------------+-----------------+----------------------+----------------| |bootchart-view |V:0, I:2 (http://|211 (http:// |analisador de | |(http:// |qa.debian.org/ |packages.qa.debian.org|performance do | |packages.debian.org|popcon.php? |/b/ |processo de | |/sid/ |package= |bootchart-view.html) |arranque | |bootchart-view) |bootchart-view) | |(visualização) | |-------------------+-----------------+----------------------+----------------| |mingetty (http:// |V:1, I:4 (http://|24 (http:// | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|getty(8) apenas | |/sid/mingetty) |popcon.php? |/m/mingetty.html) |de consola | | |package=mingetty)| | | |-------------------+-----------------+----------------------+----------------| |mgetty (http:// |V:0, I:3 (http://|416 (http:// |substituto | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|inteligente de | |/sid/mgetty) |popcon.php? |/m/mgetty.html) |modem getty(8) | | |package=mgetty) | | | +-----------------------------------------------------------------------------+ Dica     Todos os mecanismos de arranque são compatíveis através dos scripts "/etc/init.d/rc", "/etc/init.d/rcS", "/usr/sbin/ update-rc.d", e "/usr/sbin/invoke-rc.d". Dica     systemd can be installed alongside sysvinit without any change to the system. Add "init=/bin/systemd" to the kernel boot parameter to enable systemd. Dica     O pacote readahead-fedora pode acelerar o arranque de um sistema com uma quantidade decente de DRAM. Dica     See Debian wiki: BootProcessSpeedup (https://wiki.debian.org/ BootProcessSpeedup) for the latest tips to speed up the boot process. O sistema Debian normal é o 4º estágio do processo de arranque que é iniciado pelo mini-sistema Debian. O kernel do sistema para     o mini-sistema Debian continua a correr no seu ambiente. O sistema de ficheiros raiz é mudado daquele em memória para o que está no sistema de ficheiros do disco rígido real. The "/sbin/init" program is executed as the first program and performs the main boot process. Debian normally uses the     traditional sysvinit scheme with the sysv-rc package. See init(8) , inittab(5), and "/usr/share/doc/sysv-rc/README.runlevels.gz" for the exact explanation. This main boot process essentially goes through the following. 1. O sistema Debian entra em runlevel N (nenhum) para inicializar o sistema ao seguir a descrição de "/etc/ inittab". 2. O sistema Debian entra em runlevel S para inicializar o     sistema sob o modo de único-utilizador para completar a inicialização do hardware e etc. 3. O sistema Debian vai para um dos runlevels de multi-utilizador (2 a 5) especificado para arrancar os serviços do sistema. O runlevel inicial utilizado para modo de multi-utilizador é     especificado com o parâmetro "init=" de arranque do kernel ou na linha "initdefault" de "/etc/inittab". O sistema Debian instalado arranca no runlevel 2.     Todos os ficheiros script executados pelo sistema init estão localizados no directório "/etc/init.d/". 3.5.1. O significado do runlevel Cada runlevel (http://en.wikipedia.org/wiki/Runlevel) utiliza um     directório para a sua configuração e tem um significado específico conforme o seguinte. Tabela 3.4. Lista de runlevels e descrição da sua utilização +---------------------------------------------------------------+ |runlevel|directório|descrição da utilização do runlevel | |--------+----------+-------------------------------------------| |N |nenhum |arranque do sistema em NENHUM nível (nenhum| | | |directório "/etc/rcN.d/") | |--------+----------+-------------------------------------------| |0 |/etc/rc0.d|parar o sistema | | |/ | | |--------+----------+-------------------------------------------| |S |/etc/rcS.d|modo de utilizador singular no arranque | | |/ |(alias: "s") | |--------+----------+-------------------------------------------| |1 |/etc/rc1.d|modo de utilizador singular trocado a | | |/ |partir do modo de multi utilizador | |--------+----------+-------------------------------------------| |2 |/etc/rc2.d|modo de multi-utilizador | | |/ | | |--------+----------+-------------------------------------------|     |3 |/etc/rc3.d|,, | | |/ | | |--------+----------+-------------------------------------------| |4 |/etc/rc4.d|,, | | |/ | | |--------+----------+-------------------------------------------| |5 |/etc/rc5.d|,, | | |/ | | |--------+----------+-------------------------------------------| |6 |/etc/rc6.d|reiniciar o sistema | | |/ | | |--------+----------+-------------------------------------------| |7 |/etc/rc7.d|modo de multi-utilizador válido mas | | |/ |normalmente não usado | |--------+----------+-------------------------------------------| |8 |/etc/rc8.d|,, | | |/ | | |--------+----------+-------------------------------------------| |9 |/etc/rc9.d|,, | | |/ | | +---------------------------------------------------------------+     Você pode mudar o runlevel a partir da consola para, por exemplo 4, com o seguinte.     $ sudo telinit 4 Cuidado O sistema Debian não pré-atribui nenhumas diferenças de significado especiais entre os runlevels (http://en.wikipedia.org /wiki/Runlevel) 2 e 5. O administrador de sistema no sistema     Debian pode mudar isto. (Isto é, Debian não é Red Hat Linux (http://en.wikipedia.org/wiki/Red_Hat_Linux) nem Solaris da Sun Microsystems (http://en.wikipedia.org/wiki/Solaris_ (operating_system)) nem HP-UX da Hewlett Packard (http:// en.wikipedia.org/wiki/HP-UX) nem AIX da IBM (http:// en.wikipedia.org/wiki/IBM_AIX) nem …) Cuidado The Debian system does not populate directories for the runlevels     (http://en.wikipedia.org/wiki/Runlevel) between 7 and 9 during installation. Traditional Unix variants (http://en.wikipedia.org/ wiki/Unix-like) don't use these runlevels (http:// en.wikipedia.org/wiki/Runlevel) . 3.5.2. A configuração do runlevel Quando os comandos init(8) ou telinit(8) vão para o runlevel para     "", o sistema basicamente executa os scripts de inicialização que se seguem. 1. Os scripts cujos nomes começam com um "K" em "/etc/rc.d/" são executados por ordem alfabética com o único argumento "stop". (matando os serviços)     2. Os scripts cujos nomes começam com um "S" em "/etc/rc.d/" são executados por ordem alfabética com o único argumento "start". (iniciando os serviços) Por exemplo, se você tiver os links "S10sysklogd" e "S20exim4"     num directório de runlevel, o "S10sysklogd" que está simbolicamente ligado a "../init.d/sysklogd" irá correr antes de "S20exim4" que está simbolicamente ligado a "../init.d/exim4". A inicialização sequencial simples do sistema é o método de     arranque tradicional System V (http://en.wikipedia.org/wiki/ UNIX_System_V) e foi utilizado até ao sistema Debian lenny.     Em vez disso, o recente sistema Debian é optimizado para executar os scripts de inicialização de forma concorrente. * O comando insserv(8) utiliza a informação de dependências dos pacotes e calcula as dependências entre todos os scripts. o Veja "/usr/share/doc/insserv/README.Debian". * A informação de dependências de pacotes definida no cabeçalho dos scripts de inicialização assegura a existência dos recursos necessários.     o Veja Linux Standard Base Core Specification 3.1, VII. System Initialization (http://refspecs.linuxbase.org/ LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/ tocsysinit.html) . * Anúncio de "Arranque Paralelo activado por predefinição" (http://lists.debian.org/debian-devel-announce/2010/05/ msg00009.html) Atenção     Não é aconselhável fazer quaisquer alterações nos links simbólicos em "/etc/rcS.d/" a menos que você saiba mais que o responsável. 3.5.3. O exemplo de gestão do runlevel Por exemplo, vamos configurar o rublevel do sistema algo como o     Red Hat Linux (http://en.wikipedia.org/wiki/Red_Hat_Linux) com o seguinte. * init arranca o sistema em runlevel=3 por predefinição     * O init não arranca o gdm3(1) nos runlevel (0,1,2,6). * init arranca o gdm3(1) em runlevel=(3,4,5). Isto pode ser feito com o editor no ficheiro "/etc/inittab" para alterar o runlevel de arranque e utilizar ferramentas de gestão     do runlevel amigas do utilizador como o sysv-rc-conf ou o bum para editar o runlevel. Se utilizar apenas a linha de comandos, aqui está como fazê-lo (após a instalação predefinida do pacote gdm3 e seleccioná-lo para ser o gestor de ecrã escolhido).     # cd /etc/rc2.d ; mv S21gdm3 K21gdm3 # cd /etc ; perl -i -p -e 's/^id:.:/id:3:/' inittab Por favor note que o ficheiro "/etc/X11/default-display-manager"     é verificado quando se arrancam daemons de gestor de ecrã: xdm, gdm3, kdm, e wdm. Nota     Você pode ainda arrancar o X a partir de qualquer consola de shell com o comando startx(1). 3.5.4. O parâmetro predefinido para cada script de init O parâmetro predefinido para cada script de init em "/etc/init.d/ " é dado pelo ficheiro correspondente em "/etc/default/" o qual contém apenas atribuições das variáveis de ambiente. Esta escolha de nome de directório é específica do sistema Debian. É     grosseiramente o equivalente ao directório "/etc/sysconfig" encontrado em Red Hat Linux (http://en.wikipedia.org/wiki/ Red_Hat_Linux) e outras distribuições. Por exemplo, "/etc/default /cron" pode ser utilizado para controlar como o "/etc/init.d/ cron" funciona. O ficheiro "/etc/default/rcS" pode ser utilizado para     personalizar as predefinições no momento de arranque para motd(5) , sulogin(8), etc. Se não conseguir obter o comportamento que deseja ao alterar tais variáveis então pode modificar os scripts de init (http://     www.debian.org/doc/debian-policy/ch-opersys#s9.3.2) . Estes são ficheiros de configuração editáveis por administradores de sistemas. 3.5.5. O nome da máquina O kernel mantém o nome-de-máquina do sistema. O script init em runlevel S which é ligado simbolicamente a "/etc/init.d/     hostname.sh" e define o nome de máquina durante o arranque (utilizando o comando hostname) para o nome armazenado em "/etc/ hostname". Este ficheiro deve conter apenas o nome de máquina do sistema, e não um nome de domínio totalmente qualificado.     Para escrever o nome de máquina actual corra hostname(1) sem argumentos. 3.5.6. O sistema de ficheiros Apesar do sistema de ficheiros raiz ser montado pelo kernel     quando arranca, outros sistemas de ficheiros são montados no runlevel S pelos seguintes scripts de init. * "/etc/init.d/mountkernfs.sh" para sistemas de ficheiros do kernel em "/proc", "/sys", etc. * "/etc/init.d/mountdevsubfs.sh" para sistemas de ficheiros virtuais em "/dev"     * "/etc/init.d/mountall.sh" para sistemas de ficheiros normais usando o "/etc/fstab" * "/etc/init.d/mountnfs.sh" para sistemas de ficheiros de rede usando o "/etc/fstab" The mount options of special kernel filesystems (procfs, sysfs,     and tmpfs for /proc, /sys, /tmp, /run, etc.) are set in "/etc/ default/rcS". See rcS(5). The mount options of normal disk and network filesystems are set     in "/etc/fstab". See Secção 9.3.7, “Optimização do sistema de ficheiros por opções de montagem”. Nota     A montagem actual de sistemas de ficheiros de rede espera que a interface de rede arranque. Atenção     Após montar todos os sistemas de ficheiros, os ficheiros temporários em "/tmp", "/var/lock", e "/var/run" são limpos para cada arranque. 3.5.7. Inicialização da interface de rede As interfaces de rede são iniciadas no runlevel 5 pelo script de     init simbolicamente ligado a "/etc/init.d/ifupdown-clean" e "/etc /init.d/ifupdown". Veja Capítulo 5, Configuração de rede para como os configurar. 3.5.8. Inicialização do serviço de rede Muitos serviços de rede (veja Capítulo 6, Aplicações de rede) são iniciados sob modo de multi-utilizador directamente como     processos daemon durante o arranque pelo script de init, ex., "/ etc/rc2.d/S20exim4" (para RUNLEVEL=2) o que é um link simbólico para "/etc/init.d/exim4". Alguns serviços de rede podem ser iniciados a pedido utilizando o super-servidor (http://en.wikipedia.org/wiki/Super-server) inetd (ou o seu equivalente). O inetd é iniciado durante o arranque     pelo "/etc/rc2.d/S20inetd" (para RUNLEVEL=2) o qual é um link simbólico para "/etc/init.d/inetd". Essencialmente, o inetd permite que um daemon a correr possa invocar vários outros, reduzindo a carga do sistema. Sempre que um pedido para serviço chega ao super-servidor (http:/ /en.wikipedia.org/wiki/Super-server) inetd, o seu protocolo e serviço é identificado ao procura-lo nas bases de dados em "/etc/     protocols" e "/etc/services". O inetd então procura um serviço de Internet normal na base de dados "/etc/inetd.conf", ou um serviço baseado em Open Network Computing Remote Procedure Call (ONC RPC) /Sun RPC (http://en.wikipedia.org/wiki/ Open_Network_Computing_Remote_Procedure_Call) em "/etc/rpc.conf". Por vezes, o inetd não arranca o servidor pretendido directamente mas arranca o programa wrapper de TCP (http://en.wikipedia.org/ wiki/TCP_Wrapper) , tcpd(8), com o nome do servidor pretendido     como seu argumento em "/etc/inetd.conf". Neste caso, o tcpd corre o programa servidor apropriado após registar em log o pedido e fazer algumas verificações adicionais usando "/etc/hosts.deny" e "/etc/hosts.allow". Para segurança do sistema, desactive o máximo possível de     programas de serviço de rede. Veja Secção 4.6.4, “Restringindo acesso a alguns serviços de servidor”. Veja inetd(8), inetd.conf(5), protocols(5), services(5), tcpd(8),     hosts_access(5), hosts_options(5), rpcinfo(8), portmap(8), e "/ usr/share/doc/portmap/portmapper.txt.gz". 3.5.9. A mensagem do sistema A mensagem do sistema pode ser personalizada em "/etc/default/     rsyslog" e "/etc/rsyslog.conf" quer para o ficheiro de registo quer para as mensagens no ecrã. Veja rsyslogd(8) e rsyslog.conf (5). Veja também Secção 9.2.2, “Analizador de log”. 3.5.10. A mensagem do kernel A mensagem do kernel pode ser personalizada pelo "/etc/default/     klogd" para ambos os ficheiros de registo e a visualização no ecrã. Defina "KLOGD='-c 3'" neste ficheiro e execute "/etc/init.d /klogd restart". Veja klogd(8).     Você pode alterar directamente o nível de mensagens de erro fazendo o seguinte.     # dmesg -n3 Tabela 3.5. Lista de níveis de erro do kernel +---------------------------------------------------------------+ |valor de nível de|nome de nível de|significado | |erro |erro | | |-----------------+----------------+----------------------------| |0 |KERN_EMERG |sistema está inutilizável | |-----------------+----------------+----------------------------| |1 |KERN_ALERT |tem de ser tomada | | | |imediatamente ação | |-----------------+----------------+----------------------------| |2 |KERN_CRIT |condições críticas |     |-----------------+----------------+----------------------------| |3 |KERN_ERR |condições de erro | |-----------------+----------------+----------------------------| |4 |KERN_WARNING |condições de aviso | |-----------------+----------------+----------------------------| |5 |KERN_NOTICE |condição normal mas | | | |significante | |-----------------+----------------+----------------------------| |6 |KERN_INFO |informativa | |-----------------+----------------+----------------------------| |7 |KERN_DEBUG |mensagens de nível de | | | |depuração | +---------------------------------------------------------------+ 3.5.11. O sistema udev Para o kernel Linux 2.6, o sistema udev (http://en.wikipedia.org/ wiki/Udev) disponibiliza um mecanismo para a descoberta automática de hardware e sua inicialização (veja udev(7)). Após a descoberta de cada dispositivo pelo kernel, o sistema udev     arranca um processo de utilizador que usa informação a partir do sistema de ficheiros sysfs (http://en.wikipedia.org/wiki/Sysfs) (veja Secção 1.2.12, “procfs e sysfs”), carrega os módulos de kernel necessários para o suportar usando o programa modprobe(8) (veja Secção 3.5.12, “A inicialização de módulos do kernel”), e cria os nós correspondentes de dispositivo. Dica     Se "/lib/modules//modules.dep" não foi gerado de modo apropriado pelo depmod(8) por alguma razão, os módulos podem não carregar como esperado pelo sistema udev. Execute "depmod -a" para o corrigir. Os nomes dos nós de dispositivos podem ser configurados pelos ficheiros de regras do udev em "/etc/udev/rules.d/". As regras predefinidas actuais tentem a criar nomes gerados dinamicamente resultando em nomes de dispositivos não estáticos excepto para dispositivos de cd e de rede. Ao adicionar os seus ficheiros     personalizados de modo semelhante ao que é feito pelos dispositivos de cd e rede, você também pode gerar nomes estáticos para dispositivos para outros dispositivos como pens USB de memória. Veja "Escrever regras do udev (http:// www.reactivated.net/writing_udev_rules.html) " ou "/usr/share/doc /udev/writing_udev_rules/index.html". Como o sistema udev é de certa forma um alvo em movimento, eu     deixo os detalhes para outras documentações e descrevo a informação mínima aqui. Dica Para regras de montagem em "/etc/fstab", os nós de dispositivo     não precisam de ser os estáticos. Você pode usar o UUID (http:// en.wikipedia.org/wiki/Universally_Unique_Identifier) para montar os dispositivos em vez dos nomes de dispositivo como "/dev/sda". Veja Secção 9.3.3, “Aceder a partição usando UUID”. 3.5.12. A inicialização de módulos do kernel O programa modprobe(8) permite-nos configurar o kernel Linux em execução a partir do processo de utilizador ao adicionar e     remover módulos do kernel. O sistema udev (veja Secção 3.5.11, “O sistema udev”) automatiza a sua invocação para ajudar na inicialização dos módulos de kernel. Existem módulos de não-hardware e módulos driver de hardware     especial como os seguintes que precisam de ser pré-carregados ao listá-los no ficheiro "/etc/modules" (veja modules(5)). * módulos TUN/TAP (http://en.wikipedia.org/wiki/TUN/TAP) que disponibilizam dispositivos de rede Point-to-Point virtuais (TUN) e dispositivos de rede Ethernet virtuais (TAP).     * módulos netfilter (http://en.wikipedia.org/wiki/Netfilter) que disponibilizam capacidades de firewall netfilter ( iptables(8), Secção 5.9, “Infra-estrutura netfilter”), e * módulos de driver watchdog timer (http://en.wikipedia.org/ wiki/Watchdog_timer) Os ficheiros de configuração para o programa modprobe(8) estão localizados sob o directório "/etc/modprobes.d/" como explicado     em modprobe.conf(5). (Se você deseja evitar que alguns módulos do kernel sejam carregados automaticamente, considere metê-los em lista negra no ficheiro "/etc/modprobes.d/blacklist".) O ficheiro "/lib/modules//modules.dep" gerado pelo     programa depmod(8) descreve as dependências dos módulos usados pelo programa modprobe(8). Nota     Se tiver problemas com o carregamento de módulos durante o arranque ou com o modprobe(8), "depmod -a" pode resolver esses problemas ao reconstruir "modules.dep".     O programa modinfo(8) mostra informação sobre um módulo do kernel Linux. O programa lsmod(8) formata lindamente o conteúdo de "/proc/     modules", e mostra que módulos do kernel que estão actualmente carregados. Dica     Você pode identificar o hardware exacto no seu sistema. Veja Secção 9.6.3, “Identificação do hardware”. Dica     Você pode configurar o hardware durante o arranque para activar as funcionalidades esperadas do hardware. Veja Secção 9.6.4, “Configuração do hardware”. Dica     You can probably add support for your special device by recompiling the kernel. See Secção 9.7, “O kernel”. Capítulo 4. Autenticação     Quando uma pessoa (ou programa) requer acesso ao sistema, a autenticação confirma a identidade para ser de confiança. Atenção     Erros de configuração do PAM podem trancá-lo fora do seu sistema. Terá de ter um CD de recuperação à mão ou arrancar por uma partição de arranque alternativa. Para recuperar, arranque o sistema com eles e corrija a partir daí. 4.1. Autenticação normal de Unix A autenticação normal de Unix é disponibilizada pelo módulo pam_unix(8) sob PAM (Pluggable Authentication Modules) (http://     en.wikipedia.org/wiki/Pluggable_Authentication_Modules) . Os seus 3 ficheiros de configuração importantes, com entradas separadas por ":", são os seguintes. Tabela 4.1. 3 ficheiros de configuração importantes para pam_unix (8) +---------------------------------------------------------------+ |ficheiro|permissão |utilizador|grupo |descrição | |--------+----------+----------+------+-------------------------| |/etc/ |-rw-r--r--|root |root |informação da conta do |     |passwd | | | |utilizador (filtrada) | |--------+----------+----------+------+-------------------------| |/etc/ |-rw-r-----|root |shadow|informação segura da | |shadow | | | |conta do utilizador | |--------+----------+----------+------+-------------------------| |/etc/ |-rw-r--r--|root |root |informação do grupo | |group | | | | | +---------------------------------------------------------------+     "/etc/passwd" contém o seguinte. ...     utilizador1:x:1000:1000:Nome de Utilizador1,,,:/home/utilizador1:/bin/bash utilizador2:x:1001:1001:Nome de Utilizador2,,,:/home/utilizador2:/bin/bash ...     Como explicado em passwd(5), cada entrada separada por ":" neste ficheiro significa o seguinte. * Nome de login * Entrada de especificação de palavra-passe * ID numérico do utilizador     * ID numérico do grupo * Nome de utilizador ou campo de comentários * Directório home do utilizador * Interpretador de comandos opcional do utilizador A segunda entrada de "/etc/passwd" foi utilizada para a entrada     de palavra-passe encriptada. Após a introdução de "/etc/shadow", esta entrada é utilizada para a entrada de especificação da palavra-passe. Tabela 4.2. A segunda entrada no conteúdo de "/etc/passwd" +---------------------------------------------------------+ |conteúdo|significado | |--------+------------------------------------------------| |(vazio) |conta sem palavra-passe |     |--------+------------------------------------------------| |x |a palavra-passe encriptada está em "/etc/shadow"| |--------+------------------------------------------------| |* |nenhum login para esta conta | |--------+------------------------------------------------| |! |nenhum login para esta conta | +---------------------------------------------------------+     "/etc/shadow" contém o seguinte. ...     user1:$1$Xop0FYH9$IfxyQwBe9b8tiyIkt2P4F/:13262:0:99999:7::: user2:$1$vXGZLVbS$ElyErNf/agUDsm1DehJMS/:13261:0:99999:7::: ...     Como explicado em shadow(5), cada entrada separada por ":" neste ficheiro significa o seguinte: * Nome de login * Palavra-passe encriptada (O "$1$" inicial indica o uso de encriptação MD5. O "*" indica nenhum login.) * Dias desde Jan 1, 1970 em que essa palavra-passe foi alterada     * Dias antes da palavra-passe poder ser alterada * Dias após os quais a palavra-passe tem de ser alterada * Dias de aviso ao utilizador antes da palavra-passe expirar * …     "/etc/group" contém o seguinte.     grupo1:x:20:utilizador1,utilizador2     Como explicado em grupo(5), cada entrada separada por ":" neste ficheiro significa o seguinte. * Nome do grupo * Palavra-passe encriptada (na realidade não utilizada)     * ID numérico do grupo * lista de nomes de utilizadores, separada por "," Nota     "/etc/gshadow" disponibiliza uma função semelhante à do "/etc/ shadow" para "/etc/group" mas não é realmente usado. Nota     A quantidade real de membros de um grupo de um utilizador pode ser adicionada dinamicamente se a linha "auth optional pam_group.so" for adicionada ao "/etc/pam.d/common-auth" e definida em "/etc/security/group.conf". Veja pam_group(8). Nota     O pacote base-passwd contém uma lista autorizada do utilizador e do grupo: "/usr/share/doc/base-passwd/users-and-groups.html". 4.2. Gerir informação de conta e palavra-passe     Aqui estão alguns comandos notáveis para gerir informação de conta Tabela 4.3. Lista de comandos para gerir informação de conta +---------------------------------------------------------------+ |comando |função | |--------------------+------------------------------------------| |getent passwd |navegar na informação da conta de " | ||" | |--------------------+------------------------------------------| |getent shadow |explorar informação confidencial (shadow) | ||da conta de " | |--------------------+------------------------------------------|     |getent group |navegar na informação do grupo de " | | |" | |--------------------+------------------------------------------| |passwd |gerir a palavra-passe da conta | |--------------------+------------------------------------------| |passwd -e |definir palavra-passe para uma vez para a | | |activação da conta | |--------------------+------------------------------------------| |chage |gerir a informação de envelhecimento da | | |palavra-passe | +---------------------------------------------------------------+ Você pode necessitar de privilégios de root para algumas funções     funcionarem. Veja crypt(3) para a encriptação de palavra passe e dados. Nota Num sistema configurado com PAM e NSS como a máquina alioth     (http://alioth.debian.org) de Debian, o conteúdo dos "/etc/ passwd", "/etc/group" e "/etc/shadow" locais pode não ser utilizado activamente pelo sistema. Os comandos em cima são válidos mesmo sob tal ambiente. 4.3. Boa palavra-passe Quando criar uma conta durante a instalação do seu sistema ou com o comando passwd(1), você deve escolher uma boa palavra passe     (http://en.wikipedia.org/wiki/Password_strength) que consiste de 6 a 8 caracteres incluindo um ou mais caracteres de cada um dos seguintes conjuntos de acordo com passwd(1). * Alfabéticos de minúsculas     * Dígitos de 0 a 9 * Marcas de pontuação Atenção     Não escolha palavras que podem ser adivinhadas para a palavra-passe. 4.4. Criar palavra-passe encriptada     Existem ferramentas independentes para gerar palavras-passe encriptadas 'salgadas'. Tabela 4.4. Lista de ferramentas para gerar palavras-passe +---------------------------------------------------------------------------------+ |pacote |popcon |tamanho |comando |função | |-------------------+-------------+----------------------+--------+---------------| | |V:88, I:921 | | |frontend cheio | |whois (http:// |(http:// |340 (http:// | |de | |packages.debian.org|qa.debian.org|packages.qa.debian.org|mkpasswd|funcionalidades| |/sid/whois) |/popcon.php? |/w/whois.html) | |para a |     | |package= | | |biblioteca | | |whois) | | |crypt(3) | |-------------------+-------------+----------------------+--------+---------------| | |V:754, I:979 | | |computa hashes | |openssl (http:// |(http:// |1073 (http:// | |de | |packages.debian.org|qa.debian.org|packages.qa.debian.org|openssl |palavras-passe | |/sid/openssl) |/popcon.php? |/o/openssl.html) |passwd |(OpenSSL). | | |package= | | |passwd(1ssl) | | |openssl) | | | | +---------------------------------------------------------------------------------+ 4.5. PAM e NSS Os sistemas modernos tipo-Unix (http://en.wikipedia.org/wiki/ Unix-like) como o sistema Debian disponibilizam mecanismos PAM (Pluggable Authentication Modules) (http://en.wikipedia.org/wiki/     Pluggable_Authentication_Modules) e NSS (Name Service Switch) (http://en.wikipedia.org/wiki/Name_Service_Switch) para o administrador local configurar o seu sistema. O papel destes pode ser resumido ao seguinte. * O PAM oferece um mecanismo de autenticação flexível utilizado pelo software de aplicações e assim involve trocas de dados de palavra-passe.     * O NSS oferece um mecanismo de serviço de nomes flexível que é utilizado frequentemente pela biblioteca C standard (http:// en.wikipedia.org/wiki/C_standard_library) para obter o nome de utilizador e grupo para programas como o ls(1) e o id(1).     Estes sistemas PAM e NSS necessitam ser configurados de modo consistente.     Os pacotes notáveis dos sistemas PAM e NSS são os seguintes. Tabela 4.5. Lista de sistemas PAM e NSS notáveis +----------------------------------------------------------------------------------+ |pacote |popcon |tamanho |descrição | |--------------------+--------------------+-------------------------+--------------| |libpam-modules |V:844, I:999 (http:/| |Pluggable | |(http:// |/qa.debian.org/ |826 (http:// |Authentication| |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/ |Modules | |sid/libpam-modules) |libpam-modules) |libp/libpam-modules.html)|(serviço | | | | |básico) | |--------------------+--------------------+-------------------------+--------------| | | | |Pluggable | |libpam-ldap (http://|V:14, I:30 (http:// |205 (http:// |Authentication| |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/ |Module que | |sid/libpam-ldap) |popcon.php?package= |libp/libpam-ldap.html) |permite | | |libpam-ldap) | |interfaces | | | | |LDAP | |--------------------+--------------------+-------------------------+--------------| | | | |Pluggable | |libpam-cracklib |V:14, I:32 (http:// |147 (http:// |Authentication| |(http:// |qa.debian.org/ |packages.qa.debian.org/ |Module para | |packages.debian.org/|popcon.php?package= |libp/ |activar | |sid/libpam-cracklib)|libpam-cracklib) |libpam-cracklib.html) |suporte a | | | | |cracklib | |--------------------+--------------------+-------------------------+--------------| | | | |Pluggable | |libpam-doc (http:// |I:4 (http:// |139 (http:// |Authentication| |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/ |Modules | |sid/libpam-doc) |popcon.php?package= |libp/libpam-doc.html) |(documentação | | |libpam-doc) | |em html e | | | | |texto) | |--------------------+--------------------+-------------------------+--------------| | | | |GNU C Library:| | | | |Bibliotecas de| |libc6 (http:// |V:923, I:997 (http:/|10164 (http:// |partilha que | |packages.debian.org/|/qa.debian.org/ |packages.qa.debian.org/ |também |     |sid/libc6) |popcon.php?package= |libc/libc6.html) |disponibilizam| | |libc6) | |o serviço | | | | |"Name Service | | | | |Switch" | |--------------------+--------------------+-------------------------+--------------| |glibc-doc (http:// |I:24 (http:// |2083 (http:// |Biblioteca GNU| |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/g/|C: Manuais | |sid/glibc-doc) |popcon.php?package= |glibc-doc.html) |(manpages) | | |glibc-doc) | | | |--------------------+--------------------+-------------------------+--------------| |glibc-doc-reference | | |Biblioteca GNU| |(http:// |I:8 (http:// |11389 (http:// |C: Manual de | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/g/|referência em | |sid/ |popcon.php?package= |glibc-doc-reference.html)|info, pdf e | |glibc-doc-reference)|glibc-doc-reference)| |html | | | | |(não-livre) | |--------------------+--------------------+-------------------------+--------------| |libnss-mdns (http://|I:574 (http:// |144 (http:// |Módulo NSS | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/ |para resolução| |sid/libnss-mdns) |popcon.php?package= |libn/libnss-mdns.html) |de nomes | | |libnss-mdns) | |Multicast DNS | |--------------------+--------------------+-------------------------+--------------| | |I:27 (http:// | |Módulo NSS | |libnss-ldap (http://|qa.debian.org/ |230 (http:// |para utilizar | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/ |o LDAP como um| |sid/libnss-ldap) |libnss-ldap) |libn/libnss-ldap.html) |serviço | | | | |nomeador | |--------------------+--------------------+-------------------------+--------------| | | | |Módulo NSS | | |I:13 (http:// | |para usar o | |libnss-ldapd (http:/|qa.debian.org/ |115 (http:// |LDAP como um | |/packages.debian.org|popcon.php?package= |packages.qa.debian.org/ |serviço | |/sid/libnss-ldapd) |libnss-ldapd) |libn/libnss-ldapd.html) |nomeador (nova| | | | |bifurcação de | | | | |libnss-ldap) | +----------------------------------------------------------------------------------+ * "O Guia do Administrador do Sistema Linux-PAM" em libpam-doc é essencial para aprender configuração do PAM.     * A secção "System Databases e Name Service Switch" em glibc-doc-reference é essencial para aprender a configuração do NSS. Nota     Você pode ver uma lista mais extensa e actual pelo comando "aptitude search 'libpam-|libnss-'". O acrónimo NSS também pode significar "Network Security Service" o que é diferente de "Name Service Switch". Nota     PAM é a maneira mais básica de inicializar variáveis de ambiente para cada programa com o valor predefinido de todo o sistema. 4.5.1. Ficheiros de configuração acedidos pelo PAM e NSS     Aqui estão alguns ficheiros de configuração notáveis acedidos pelo PAM. Tabela 4.6. Lista de ficheiros de configuração acedidos pelo PAM +---------------------------------------------------------------+ |ficheiro de |função | |configuração | | |------------------+--------------------------------------------| |/etc/pam.d/ |defina a configuração do PAM para o programa| ||""; veja pam(7) e pam.d(5)| |------------------+--------------------------------------------| |/etc/nsswitch.conf|define a configuração NSS com a entrada para| | |cada serviço. Veja nsswitch.conf(5) | |------------------+--------------------------------------------| |/etc/nologin |limita o login de utilizador pelo módulo | | |pam_nologin(8) | |------------------+--------------------------------------------| |/etc/securetty |limita a tty para o acesso de root pelo | | |módulo pam_securetty(8) | |------------------+--------------------------------------------| |/etc/security/ |define limites de acesso pelo módulo | |access.conf |pam_access(8) |     |------------------+--------------------------------------------| |/etc/security/ |define a restrição baseada em grupo pelo | |group.conf |módulo pam_group(8) | |------------------+--------------------------------------------| |/etc/security/ |define as variáveis de ambiente pelo módulo | |pam_env.conf |pam_env(8) | |------------------+--------------------------------------------| | |define variáveis de ambiente adicionais pelo| |/etc/environment |módulo pam_env(8) com o argumento "readenv= | | |1" | |------------------+--------------------------------------------| |/etc/default/ |define o locale pelo módulo pam_env(8) com o| |locale |argumento "readenv=1 envfile=/etc/default/ | | |locale" (Debian) | |------------------+--------------------------------------------| |/etc/security/ |define restrição de recursos (ulimit, core, | |limits.conf |…) pelo módulo pam_linits(8) | |------------------+--------------------------------------------| |/etc/security/ |define a retenção de tempo pelo módulo | |time.conf |pam_time(8) | +---------------------------------------------------------------+ A limitação da selecção da palavra-passe é implementada pelos     módulos do PAM, pam_unix(8) e pam_cracklib(8). Eles podem ser configurados com os seus argumentos. Dica     Os módulos PAM utilizam o sufixo ".so" para os seus nomes de ficheiros. 4.5.2. O moderno sistema de gestão centralizado A moderna gestão de sistema centralizada pode ser implantada utilizando o servidor centralizado Lightweight Directory Access Protocol (LDAP) (http://en.wikipedia.org/wiki/     Lightweight_Directory_Access_Protocol) para administrar muitos sistemas tipo-Unix e não-tipo-Unix na rede. A implementação de código aberto do Lightweight Directory Access Protocol é o Software OpenLDAP (http://www.openldap.org/) . O servidor LDAP disponibiliza para o sistema Debian a informação de conta através do uso de PAM e NSS com os pacotes libpam-ldap e     libnss-ldap. São necessárias várias acções para activar isto (eu não utilizei esta configuração e o seguinte é puramente informação secundária. Por favor leia isto neste contexto.). * Você configura um servidor LDAP centralizado ao correr um programa como o daemon de LDAP autónomo slapd(8). * Você altera os ficheiros de configuração do PAM no directório "/etc/pam.d/" para utilizar "pam_ldap.so" em vez do predefinido "pam_unix.so". o Debian utiliza "/etc/pam_ldap.conf" como ficheiro de configuração para libpam-ldap e "/etc/pam_ldap.secret" como ficheiro para armazenar a palavra-passe do root. * Você altera a configuração do NSS no ficheiro "/etc/ nsswitch.conf" para usar "ldap" em vez da predefinição ("compat" ou "file").     o Debian utiliza o "/etc/libnss-ldap.conf" como o ficheiro de configuração para libnss-ldap. * Você tem de fazer libpam-ldap para usar a ligação SSL (ou TLS) (http://en.wikipedia.org/wiki/Transport_Layer_Security) para a segurança da palavra-passe. * Você pode fazer a libnss-ldap usar ligação SSL (ou TLS) (http://en.wikipedia.org/wiki/Transport_Layer_Security) para assegurar a integridade dos dados à custa de maior sobrecarga da rede LDAP. * Você deve correr o nscd(8) localmente para colocar em cache quaisquer resultados de busca LDAP de modo a reduzir o tráfego de rede do LDAP. Veja as documentações em pam_ldap.conf(5) e "/usr/share/doc/     libpam-doc/html/" oferecidas pelo pacote libpam-doc e "info libc 'Name Service Switch'" oferecida pelo pacote glibc-doc.     De modo semelhante, você pode configurar sistemas centralizados alternativos com outros métodos. * Integração de utilizador e grupo com o sistema Windows. o Aceda a serviços de domínio Windows (http:// en.wikipedia.org/wiki/Windows_domain) com os pacotes winbind e libpam_winbind. o Veja winbindd(8) e Integrar Redes MS Windows com Samba (http://www.samba.org/samba/docs/man/ Samba-HOWTO-Collection/integrate-ms-networks.html) .     * Integração de utilizador e grupo com o sistema antigo tipo-Unix. o Acesso NIS (originalmente chamado YP) (http:// en.wikipedia.org/wiki/Network_Information_Service) ou NIS+ (http://en.wikipedia.org/wiki/NIS+) pelo pacote nis. o Veja o Linux NIS(YP)/NYS/NIS+ HOWTO (http://tldp.org/ HOWTO/NIS-HOWTO/) . 4.5.3. "Porque o su do GNU não suporta o grupo wheel" Esta é a famosa frase no fundo da antiga página "info su" por Richard M. Stallman. Não se preocupe, o comando su actual em     Debian utiliza PAM, portanto esse pode restringir a habilidade de utilizar su ao grupo root ao activar a linha com "pam_wheel.so" em "/etc/pam.d/su". 4.5.4. Regras de palavra-passe rigorosas Instalar o pacote libpam-cracklib permite-lhe forçar regras de     palavra-passe rigorosas, por exemplo, ao ter linhas activas em "/ etc/pam.d/common-password" como se segue.     Para squeeze: password required pam_cracklib.so retry=3 minlen=9 difok=3     password [success=1 default=ignore] pam_unix.so use_authtok nullok md5 password requisite pam_deny.so password required pam_permit.so 4.6. Outros controles de acesso Nota     Veja Secção 9.5.15, “Tecla Alt-SysRq” para restringir a funcionalidade do kernel chave de atenção segura (SAK) (http:// en.wikipedia.org/wiki/Secure_attention_key) . 4.6.1. sudo O sudo(8) é um programa desenhado para permitir a um administrador de sistema dar privilégios de root limitados a utilizadores e registar a actividade do root. O sudo necessita     apenas da palavra-passe de um utilizador normal. Instale o pacote sudo e active-o ao definir opções em "/etc/sudoers". Veja um exemplo de configuração em "/usr/share/doc/sudo/examples/sudoers" e Secção 1.1.12, “Configuração do sudo”. A minha utilização do sudo para o sistema de único utilizador (veja Secção 1.1.12, “Configuração do sudo”) destina-se a     proteger-me da minha própria estupidez. Pessoalmente, Eu considero utilizar o sudo uma melhor alternativa do que utilizar o sistema a partir da conta de root a toda a hora. Por exemplo, o seguinte muda o dono de "" para "".     $ sudo chown Claro que se você conhecer a palavra-passe de root (como os     utilizadores de sistemas Debian auto-instalados conhecem), qualquer comando pode ser executado sob root a partir da conta de qualquer utilizador usando "su -c". 4.6.2. PolicyKit PolicyKit (http://en.wikipedia.org/wiki/PolicyKit) é um     componente do sistema operativo para controlar privilégios a nível global em sistemas operativos tipo-Unix. Aplicações GUI mais recentes não são desenhadas para correr como     processos priveligiados. Estas falam com os processos priveligiados através de PolicyKit para excutar operações administrativas.     PolicyKit limits such operations to user accounts belonging to the sudo group on the Debian system.     Veja polkit(8). 4.6.3. SELinux Security-Enhanced Linux (SELinux) (http://en.wikipedia.org/wiki/ Security-Enhanced_Linux) é um mecanismo para apertar o modelo de     privilégios mais do que o normal modelo de segurança tipo-Unix com as políticas de controle de acesso mandatário (MAC) (http:// en.wikipedia.org/wiki/Mandatory_access_control) . O poder do root pode estar restringido sob algumas condições. 4.6.4. Restringindo acesso a alguns serviços de servidor Para a segurança do sistema, é uma boa ideia desactivar o máximo de programas de serviços possíveis. Isto torna-se crítico em servidores na rede. Ter servidores não utilizados, activados     directamente como daemon (http://en.wikipedia.org/wiki/Daemon_ (computer_software)) ou via programa super-server (http:// en.wikipedia.org/wiki/Super-server) , são considerados riscos de segurança. Muito programas, como o sshd(8), utilizam controlos de acesso     baseados no PAM. Existem muitas maneiras de restringir o acesso a alguns serviços de servidor. * ficheiros de configuração: "/etc/default/" * configuração de runlevel para daemon (http://en.wikipedia.org /wiki/Daemon_(computer_software)) * PAM (Pluggable Authentication Modules) (http:// en.wikipedia.org/wiki/Pluggable_Authentication_Modules) * "/etc/inetd.conf" para super-server (http://en.wikipedia.org/ wiki/Super-server)     * "/etc/hosts.deny" e "/etc/hosts.allow" para wrapper de TCP (http://en.wikipedia.org/wiki/TCP_Wrapper) , tcpd(8) * "/etc/rpc.conf" para RPC da Sun (http://en.wikipedia.org/wiki /Open_Network_Computing_Remote_Procedure_Call) * "/etc/at.allow" e "/etc/at.deny" para atd(8) * "/etc/cron.allow" e "/etc/cron.deny" para crontab(1) * Firewall de Rede (http://en.wikipedia.org/wiki/Firewall) da infraestrutura netfilter (http://en.wikipedia.org/wiki/ Netfilter) Veja Secção 3.5.3, “O exemplo de gestão do runlevel”, Secção 3.5.4, “O parâmetro predefinido para cada script de init”,     Secção 4.5.1, “Ficheiros de configuração acedidos pelo PAM e NSS” , Secção 3.5.8, “Inicialização do serviço de rede”, e Secção 5.9, “Infra-estrutura netfilter”. Dica os serviços Sun RPC (http://en.wikipedia.org/wiki/     Open_Network_Computing_Remote_Procedure_Call) necessitam estar activos para NFS (http://en.wikipedia.org/wiki/ Network_File_System_(protocol)) e outros programas baseados em RPC. Dica Se você tem problemas com acesso remoto num sistema Debian     recente, comente configurações ofensivas tais como "ALL: PARANOID" em "/etc/hosts.deny" se existirem. (Mas tem que ter cuidado com os riscos de segurança envolvidos com este tipo de acção.) 4.7. Segurança da autenticação     A informação aqui pode não ser suficiente para as suas necessidades de segurança, mas deverá ser um bom começo. 4.7.1. Palavra-passe segura sobre a Internet Muitos serviços de transporte populares comunicam mensagens incluindo a a autenticação de palavra-passe em texto simples. É má ideia transmitir as palavras-passe em texto simples pela     Internet onde podem ser interceptadas. Você pode correr estes serviços sobre "Transport Layer Security (http://en.wikipedia.org /wiki/Transport_Layer_Security) " (TLS) ou o seu antecessor, "Secure Sockets Layer" (SSL) para assegurar toda a comunicação incluindo a palavra-passe pela encriptação. Tabela 4.7. Lista de serviços e portos inseguros e seguros +-----------------------------------------------------------+ |nome do serviço inseguro|porto|nome do serviço seguro|porto| |------------------------+-----+----------------------+-----| |www (http) |80 |https |443 | |------------------------+-----+----------------------+-----| |smtp (mail) |25 |ssmtp (smtps) |465 | |------------------------+-----+----------------------+-----| |ftp-data |20 |ftps-data |989 |     |------------------------+-----+----------------------+-----| |ftp |21 |ftps |990 | |------------------------+-----+----------------------+-----| |telnet |23 |telnets |992 | |------------------------+-----+----------------------+-----| |imap2 |143 |imaps |993 | |------------------------+-----+----------------------+-----| |pop3 |110 |pop3s |995 | |------------------------+-----+----------------------+-----| |ldap |389 |ldaps |636 | +-----------------------------------------------------------+ A encriptação custa tempo de CPU. Como uma alternativa amiga para o CPU, você pode manter a comunicação em texto simples enquanto segura apenas a palavra-passe com um protocolo de autenticação de segurança como o "Authenticated Post Office Protocol" (APOP) para POP e "Challenge-Response Authentication Mechanism MD5"     (CRAM-MD5) para SMTP e IMAP. (Para enviar mensagens de mail pela Internet para o seu servidor de mail a partir do seu cliente de mail, recentemente é popular utilizar o porto 587 para submissão de novas mensagens em vez do tradicional porto 25 do SMTP para evitar o bloqueio do porto 25 pelo provedor de Internet enquanto você se autentica com CRAM-MD5.) 4.7.2. Shell Segura O programa Secure Shell (SSH) (http://en.wikipedia.org/wiki/ Secure_Shell) disponibiliza comunicações encriptadas e seguras entre duas máquinas sem confiança sobre uma rede insegura com a autenticação de segurança. Consiste no cliente OpenSSH (http://     www.openssh.org/) , ssh(1), e no daemon OpenSSH (http:// www.openssh.org/) , sshd(8). Este SSH pode ser utilizado como túnel de segurança para protocolos de comunicação inseguros como o POP e X pela Internet com a funcionalidade de reencaminhamento de portos. O cliente tenta autenticar-se a si próprio utilizando autenticação baseada na máquina, autenticação de chave pública,     autenticação por resposta a desafio, ou autenticação por palavra-passe. O uso de autenticação de chave pública activa o login remoto sem-palavra-passe. Veja Secção 6.9, “O servidor de acesso remoto e utilitário (SSH)”. 4.7.3. Medidas de segurança extra para a Internet Mesmo quando correr serviços seguros como o Secure Shell (SSH) (http://en.wikipedia.org/wiki/Secure_Shell) e servidores de Protocolo de túnel ponto-para-ponto (PPTP) (http:// en.wikipedia.org/wiki/Point-to-point_tunneling_protocol) , ainda     existe hipótese de invasões que utilizam ataques de força bruta à palavra-passe, etc. a partir da Internet. A utilização de politicas de firewall (veja Secção 5.9, “Infra-estrutura netfilter”) juntamente com as seguinte ferramentas de segurança podem melhorar a situação de segurança. Tabela 4.8. Lista de ferramentas para disponibilizar medidas de segurança extra +-------------------------------------------------------------------------+ |pacote |popcon |tamanho |descrição | |-------------------+--------------+----------------------+---------------| | |V:1, I:3 | |pequeno daemon | |knockd (http:// |(http:// |164 (http:// |port-knock | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|knockd(1) e | |/sid/knockd) |popcon.php? |/k/knockd.html) |cliente konck | | |package= | |(1) | | |knockd) | | | |-------------------+--------------+----------------------+---------------| | |V:16, I:18 | |utilitário para| |denyhosts (http:// |(http:// |368 (http:// |ajudar os | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|administradores| |/sid/denyhosts) |popcon.php? |/d/denyhosts.html) |de sistemas a |     | |package= | |impedir hackers| | |denyhosts) | |de ssh | |-------------------+--------------+----------------------+---------------| | |V:65, I:75 | | | |fail2ban (http:// |(http:// |402 (http:// |banir IPs que | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|causam vários | |/sid/fail2ban) |popcon.php? |/f/fail2ban.html) |erros de | | |package= | |autenticação | | |fail2ban) | | | |-------------------+--------------+----------------------+---------------| | |V:0, I:0 | |bloquear | |libpam-shield |(http:// |130 (http:// |atacantes | |(http:// |qa.debian.org/|packages.qa.debian.org|remotos que | |packages.debian.org|popcon.php? |/libp/ |tentam | |/sid/libpam-shield)|package= |libpam-shield.html) |adivinhar a | | |libpam-shield)| |palavra-passe | +-------------------------------------------------------------------------+ 4.7.4. Tornar a palavra-passe do root segura     Para prevenir que pessoas acedam à sua máquina com privilégios de root, você precisa de tomar as seguintes acções. * Prevenir acesso físico ao disco rígido * Bloquear a BIOS e prevenir o arranque a partir de suportes     amovíveis * Definir palavra-passe para sessão interactiva do GRUB * Bloquear o menu do GRUB de ser editado     Com acesso físico ao disco rígido, redefinir a palavra-passe é relativamente fácil com os seguintes passos. 1. Mover o disco rígido para um PC com uma BIOS com arranque a partir de CD. 2. Arrancar o sistema com um suporte de recuperação (disco de     arranque Debian, CD Knoppix, CD GRUB, ...) 3. Montar a partição raiz com acesso de leitura/escrita. 4. Editar "/etc/passwd" na partição raiz e tornar vazia a segunda entrada para a conta root. Se tiver acesso de edição à entrada do menu do GRUB (veja     Secção 3.3, “Estágio 2: o gestor de arranque”) grub-rescue-pc no momento do arranque, é ainda mais fácil com os seguintes passos. 1. Arrancar o sistema com o parâmetro de kernel alterado para algo como "root=/dev/hda6 rw init=/bin/sh".     2. Editar "/etc/passwd" e tornar a segunda entrada para a conta root vazia. 3. Reiniciar o sistema.     A shell de root do sistema está agora acessível sem palavra-passe. Nota Após alguém ter acesso à shell de root, pode aceder a tudo no sistema e reiniciar quaisquer palavras-passe no sistema. Mais     ainda, pode comprometer a palavra-passe para todas as contas de utilizadores usando ferramentas de de crack de palavra-passe por força bruta como os pacotes john e crack (veja Secção 9.6.11, “Segurança do sistema e verificação de integridade”). Esta palavra-passe descoberta pode levar a comprometer outros sistemas. A única solução de software razoável para evitar estas preocupações é usar uma partição raiz encriptada por software (ou     uma partição "/etc" utilizando dm-crypt (http://en.wikipedia.org/ wiki/Dm-crypt) e initramfs (veja Secção 9.4, “Dicas de encriptação de dados”). Assim, vai necessitar sempre de palavra-passe para arrancar o sistema. Capítulo 5. Configuração de rede Dica     Para um guia geral de rede em GNU/Linux, leia o Guia de Administradores de Rede de Linux (http://www.tldp.org/LDP/nag2/) . Dica     Apesar deste documento ainda utilizar o antigo ifconfig(8) com IPv4 para os seus exemplos de configuração de rede, Debian está a mudar para ip(8) com IPv4+IPv6 no lançamento Wheezy. Patches para este documento são bem-vindos. 5.1. A infra-estrutura de rede básica     Vamos rever a infra-estrutura básica de rede do sistema Debian moderno. Tabela 5.1. Lista de ferramentas de configuração de rede +------------------------------------------------------------------------------------------------------------------------------------------------------+ |pacotes |popcon |tamanho |tipo |descrição | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ifupdown (http:// |V:569, I:996 (http:// |208 (http://packages.qa.debian.org/i/| |ferramenta standard para | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|ifupdown.html) |config::ifupdown |activar e desactivar a rede | |ifupdown) |=ifupdown) | | |(especifico de Debian) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ifplugd (http:// |V:3, I:10 (http://qa.debian.org/|352 (http://packages.qa.debian.org/i/|, , |gerir a rede com fios | |packages.debian.org/sid/ifplugd)|popcon.php?package=ifplugd) |ifplugd.html) | |automaticamente | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ifupdown-extra (http:// |V:0, I:2 (http://qa.debian.org/ |119 (http://packages.qa.debian.org/i/| |script de testes de rede | |packages.debian.org/sid/ |popcon.php?package= |ifupdown-extra.html) |, , |para melhorar o pacote | |ifupdown-extra) |ifupdown-extra) | | |"ifupdown" | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ifmetric (http:// |V:0, I:1 (http://qa.debian.org/ |100 (http://packages.qa.debian.org/i/| |define métricas de rota para| |packages.debian.org/sid/ |popcon.php?package=ifmetric) |ifmetric.html) |, , |uma interface de rede | |ifmetric) | | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |guessnet (http:// | | | |script de mapeamento para | |packages.debian.org/sid/ |V:0, I:1 (http://qa.debian.org/ |532 (http://packages.qa.debian.org/g/|, , |melhorar o pacote "ifupdown"| |guessnet) |popcon.php?package=guessnet) |guessnet.html) | |via ficheiro "/etc/network/ | | | | | |interfaces" | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ifscheme (http:// |V:0, I:0 (http://qa.debian.org/ |132 (http://packages.qa.debian.org/i/| |scripts de mapeamento para | |packages.debian.org/sid/ |popcon.php?package=ifscheme) |ifscheme.html) |, , |melhorar o pacote "ifupdown"| |ifscheme) | | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ifupdown-scripts-zg2 (http:// |V:0, I:0 (http://qa.debian.org/ |147 (http://packages.qa.debian.org/i/| |scripts da interface | |packages.debian.org/sid/ |popcon.php?package= |ifupdown-scripts-zg2.html) |, , |Zugschlus para o método | |ifupdown-scripts-zg2) |ifupdown-scripts-zg2) | | |manual do ifupdown | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |network-manager (http:// |V:346, I:458 (http:// | | |NetworkManager (http:// | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|4650 (http://packages.qa.debian.org/n|config::NM |en.wikipedia.org/wiki/ | |network-manager) |=network-manager) |/network-manager.html) | |NetworkManager) (daemon): | | | | | |gere a rede automaticamente | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |network-manager-gnome (http:// |V:251, I:404 (http:// | | |NetworkManager (http:// | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|6275 (http://packages.qa.debian.org/n|, , |en.wikipedia.org/wiki/ | |network-manager-gnome) |=network-manager-gnome) |/network-manager-gnome.html) | |NetworkManager) (frontend do| | | | | |GNOME) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |plasma-widget-networkmanagement |V:38, I:65 (http://qa.debian.org|8067 (http://packages.qa.debian.org/p| |NetworkManager (http:// | |(http://packages.debian.org/sid/|/popcon.php?package= |/ |, , |en.wikipedia.org/wiki/ | |plasma-widget-networkmanagement)|plasma-widget-networkmanagement)|plasma-widget-networkmanagement.html)| |NetworkManager) (frontend do| | | | | |KDE) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wicd (http://packages.debian.org|I:25 (http://qa.debian.org/ |16 (http://packages.qa.debian.org/w/ |config::wicd |gestor de rede com fios e | |/sid/wicd) |popcon.php?package=wicd) |wicd.html) | |sem fios (metapacote) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wicd-cli (http:// |V:0, I:3 (http://qa.debian.org/ |28 (http://packages.qa.debian.org/w/ | |gestor de rede com fios e | |packages.debian.org/sid/ |popcon.php?package=wicd-cli) |wicd-cli.html) |, , |sem fios (cliente de linha | |wicd-cli) | | | |de comandos) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wicd-curses (http:// |V:2, I:7 (http://qa.debian.org/ |128 (http://packages.qa.debian.org/w/| |gestor de rede com fios e | |packages.debian.org/sid/ |popcon.php?package=wicd-curses) |wicd-curses.html) |, , |sem fios (cliente Curses) | |wicd-curses) | | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wicd-daemon (http:// |V:26, I:31 (http://qa.debian.org|1103 (http://packages.qa.debian.org/w| |gestor de rede com fios e | |packages.debian.org/sid/ |/popcon.php?package=wicd-daemon)|/wicd-daemon.html) |, , |sem fios (daemon) | |wicd-daemon) | | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wicd-gtk (http:// |V:20, I:27 (http://qa.debian.org|387 (http://packages.qa.debian.org/w/| |gestor de rede com fios e | |packages.debian.org/sid/ |/popcon.php?package=wicd-gtk) |wicd-gtk.html) |, , |sem fios (cliente GTK+) | |wicd-gtk) | | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |ferramentas administrativas | |iptables (http:// |V:238, I:992 (http:// |1389 (http://packages.qa.debian.org/i| |para filtragem de pacotes e | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|/iptables.html) |config::Netfilter|NAT (Netfilter (http:// | |iptables) |=iptables) | | |en.wikipedia.org/wiki/ | | | | | |Netfilter) ) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |iproute2 (http:// | | |V:570, I:979 (http:// | | |www.linuxfoundation.org/en/ | |iproute (http:// |qa.debian.org/popcon.php?package|39 (http://packages.qa.debian.org/i/ |config::iproute2 |Net:Iproute2) , IPv6 e | |packages.debian.org/sid/iproute)|=iproute) |iproute.html) | |outras configurações | | | | | |avançadas de rede: ip(8), tc| | | | | |(8), etc | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ifrename (http:// |V:2, I:4 (http://qa.debian.org/ |192 (http://packages.qa.debian.org/i/| |renomear interfaces de rede | |packages.debian.org/sid/ |popcon.php?package=ifrename) |ifrename.html) |, , |baseado em vários critérios | |ifrename) | | | |de estatística: ifrename(8) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ethtool (http:// |V:105, I:199 (http:// |307 (http://packages.qa.debian.org/e/| |mostra ou altera as | |packages.debian.org/sid/ethtool)|qa.debian.org/popcon.php?package|ethtool.html) |, , |definições de um dispositivo| | |=ethtool) | | |Ethernet | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |teste de acessibilidade de | | | | | |rede de uma máquina remota | | | | | |pelo nome-de-máquina (http:/| |iputils-ping (http:// |V:323, I:996 (http:// | | |/en.wikipedia.org/wiki/ | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|153 (http://packages.qa.debian.org/i/|test::iproute2 |Hostname) ou endereço IP | |iputils-ping) |=iputils-ping) |iputils-ping.html) | |(http://en.wikipedia.org/ | | | | | |wiki/IP_address) (iproute2 | | | | | |(http:// | | | | | |www.linuxfoundation.org/en/ | | | | | |Net:Iproute2) ) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |teste de acessibilidade de | |iputils-arping (http:// |V:3, I:27 (http://qa.debian.org/| | |rede de uma máquina remota | |packages.debian.org/sid/ |popcon.php?package= |76 (http://packages.qa.debian.org/i/ |, , |especificado pelo endereço | |iputils-arping) |iputils-arping) |iputils-arping.html) | |ARP (http://en.wikipedia.org| | | | | |/wiki/ | | | | | |Address_Resolution_Protocol)| |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |iputils-tracepath (http:// |V:23, I:251 (http:// |110 (http://packages.qa.debian.org/i/| |rastreia o caminho de rede | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|iputils-tracepath.html) |, , |até uma máquina remota | |iputils-tracepath) |=iputils-tracepath) | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |conjunto de ferramentas de | |net-tools (http:// |V:671, I:998 (http:// | | |rede NET-3 (net-tools (http:| |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|910 (http://packages.qa.debian.org/n/|config::net-tools|//www.linuxfoundation.org/en| |net-tools) |=net-tools) |net-tools.html) | |/Net:Net-tools) , | | | | | |configuração de rede IPv4): | | | | | |ifconfig(8) etc. | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |teste de acessibilidade de | | | | | |rede de uma máquina remota |     |inetutils-ping (http:// |V:0, I:1 (http://qa.debian.org/ | | |pelo nome-de-máquina (http:/| |packages.debian.org/sid/ |popcon.php?package= |338 (http://packages.qa.debian.org/i/|test::net-tools |/en.wikipedia.org/wiki/ | |inetutils-ping) |inetutils-ping) |inetutils-ping.html) | |Hostname) ou endereço IP | | | | | |(http://en.wikipedia.org/ | | | | | |wiki/IP_address) (legacy, | | | | | |GNU) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |teste de acessibilidade de | | | | | |rede de uma máquina remota | |arping (http:// |V:3, I:30 (http://qa.debian.org/|46 (http://packages.qa.debian.org/a/ | |especificado pelo endereço | |packages.debian.org/sid/arping) |popcon.php?package=arping) |arping.html) |, , |ARP (http://en.wikipedia.org| | | | | |/wiki/ | | | | | |Address_Resolution_Protocol)| | | | | |(legacy) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |traceroute (http:// |V:97, I:993 (http:// |176 (http://packages.qa.debian.org/t/| |rastreia o caminho de rede | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|traceroute.html) |, , |até uma máquina remota | |traceroute) |=traceroute) | | |(legacy, consola) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |isc-dhcp-client (http:// |V:477, I:875 (http:// |1765 (http://packages.qa.debian.org/i| | | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|/isc-dhcp-client.html) |config::low-level|Cliente DHCP | |isc-dhcp-client) |=isc-dhcp-client) | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wpasupplicant (http:// |V:370, I:512 (http:// |1364 (http://packages.qa.debian.org/w| |suporte de cliente para WPA | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|/wpasupplicant.html) |, , |e WPA2 (IEEE 802.11i) | |wpasupplicant) |=wpasupplicant) | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wpagui (http:// |V:0, I:6 (http://qa.debian.org/ |790 (http://packages.qa.debian.org/w/|, , |Cliente GUI Qt para o | |packages.debian.org/sid/wpagui) |popcon.php?package=wpagui) |wpagui.html) | |wpa_supplicant | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wireless-tools (http:// |V:79, I:261 (http:// |325 (http://packages.qa.debian.org/w/| |ferramentas para manipular | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|wireless-tools.html) |, , |Extensões Wireless do Linux | |wireless-tools) |=wireless-tools) | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ppp (http://packages.debian.org/|V:64, I:513 (http:// |855 (http://packages.qa.debian.org/p/| | | |sid/ppp) |qa.debian.org/popcon.php?package|ppp.html) |, , |ligação PPP/PPPoE com chat | | |=ppp) | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |pppoeconf (http:// |V:1, I:22 (http://qa.debian.org/|340 (http://packages.qa.debian.org/p/| |ajudante de configuração | |packages.debian.org/sid/ |popcon.php?package=pppoeconf) |pppoeconf.html) |config::helper |para ligação PPPoE | |pppoeconf) | | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |pppconfig (http:// |V:1, I:10 (http://qa.debian.org/|990 (http://packages.qa.debian.org/p/| |ajudante de configuração | |packages.debian.org/sid/ |popcon.php?package=pppconfig) |pppconfig.html) |, , |para ligação PPP com chat | |pppconfig) | | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wvdial (http:// |V:2, I:13 (http://qa.debian.org/|276 (http://packages.qa.debian.org/w/| |ajudante de configuração | |packages.debian.org/sid/wvdial) |popcon.php?package=wvdial) |wvdial.html) |, , |para ligação PPP com wvdial | | | | | |e ppp | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |mtr-tiny (http:// |V:11, I:92 (http://qa.debian.org|87 (http://packages.qa.debian.org/m/ | |rastreia o caminho de rede | |packages.debian.org/sid/ |/popcon.php?package=mtr-tiny) |mtr-tiny.html) |test::low-level |até uma máquina remota | |mtr-tiny) | | | |(curses) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |mtr (http://packages.debian.org/|V:5, I:36 (http://qa.debian.org/|127 (http://packages.qa.debian.org/m/| |rastreia o caminho de rede | |sid/mtr) |popcon.php?package=mtr) |mtr.html) |, , |até uma máquina remota | | | | | |(curses e GTK+) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |gnome-nettool (http:// |V:25, I:353 (http:// |2752 (http://packages.qa.debian.org/g| |ferramentas para operações | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|/gnome-nettool.html) |, , |comuns de informação de rede| |gnome-nettool) |=gnome-nettool) | | |(GNOME) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | |V:64, I:438 (http:// | | |mapeamento de rede / | |nmap (http://packages.debian.org|qa.debian.org/popcon.php?package|16762 (http://packages.qa.debian.org/|, , |sondagem de portos (Nmap | |/sid/nmap) |=nmap) |n/nmap.html) | |(http://en.wikipedia.org/ | | | | | |wiki/Nmap) , consola) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |zenmap (http:// |V:2, I:13 (http://qa.debian.org/|2347 (http://packages.qa.debian.org/z|, , |mapeamento de rede / | |packages.debian.org/sid/zenmap) |popcon.php?package=zenmap) |/zenmap.html) | |sondagem de portos (GTK+) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | |V:27, I:209 (http:// | | |analisador de tráfego de | |tcpdump (http:// |qa.debian.org/popcon.php?package|1037 (http://packages.qa.debian.org/t|, , |rede (Tcpdump (http:// | |packages.debian.org/sid/tcpdump)|=tcpdump) |/tcpdump.html) | |en.wikipedia.org/wiki/ | | | | | |Tcpdump) , consola) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wireshark (http:// | | | |analisador de tráfego de | |packages.debian.org/sid/ |V:9, I:78 (http://qa.debian.org/|2439 (http://packages.qa.debian.org/w|, , |rede (Wireshark (http:// | |wireshark) |popcon.php?package=wireshark) |/wireshark.html) | |en.wikipedia.org/wiki/ | | | | | |Wireshark) , GTK+) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |tshark (http:// |V:3, I:33 (http://qa.debian.org/|345 (http://packages.qa.debian.org/t/|, , |analisador de tráfego de | |packages.debian.org/sid/tshark) |popcon.php?package=tshark) |tshark.html) | |rede (consola) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |sistema de monitorização e | |nagios3 (http:// |V:3, I:15 (http://qa.debian.org/|29 (http://packages.qa.debian.org/n/ | |gestão para máquinas, | |packages.debian.org/sid/nagios3)|popcon.php?package=nagios3) |nagios3.html) |, , |serviços e redes (Nagios | | | | | |(http://en.wikipedia.org/ | | | | | |wiki/Nagios) ) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |tcptrace (http:// |V:0, I:3 (http://qa.debian.org/ |389 (http://packages.qa.debian.org/t/| |produz um sumário das | |packages.debian.org/sid/ |popcon.php?package=tcptrace) |tcptrace.html) |, , |ligações a partir da saída | |tcptrace) | | | |do tcpdump | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |sistema flexível de detecção| |snort (http:// |V:2, I:3 (http://qa.debian.org/ |1752 (http://packages.qa.debian.org/s|, , |de intrusos na rede (Snort | |packages.debian.org/sid/snort) |popcon.php?package=snort) |/snort.html) | |(http://en.wikipedia.org/ | | | | | |wiki/Snort_(software)) ) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ntop (http://packages.debian.org|V:5, I:12 (http://qa.debian.org/|1661 (http://packages.qa.debian.org/n|, , |mostra a utilização da rede | |/sid/ntop) |popcon.php?package=ntop) |/ntop.html) | |num navegador web | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |clientes de rede | |dnsutils (http:// |V:95, I:928 (http:// |359 (http://packages.qa.debian.org/d/| |disponibilizados com BIND | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|dnsutils.html) |, , |(http://en.wikipedia.org/ | |dnsutils) |=dnsutils) | | |wiki/BIND) : nslookup(8), | | | | | |nsupdate(8), dig(8) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |verifica informação de zona | |dlint (http:// |V:3, I:59 (http://qa.debian.org/|96 (http://packages.qa.debian.org/d/ | |DNS (http://en.wikipedia.org| |packages.debian.org/sid/dlint) |popcon.php?package=dlint) |dlint.html) |, , |/wiki/Domain_Name_System) | | | | | |usando pesquisas do servidor| | | | | |de nomes | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |rastreia uma cadeia de | |dnstracer (http:// |V:0, I:3 (http://qa.debian.org/ |81 (http://packages.qa.debian.org/d/ | |servidores DNS (http:// | |packages.debian.org/sid/ |popcon.php?package=dnstracer) |dnstracer.html) |, , |en.wikipedia.org/wiki/ | |dnstracer) | | | |Domain_Name_System) até à | | | | | |fonte | +------------------------------------------------------------------------------------------------------------------------------------------------------+ 5.1.1. A resolução de nome de máquina A resolução de nome de máquina também é suportada actualmente     pelo mecanismo NSS (Name Service Switch) (http://en.wikipedia.org /wiki/Name_Service_Switch) . O fluxo desta resolução é o seguinte. 1. O ficheiro "/etc/nsswitch.conf" com "hosts: files dns" dicta a ordem de resolução do nome de máquina. (Isto substitui a funcionalidade antiga de "order" em "/etc/host.conf".) 2. O método files é invocado primeiro. Se o nome de máquina for encontrado no ficheiro "/etc/hosts", devolve um endereço     válido e termina. (O ficheiro "/etc/host.conf" contém "multi on".) 3. O método dns é invocado. Se o nome de máquina é encontrado pela consulta ao Internet Domain Name System (DNS) (http:// en.wikipedia.org/wiki/Domain_Name_System) identificado pelo ficheiro "/etc/resolv.conf", devolve um endereço válido para ele e termina.     Por exemplo, "/etc/hosts" parece-se com o seguinte. 127.0.0.1 localhost 127.0.1.1 # The following lines are desirable for IPv6 capable hosts     ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts Cada linha começa por um endereço IP (http://en.wikipedia.org/     wiki/IP_address) e é seguida pelo hostname (http:// en.wikipedia.org/wiki/Hostname) associado. O endereço IP 127.0.1.1 na segunda linha deste exemplo pode não ser encontrada nalguns outros sistemas tipo-Unix. O Instalador     Debian (http://en.wikipedia.org/wiki/Debian-Installer) cria esta entrada para um sistema sem um endereço IP permanente como contenção para algum software (p.e., GNOME) conforme é documentado no bug #316099 (http://bugs.debian.org/719621) .     O coincide com o nome da máquina definido em "/etc/ hostname".     Para um sistema com um endereço IP permanente, esse endereço IP permanente deve ser utilizado aqui em vez do 127.0.1.1. For a system with a permanent IP address and a fully qualified domain name (FQDN) (http://en.wikipedia.org/wiki/FQDN) provided     by the Domain Name System (DNS) (http://en.wikipedia.org/wiki/ Domain_Name_System) , that canonical . should be used instead of just . O "/etc/resolv.conf" é um ficheiro estático se o pacote resolvconf não estiver instalado. Se instalado, é um link     simbólico. De qualquer modo, contém informação que inicializa as rotinas de resolução de nomes. Se o DNS existir no IP= "192.168.11.1", contém o seguinte.     nameserver 192.168.11.1 O pacote resolvconf torna este "/etc/resolv.conf" num link     simbólico e gere o seu conteúdo automaticamente pelos scripts hook. For the PC workstation on the typical adhoc LAN environment, the     hostname can be resolved via Multicast DNS (mDNS, Zeroconf (http: //en.wikipedia.org/wiki/Zeroconf) ) in addition to the basic files and dns methods. * Avahi (http://en.wikipedia.org/wiki/Avahi_(software)) provides a framework for Multicast DNS Service Discovery on Debian. * It is equivalent of Apple Bonjour / Apple Rendezvous (http:// en.wikipedia.org/wiki/Bonjour_(software)) . * The libnss-mdns plugin package provides host name resolution via mDNS for the GNU Name Service Switch (NSS) functionality     of the GNU C Library (glibc). * The "/etc/nsswitch.conf" file should have stanza like "hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4". * Host names ending with the ".local" (http://en.wikipedia.org/ wiki/.local) pseudo-top-level domain (http://en.wikipedia.org /wiki/Pseudo-top-level_domain) (TLD) are resolved. * IP address "224.0.0.251" for IPv4 and "ff02::fb" for IPv6 are used. A resolução de nome de máquina através do depreciado NETBios sobre TCP/IP (http://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP) utilizada em antigos sistemas Windows pode ser disponibilizada ao     instalar o pacote winbind. O ficheiro "/etc/nsswitch.conf" deverá ter um bloco como "hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 wins" para activar esta funcionalidade. (Os sistemas modernos de Windows normalmente utilizam o método dns para a resolução dos nomes de máquinas.) 5.1.2. O nome da interface de rede O nome da interface de rede, p.e. eth0, é atribuído a cada hardware no kernel Linux conforme é encontrado, através do     mecanismo de configuração do espaço de utilizador, udev (veja Secção 3.5.11, “O sistema udev”). O nome da interface de rede é referido como interface física em ifup(8) e interfaces(5). De modo a assegurar que cada interface de rede seja chamado de modo persistente em cada arranque do sistema utilizando o MAC address (http://en.wikipedia.org/wiki/MAC_address) e etc., existe um ficheiro de registo "/etc/udev/rules.d/     70-persistent-net.rules". Este ficheiro é gerado automaticamente pelo programa "/lib/udev/write_net_rules", provavelmente executado pelo ficheiro de regras persistent-net-generator.rules". Você pode modificá-lo para alterar as regras de nomeação. Cuidado Quando editar o ficheiro de regras "/etc/udev/rules.d/ 70-persistent-net.rules", você tem de manter cada regra numa     única linha e o MAC address (http://en.wikipedia.org/wiki/ MAC_address) em minúsculas. Por exemplo, se você encontrar "FireWire device" e "PCI device" neste ficheiro, provavelmente vai querer nomear o "PCI device" como eth0 e configura-lo como a interface de rede principal. 5.1.3. A gama de endereços de rede para a LAN Vamos lembrar as gamas de endereços do IPv4 de 32 bits em cada classe reservada para utilização em redes de área local (LANs)     (http://en.wikipedia.org/wiki/Local_area_network) pelo rfc1918 (http://tools.ietf.org/html/rfc1918) . É garantido que estes endereços não estejam em conflito com quaisquer endereços na Internet. Tabela 5.2. Lista de gamas de endereços de rede +---------------------------------------------------------------+ |Classe|endereços de rede|máscara de |máscara de |# de | | | |rede |rede /bits |sub-redes| |------+-----------------+-------------+--------------+---------| |A |10.x.x.x |255.0.0.0 |/8 |1 |     |------+-----------------+-------------+--------------+---------| |B |172.16.x.x — |255.255.0.0 |/16 |16 | | |172.31.x.x | | | | |------+-----------------+-------------+--------------+---------| |C |192.168.0.x — |255.255.255.0|/24 |256 | | |192.168.255.x | | | | +---------------------------------------------------------------+ Nota Se for atribuído um destes endereços a uma máquina, então essa máquina não poderá aceder à Internet directamente mas terá de     aceder através de uma gateway que age como um proxy para serviços individuais ou então fará Network Address Translation(NAT) (http: //en.wikipedia.org/wiki/Network_address_translation) . O router de banda larga geralmente executa NAT para o ambiente LAN do consumidor. 5.1.4. O suporte a dispositivos de rede Apesar da maioria dos dispositivos de hardware serem suportados pelo sistema Debian, existem alguns dispositivos de rede que     necessitam de firmware não-livre DFSG (http://www.debian.org/ social_contract#guidelines) para os suportar. Por favor veja Secção 9.7.6, “Controladores de hardware e firmware”. 5.2. A configuração moderna de rede para desktop Os sistemas Debian squeeze podem gerir a ligação de rede através de software daemon (http://en.wikipedia.org/wiki/Daemon_     (computer_software)) de gestão como o NetworkManager (NM) (http:/ /en.wikipedia.org/wiki/NetworkManager) (network-manager e pacotes associados) ou Wicd (http://en.wikipedia.org/wiki/Wicd_ (Linux_Network_Manager)) (wicd e pacotes associados). * Vêm com as suas próprias GUIs (http://en.wikipedia.org/wiki/ Graphical_user_interface) e programas de linha de comandos como as suas interfaces de utilizador. * Vêm com os seus próprios daemons (http://en.wikipedia.org/ wiki/Daemon_(computer_software)) como os seus sistemas de backend.     * Permitem ligação fácil do seu sistema à Internet. * Permitem gestão fácil de configuração de redes com e sem fios. * Permitem-nos configurar a rede independentemente do pacote legacy ifupdown. Nota     Não utilize estas ferramentas de configuração de rede automáticas em servidores. Estas são destinadas principalmente para os utilizadores móveis em portáteis. Estas ferramentas modernas de configuração de rede necessitam ser     correctamente configuradas para evitar entrarem em conflito com o pacote legacy ifupdown e o seu ficheiro de configuração "/etc/ network/interfaces". Nota Algumas funcionalidades destas ferramentas automáticas de configuração de rede podem sofrer regressões. Não são tão     robustas como o pacote legacy ifupdown. Consulte BTS do network-manager (http://bugs.debian.org/cgi-bin/pkgreport.cgi? package=network-manager) e BTS do wicd (http://bugs.debian.org/ cgi-bin/pkgreport.cgi?package=wicd) para os problemas e limitações actuais. 5.2.1. Ferramentas GUI de configuração de rede Documentação oficial para NM e Wicd em Debian são     disponibilizadas em "/usr/share/doc/network-manager/ README.Debian" e "/usr/share/doc/wicd/README.Debian", respectivamente.     Essencialmente, a configuração de rede para desktop é feita como se segue. 1. Tornar o utilizador de ambiente de trabalho, p.e. foo, pertencente ao grupo "netdev" com o seguinte (Em alternativa, em ambientes de trabalho modernos como o GNOME e o KDE, faça-o automaticamente através de D-bus (http:// en.wikipedia.org/wiki/D-Bus) ). $ sudo adduser foo netdev 2. Mantenha a configuração de "/etc/network/interfaces" tão simples como o seguinte.     auto lo iface lo inet loopback 3. Reiniciar NM ou Wicd com o seguinte. $ sudo /etc/init.d/network-manager restart $ sudo /etc/init.d/wicd restart 4. Configure a sua rede através da GUI. Nota     Apenas as interfaces que não estão listadas em "/etc/network/ interfaces" ou que foram configuradas com "auto …" ou "allow-hotplug …" e "iface … inet dhcp" (sem outras opções) são geridas pelo NM para evitar conflitos com o ifupdown. Dica Se desejar estender as capacidades de configuração de rede do NM,     por favor procure módulos plug-in apropriados e pacotes suplementares como os network-manager-openconnect, network-manager-openvpn-gnome, network-manager-pptp-gnome, mobile-broadband-provider-info, gnome-bluetooth, etc. O mesmo vale para o Wicd. Cuidado Estas ferramentas automáticas de configuração de rede podem não ser compatíveis com as configurações esotéricas do legado ifupdown em "/etc/network/interfaces" como aquelas em Secção 5.5,     “A configuração básica de rede com ifupdown (legacy)” e Secção 5.6, “A configuração de rede avançada com ifupdown (antigo)”. Consulte BTS do network-manager (http:// bugs.debian.org/cgi-bin/pkgreport.cgi?package=network-manager) e BTS do wicd (http://bugs.debian.org/cgi-bin/pkgreport.cgi?package =wicd) para os problemas e limitações actuais. 5.3. A ligação e antiga configuração de rede Quando o método descrito em Secção 5.2, “A configuração moderna     de rede para desktop” não satisfizer as suas necessidades, deve utilizar a ligação de rede e método antigo de configuração que combina muitas ferramentas mais simples.     A antiga ligação de rede é específica para cada método (veja Secção 5.4, “O método de ligação de rede (antigo)”).     Existem 2 tipos de programas para a configuração de rede de baixo nível em Linux (veja Secção 5.7.1, “Comandos iproute2”). * Os programas antigos net-tools (http:// www.linuxfoundation.org/en/Net:Net-tools) (ifconfig(8), …) são do sistema de rede Linux NET-3. A maioria estão agora     obsoletos. * Os novos programs Linux iproute2 (http:// www.linuxfoundation.org/en/Net:Iproute2) (ip(8), …) são o sistema de rede actual do Linux. Apesar destes programas de rede de baixo nível serem poderosos,     não são tão práticos de utilizar. Por isso foram criados sistema de configuração de rede de alto nível. O pacote ifupdown é o standard de facto para tais sistemas de configuração de rede de alto nível em Debian. Permite-lhe activar     a rede simplesmente ao fazer, p. e., "ifup eth0". O seu ficheiro de configuração é o ficheiro "/etc/network/interfaces" e o seu conteúdo típico é o seguinte: auto lo iface lo inet loopback     auto eth0 iface eth0 inet dhcp O pacote resolvconf foi criado como suplemento ao sistema ifupdown para suportar uma fácil configuração da resolução de endereços de rede ao automatizar a rescrita do ficheiro de     configuração do resolvedor "/etc/resolv.conf". Agora, a maioria dos pacotes de configuração de rede em Debian estão modificados para utilizar o pacote resolvconf (veja "/usr/share/doc/ resolvconf/README.Debian"). Scripts de ajuda do pacote ifupdown tais como ifplugd, guessnet, ifscheme, etc. são criados para automatizar a configuração     dinâmica do ambiente de rede para os PCs móveis assim como numa rede com fios. Estes são relativamente difíceis de usar mas funcionam bem com o sistema ifupdown existente. Estes estão explicados em detalhe com exemplos (veja Secção 5.5,     “A configuração básica de rede com ifupdown (legacy)” e Secção 5.6, “A configuração de rede avançada com ifupdown (antigo)”). 5.4. O método de ligação de rede (antigo) Cuidado O método de teste de ligação descrito nesta secção destina-se a     propósitos de teste. Não se destina a ser utilizado directamente para as ligações do dia-a-dia de rede. Você é avisado para utilizá-lo via NM, Wicd, ou do pacote ifupdown (veja Secção 5.2, “A configuração moderna de rede para desktop” e Secção 5.5, “A configuração básica de rede com ifupdown (legacy)”).     O método de ligação de rede típico e caminho de ligação para um PC pode ser resumido ao seguinte: Tabela 5.3. Lista de métodos de ligação de rede e caminhos de ligação +---------------------------------------------------------------+ | |método | | |PC |de |caminho de ligação | | |ligação | | |--------+--------+---------------------------------------------| |Porta | |⇔ modem (http://en.wikipedia.org/wiki/Modem) | |série |PPP |⇔ POTS ⇔ ponto de acesso dial-up ⇔ ISP |     |(ppp0) | | | |--------+--------+---------------------------------------------| |Porta |PPPoE/ |⇔ BB-modem ⇔ serviço BB ⇔ ponto de acesso BB | |Ethernet|DHCP/ |⇔ ISP | |(eth0) |Estático| | |--------+--------+---------------------------------------------| |Porta | |⇔ LAN ⇔ router BB com with tradução de | |Ethernet|DHCP/ |endereços de rede (NAT) (http:// | |(eth0) |Estático|en.wikipedia.org/wiki/ | | | |Network_address_translation) (⇔ BB-modem …) | +---------------------------------------------------------------+     Aqui está um sumário do script de configuração para cada método de ligação. Tabela 5.4. Lista de configurações de ligação de rede +---------------------------------------------------------------+ |método de |configuração |pacote(s) | |ligação | |backend | |---------------+-------------------------------+---------------| |PPP |pppconfig para criar chat |pppconfig, ppp | | |determinista | | |---------------+-------------------------------+---------------| |PPP |wvdialconf para criar chat |ppp, wvdial | |(alternativa) |heurístico | | |---------------+-------------------------------+---------------|     |PPPoE |pppoeconf para criar chat |pppoeconf, ppp | | |determinista | | |---------------+-------------------------------+---------------| |DHCP |descrito em "/etc/dhcp/ |isc-dhcp-client| | |dhclient.conf" | | |---------------+-------------------------------+---------------| |IP estático |descrito em "/etc/network/ |net-tools | |(IPv4) |interfaces" | | |---------------+-------------------------------+---------------| |IP estático |descrito em "/etc/network/ |iproute | |(IPv6) |interfaces" | | +---------------------------------------------------------------+     A ligação de rede anónima significa o seguinte. Tabela 5.5. Lista de ligações de rede anónimas +---------------------------------------------------------------+ |acrónimo |significado | |--------------------------------------+------------------------| |POTS (http://en.wikipedia.org/wiki/ |serviço de antigo | |Plain_old_telephone_service) |telefone simples | |--------------------------------------+------------------------| | |banda larga (http:// | |BB |en.wikipedia.org/wiki/ | | |Broadband) | |--------------------------------------+------------------------| | |ex. a linha de | | |subscrição digital | |serviço BB |(DSL), a TV por cabo, ou| | |a fibra até aos casas | | |(FTTP) | |--------------------------------------+------------------------| | |ex. o modem DSL (http://| | |en.wikipedia.org/wiki/ | | |DSL_modem) , o modem de | | |cabo (http:// | |modem BB |en.wikipedia.org/wiki/ | | |Cable_modem) , ou o |     | |terminal de rede óptica | | |(ONT) (http:// | | |en.wikipedia.org/wiki/ | | |FTTP) | |--------------------------------------+------------------------| |LAN (http://en.wikipedia.org/wiki/ |rede de área local | |Local_area_network) | | |--------------------------------------+------------------------| |WAN (http://en.wikipedia.org/wiki/ |rede de área alargada | |Wide_area_network) | | |--------------------------------------+------------------------| |DHCP (http://en.wikipedia.org/wiki/ |protocolo de | |Dynamic_Host_Configuration_Protocol) |configuração dinâmico de| | |máquina | |--------------------------------------+------------------------| |PPP (http://en.wikipedia.org/wiki/ |protocolo | |Point-to-Point_Protocol) |ponto-para-ponto | |--------------------------------------+------------------------| |PPPoE (http://en.wikipedia.org/wiki/ |protocolo | |Point-to-Point_Protocol_over_Ethernet)|ponto-para-ponto sobre | | |Ethernet | |--------------------------------------+------------------------| |ISP (http://en.wikipedia.org/wiki/ISP)|Provedor de serviço de | | |Internet | +---------------------------------------------------------------+ Nota     Os serviços de ligação WAN via TV por cabo são normalmente servidos por DHCP ou PPPoE. Os de ADSL e FTTP são geralmente servidos por PPPoE. Você tem de consultar o seu ISP para os requesitos de configuração exactos para a ligação WAN. Nota Quando é utilizado um router de banda larga para criar um ambiente LAN caseiro, os PCs na LAN são ligados à WAN através do     router com tradução de endereços de rede (NAT) (http:// en.wikipedia.org/wiki/Network_address_translation) . Para tais casos, as interfaces de rede dos PCs na LAN são servidas por DHCP ou IP estático a partir do router. O router tem de ser configurado para ligar à WAN seguindo as instruções do seu ISP. 5.4.1. A ligação DHCP com Ethernet A típica rede moderna de casa ou de pequena empresa, isto é, LAN, está ligada à WAN (Internet) por um router de banda larga de     classe de consumidor. A LAN por detrás deste router é servida geralmente pelo servidor de protocolo de configuração dinâmica de máquinas (DHCP) (http://en.wikipedia.org/wiki/ Dynamic_Host_Configuration_Protocol) que corre no router. Instale apenas o pacote isc-dhcp-client para a Ethernet servida     pelo protocolo de configuração dinâmica de máquinas (DHCP) (http: //en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol) .     Veja dhclient.conf(5). 5.4.2. A ligação de IP estático com a Ethernet     Não é necessária nenhuma acção especial para a Ethernet servida por IP estático. 5.4.3. A ligação PPP com o pppconfig O script de configuração pppconfig configura a ligação PPP (http:     //en.wikipedia.org/wiki/Point-to-Point_Protocol) interactivamente ao seleccionar o seguinte. * O número de telefone * O nome de utilizador do ISP * A palavra-passe do ISP     * A velocidade da porta * A porta de comunicação do modem * O método de autenticação Tabela 5.6. Lista de ficheiros de configuração para a ligação PPP (http://en.wikipedia.org/wiki/Point-to-Point_Protocol) com pppconfig +---------------------------------------------------------------+ |ficheiro |função | |--------------+------------------------------------------------| |/etc/ppp/peers|O ficheiro de configuração gerado pelo pppconfig| |/|para um pppd específico para | |--------------+------------------------------------------------| |/etc/ |O ficheiro de configuração gerado pelo pppconfig| |chatscripts/ |para chat especifico com | | | |     |--------------+------------------------------------------------| |/etc/ppp/ |O parâmetro de execução geral para o pppd | |options | | |--------------+------------------------------------------------| | |Dados de autenticação para PAP (http:// | |/etc/ppp/ |en.wikipedia.org/wiki/ | |pap-secret |Password_authentication_protocol) (risco de | | |segurança) | |--------------+------------------------------------------------| | |Dados de autenticação para CHAP (http:// | |/etc/ppp/ |en.wikipedia.org/wiki/ | |chap-secret |Challenge-handshake_authentication_protocol) | | |(mais seguro) | +---------------------------------------------------------------+ Cuidado     O valor "" do "provedor" é assumido se os comandos pon e poff forem invocados sem argumentos.     Você pode testar a configuração usando ferramentas de configuração de baixo nível como as seguintes. $ sudo pon     ... $ sudo poff     Veja "/usr/share/doc/ppp/README.Debian.gz". 5.4.4. A ligação PPP alternativa com o wvdialconf Uma aproximação diferente a utilizar pppd(8) é corrê-lo a partir do wvdial(1) que vem no pacote wvdial. Em vez do pppd correr o     chat(8) para marcar e negociar a ligação, o wvdial faz a marcação e a negociação inicial e depois arranca o pppd para fazer o resto.     O script de configuração wvdialconf configura a ligação PPP interactivamente ao seleccionar apenas o seguinte: * O número de telefone     * O nome de utilizador do ISP * A palavra-passe do ISP     wvdial tem sucesso a criar a ligação na maioria dos casos e mantém automaticamente uma lista de dados de autenticação. Tabela 5.7. Lista de ficheiros de configuração para a ligação PPP com wvdialconf +---------------------------------------------------------------+ |ficheiro |função | |-----------+---------------------------------------------------| |/etc/ppp/ |O ficheiro de configuração gerado pelo wvdialconf | |peers/ |para o pppd, específico para wvdial | |wvdial | | |-----------+---------------------------------------------------| |/etc/ |O ficheiro de configuração gerado pelo wvdialconf | |wvdial.conf| | |-----------+---------------------------------------------------|     |/etc/ppp/ |O parâmetro de execução geral para o pppd | |options | | |-----------+---------------------------------------------------| | |Dados de autenticação para PAP (http:// | |/etc/ppp/ |en.wikipedia.org/wiki/ | |pap-secret |Password_authentication_protocol) (risco de | | |segurança) | |-----------+---------------------------------------------------| | |Dados de autenticação para CHAP (http:// | |/etc/ppp/ |en.wikipedia.org/wiki/ | |chap-secret|Challenge-handshake_authentication_protocol) (mais | | |seguro) | +---------------------------------------------------------------+     Você pode testar a configuração usando ferramentas de configuração de baixo nível como as seguintes. $ sudo wvdial     ... $ sudo killall wvdial     Veja wvdial(1) e wvdial.conf(5). 5.4.5. A ligação PPPoE com o pppoeconf Quando o seu ISP o serve com ligação PPPoE e você decide ligar o seu PC directamente à WAN, a rede do seu PC tem de ser     configurada com PPPoE. PPPoE significa PPP over Ethernet. O script de configuração pppoeconf configura a ligação PPPoE interactivamente.     Os ficheiros de configuração são os seguintes: Tabela 5.8. Lista de ficheiros de configuração para a ligação PPPoE com pppoeconf +---------------------------------------------------------------+ |ficheiro |função | |------------+--------------------------------------------------| |/etc/ppp/ |O ficheiro de configuração gerado pelo pppoeconf | |peers/ |para o pppd, específico para pppoe | |dsl-provider| | |------------+--------------------------------------------------| |/etc/ppp/ |O parâmetro de execução geral para o pppd |     |options | | |------------+--------------------------------------------------| | |Dados de autenticação para PAP (http:// | |/etc/ppp/ |en.wikipedia.org/wiki/ | |pap-secret |Password_authentication_protocol) (risco de | | |segurança) | |------------+--------------------------------------------------| | |Dados de autenticação para CHAP (http:// | |/etc/ppp/ |en.wikipedia.org/wiki/ | |chap-secret |Challenge-handshake_authentication_protocol) (mais| | |seguro) | +---------------------------------------------------------------+     Você pode testar a configuração usando ferramentas de configuração de baixo nível como as seguintes. $ sudo /sbin/ifconfig eth0 up $ sudo pon dsl-provider     ... $ sudo poff dsl-provider $ sudo /sbin/ifconfig eth0 down     Veja "/usr/share/doc/pppoeconf/README.Debian". 5.5. A configuração básica de rede com ifupdown (legacy) The traditional TCP/IP network (http://en.wikipedia.org/wiki/     Internet_Protocol_Suite) setup on the Debian system uses ifupdown package as a high level tool. There are 2 typical cases. * Para sistemas de IP dinâmico, como os PCs portáteis, você configurar a rede TCP/IP com o pacote resolvconf para permitir-lhe mudar facilmente a configuração da sua rede (veja Secção 5.5.4, “A interface de rede servida por DHCP”).     * Para sistemas de IP estático como os servidores, você deve configurar a rede TCP/IP sem o pacote resolvconf e manter o seu sistema simples (veja Secção 5.5.5, “A interface de rede com IP estático”). Estes métodos de configuração tradicionais são muito úteis se     desejar definir configurações avançadas (veja Secção 5.5, “A configuração básica de rede com ifupdown (legacy)”). O pacote ifupdown disponibiliza uma estrutura standard para a     configuração de rede de alto nível no sistema Debian. Nesta secção, aprendemos a configuração básica de rede com o ifupdown com uma introdução simplificada e muitos exemplos típicos. 5.5.1. A sintaxe simplificada de comando O pacote ifupdown contém dois comandos: ifup(8) e ifdown(8). Eles     oferecem configuração de rede de alto nível ditada pelo ficheiro de configuração "/etc/network/interfaces". Tabela 5.9. Lista de comandos de configuração de rede básicos com ifupdown +---------------------------------------------------------------+ |comando|acção | |-------+-------------------------------------------------------|     |ifup |activa a interface de rede eth0 com a configuração eth0| |eth0 |se existir "iface eth0" | |-------+-------------------------------------------------------| |ifdown |desactiva a interface de rede eth0 com a configuração | |eth0 |eth0 se existir "iface eth0" | +---------------------------------------------------------------+ Atenção     Não utilize as ferramentas de configuração de baixo nível tais como os comandos ifconfig(8) e ip(8) para configurar uma interface em estado activo. Nota     Não existe nenhum comando ifupdown. 5.5.2. A sintaxe básica de "/etc/network/interfaces"     A sintaxe chave de "/etc/network/interfaces" como explicada em interfaces(5) pode ser resumida ao seguinte. Tabela 5.10. Lista de estrofes em "/etc/network/interfaces" +---------------------------------------------------------------+ |estrofe |significado | |--------------------------+------------------------------------| | |inicia a interface | |"auto "| no arranque do | | |sistema | |--------------------------+------------------------------------| |"allow-auto |, , | |" | | |--------------------------+------------------------------------| | |inicia a interface | |"allow-hotplug | quando o kernel | |" |detecta um evento hotplug da | | |interface |     |--------------------------+------------------------------------| |Linhas começadas por |definem a configuração de rede | |"iface | | | …" | | |--------------------------+------------------------------------| |Linhas iniciadas por |define valor de mapeamento de | |"mapping | para o | || correspondente | |" | | |--------------------------+------------------------------------| |A linha começada com um |ignorar como comentários (os | |cardinal "#" |comentários no fim da linha não são | | |suportados) | |--------------------------+------------------------------------| |Uma linha terminada com |estende a configuração para a | |uma barra inversa "\" |próxima linha | +---------------------------------------------------------------+     As linhas começadas por iface têm a seguinte sintaxe: iface     ... Para a configuração básica, mapping não é utilizado e você     utiliza o nome da interface de rede como o nome da configuração de rede (Veja Secção 5.6.5, “A estrofe de mapeamento”). Atenção     Não defina duplicados da estrofe "iface" para uma interface de rede em "/etc/network/interfaces". 5.5.3. A interface de rede loopback A seguinte entrada de configuração no ficheiro "/etc/network/     interfaces" activa a interface de rede loopback lo durante o arranque do sistema (via estrofe auto).     auto lo iface lo inet loopback     Isto está sempre presente no ficheiro "/etc/network/interfaces". 5.5.4. A interface de rede servida por DHCP Após preparar o sistema com Secção 5.4.1, “A ligação DHCP com     Ethernet”, a interface de rede servida por DHCP é configurada ao criar a entrada de configuração no ficheiro "/etc/network/ interfaces" como o seguinte:     allow-hotplug eth0 iface eth0 inet dhcp Quando o kernel Linux detecta a interface física eth0, a estrofe     allow-hotplug faz com que ifup active a interface e a estrofe iface faz com que ifup utilize DHCP para configurar a interface. 5.5.5. A interface de rede com IP estático A interface de rede servida por IP estático é configurada ao     criar a entrada de configuração no ficheiro "/etc/network/ interfaces" como se segue: allow-hotplug eth0 iface eth0 inet static address 192.168.11.100     netmask 255.255.255.0 gateway 192.168.11.1 dns-domain exemplo.com dns-nameservers 192.168.11.1 Quando o kernel Linux detecta a interface física eth0, a estrofe     allow-hotplug faz com que ifup active a interface e a estrofe iface faz com que ifup use IP estático para configurar a interface.     Aqui, eu assumi o seguinte: * Alcance de endereços IP da rede LAN: 192.168.11.0 - 192.168.11.255 * Endereço IP da gateway: 192.168.11.1     * Endereço IP do PC: 192.168.11.100 * O pacote resolvconf: instalado * O nome de domínio: "exemplo.com" * Endereço IP do servidor DNS: 192.168.11.1 Quando o pacote resolvconf não estiver instalado, a configuração     relacionada com DNS precisa ser feita manualmente ao editar o ficheiro "/etc/resolv.conf" como se seguei:     nameserver 192.168.11.1 domain exemplo.com Cuidado     Os endereços IP utilizados no exemplo acima não se destinam a ser copiados literalmente. Você tem de ajustar os números do IP à configuração da sua rede actual. 5.5.6. O básico da interface de rede sem fios A LAN sem fios (WLAN resumindo) (http://en.wikipedia.org/wiki/ Wireless_LAN) disponibiliza a ligação sem fios mais rápida     através da difusão espectral de bandas de rádio não licenciadas baseada no conjunto de standards chamado IEEE 802.11 (http:// en.wikipedia.org/wiki/IEEE_802.11) . As interfaces de WLAN são quase iguais às interfaces Ethernet normais mas necessitam que lhes seja disponibilizado um ID de rede e dados de chave de encriptação quando são inicializadas. As     suas ferramentas de rede de alto nível são exactamente as mesmas das interfaces Ethernet com a excepção que os nomes das interfaces são um pouco diferentes como eth1, wlan0, ath0, wifi0, … dependendo das drivers de kernel usadas. Dica     O dispositivo wmaster0 é o dispositivo mestre o qual é um dispositivo interno usado apenas por SoftMAC (http:// en.wikipedia.org/wiki/SoftMAC) com a nova API mac80211 do Linux (http://linuxwireless.org/) .     Aqui estão algumas palavras chave para lembrar para a WLAN. Tabela 5.11. Lista de siglas para WLAN +---------------------------------------------------------------+ |acrónimo|palavra completa |significado | |--------+-------------------------+----------------------------| | | |ID de rede a 16 bit usado | | | |por redes pre-802.11 WaveLAN| |NWID |ID de rede |(http://en.wikipedia.org/ | | | |wiki/WaveLAN) (muito | | | |descontinuado) | |--------+-------------------------+----------------------------| | | |nome de rede dos Pontos de | | | |Acesso Wireless (APs) (http:| | |(Extenso) Service Set |//en.wikipedia.org/wiki/ | | |Identifier (http:// |Wireless_access_point) | |(E)SSID |en.wikipedia.org/wiki/ |interligados para formar uma| | |Service_set_identifier) |LAN 802.11 wireless (http://| | | |en.wikipedia.org/wiki/ |     | | |IEEE_802.11) integrada, ID | | | |de Domínio | |--------+-------------------------+----------------------------| | |Wired Equivalent Privacy |standard de encriptação | |WEP, |(http://en.wikipedia.org/|wireless 64-bit (128-bit) de| |(WEP2) |wiki/ |1ª geração com chave de 40 | | |Wired_Equivalent_Privacy)|bits (descontinuado) | |--------+-------------------------+----------------------------| | |Wi-Fi Protected Access |standard de encriptação | |WPA |(http://en.wikipedia.org/|wireless de 2ª geração | | |wiki/ |(maioria dos 802.11i), | | |Wi-Fi_Protected_Access) |compatível com WEP | |--------+-------------------------+----------------------------| | |Wi-Fi Protected Access 2 |standard de encriptação | |WPA2 |(http://en.wikipedia.org/|wireless de 3ª geração | | |wiki/IEEE_802.11i) |(todos 802.11i), não | | | |compatível com WEP | +---------------------------------------------------------------+     A escolha actual do protocolo é normalmente limitada pelo router wireless que você possui. 5.5.7. A interface LAN wireless com WPA/WPA2     Tem de instalar o pacote wpasupplicant para suportar a WLAN com o novo WPA/WPA2. No caso de IP servido por DHCP (http://en.wikipedia.org/wiki/     Dynamic_Host_Configuration_Protocol) em ligação WLAN, a entrada no ficheiro "/etc/network/interfaces" deverá ser conforme a seguinte: allow-hotplug ath0 iface ath0 inet dhcp     wpa-ssid homezone # hexadecimal psk is encoded from a plaintext passphrase wpa-psk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f     Veja "/usr/share/doc/wpasupplicant/README.modes.gz". 5.5.8. A interface LAN wireless com WEP Tem de instalar o pacote wireless-tools para suportar a WLAN com     o antigo WEP. (O seu router pode ainda usar esta infraestrutura insegura, mas é melhor do que nada.) Cuidado     Por favor note o seu tráfego de rede em WLAN com WEP pode ser interceptado por outros. No caso de IP servido por DHCP (http://en.wikipedia.org/wiki/     Dynamic_Host_Configuration_Protocol) em ligação WLAN, a entrada no ficheiro "/etc/network/interfaces" deverá ser conforme a seguinte: allow-hotplug eth0 iface eth0 inet dhcp wireless-essid Home     wireless-key1 0123-4567-89ab-cdef wireless-key2 12345678 wireless-key3 s:password wireless-defaultkey 2 wireless-keymode open     Veja "/usr/share/doc/wireless-tools/README.Debian". 5.5.9. A ligação PPP Tem de configurar a ligação PPP primeiro como descrito antes     (veja Secção 5.4.3, “A ligação PPP com o pppconfig”). Depois, adicione a entrada no ficheiro "/etc/network/interfaces" para o dispositivo PPP principal ppp0 como se segue.     iface ppp0 inet ppp provider 5.5.10. A ligação PPP alternativa Necessita primeiro de configurar a ligação PPP alternativa com o wvdial como descrito antes (veja Secção 5.4.4, “A ligação PPP     alternativa com o wvdialconf”). Depois, adicione a entrada no ficheiro "/etc/network/interfaces" para o dispositivo PPP principal ppp0 como se segue.     iface ppp0 inet wvdial 5.5.11. A ligação PPPoE Para um PC ligado directamente à WAN servido por PPPoE, você precisa de configurar o sistema com a ligação PPPoE como descrito     antes (veja Secção 5.4.5, “A ligação PPPoE com o pppoeconf”). Depois, adicione a entrada no ficheiro "/etc/network/interfaces" para o dispositivo PPPoE principal eth0 como se segue. allow-hotplug eth0 iface eth0 inet manual pre-up /sbin/ifconfig eth0 up up ifup ppp0=dsl     down ifdown ppp0=dsl post-down /sbin/ifconfig eth0 down # O seguinte é usado apenas internamente iface dsl inet ppp provider dsl-provider 5.5.12. O estado de configuração de rede do ifupdown O ficheiro "/etc/network/run/ifstate" armazena os estados de configuração de rede desejados para todas as interfaces de rede     actualmente activas e geridas pelo pacote ifupdown numa lista. Infelizmente, mesmo que o sistema ifupdown falhe ao activar uma interface como desejado, o ficheiro "/etc/network/run/ifstate" lista-a como activa. A menos que o resultado do comando ifconfig(8) para uma interface     não tenha uma linha como o exemplo seguinte, não pode ser usada como parte de uma rede IPV4 (http://en.wikipedia.org/wiki/IPv4) .     inet addr:192.168.11.2 Bcast:192.168.11.255 Mask:255.255.255.0 Nota     Para o dispositivo Ethernet ligado a PPPoE, ao resultado do comando ifconfig(8) falta uma linha que se parece com o exemplo em cima. 5.5.13. A reconfiguração de rede básica Quando tentar reconfigurar a interface, p.e., eth0, tem que primeiro desactivá-la com o comando "sudo ifdown eth0". Isto remove a entrada de eth0 do ficheiro "/etc/network/run/ifstate".     (Isto pode resultar nalguma mensagem de erro se a eth0 não estiver activa ou tiver sido mal configurada anteriormente. Até agora, parece ser seguro fazer isto para a estação de trabalho simples de um utilizador em qualquer altura.) Agora você é livre de rescrever o conteúdo de "/etc/network/     interfaces" como necessitar para reconfigurar a interface de rede eth0.     Então, você pode reactivar eth0 com o comando "sudo ifup eth0". Dica     Você pode (re)inicializar a interface de rede com um simples " sudo ifdown eth0;sudo ifup eth0". 5.5.14. O pacote ifupdown-extra     O pacote ifupdown-extra disponibiliza fáceis testes de ligação de rede para utilizar com o pacote ifupdown. * O comando network-test(1) pode ser usado a partir da shell.     * Os scripts automáticos são corridos para cada execução do comando ifup.     O comando network-test poupa-lhe a trabalheira de executar comandos de baixo nível para analisar o problema de rede.     Os scripts automáticos estão instalados em "/etc/network/*/" e executam o seguinte. * Verificar a ligação de cabo de rede * Verificar o uso duplicado de endereço IP     * Configura rotas estáticas do sistema baseadas na definição "/ etc/network/routes" * Verificar se a gateway de rede está ao alcance * Grava os resultados no ficheiro "/var/log/syslog"     Este registo do syslog é bastante útil para a administração de problemas de rede no sistema remoto. Dica O comportamento automático do pacote ifupdown-extra é     configurável com o "/etc/default/network-test". Algumas destas verificações automáticas abrandam o arranque do sistema um pouco porque demora algum tempo a escutar por respostas de ARP (http:// en.wikipedia.org/wiki/Address_Resolution_Protocol) . 5.6. A configuração de rede avançada com ifupdown (antigo) A funcionalidade do pacote ifupdown pode ser melhorada para além     do que foi descrito em Secção 5.5, “A configuração básica de rede com ifupdown (legacy)” com conhecimentos avançados. As funcionalidades descritas aqui são completamente opcionais.     Estou a ser preguiçoso e minimalista, raramente me incomodo a utilizar isto. Cuidado     Se não conseguir configurar a ligação de rede com a informação de Secção 5.5, “A configuração básica de rede com ifupdown (legacy)” , irá agravar a situação ao utilizar a informação em baixo. 5.6.1. O pacote ifplugd O pacote ifplugd é uma antiga ferramenta de configuração automática de rede que apenas pode gerir ligações Ethernet. Isto resolve situações de ligar/desligar cabos Ethernet para portáteis     e etc. Se tiver o NetworkManager (http://en.wikipedia.org/wiki/ NetworkManager) ou o Wicd (http://en.wikipedia.org/wiki/Wicd_ (Linux_Network_Manager)) (veja Secção 5.2, “A configuração moderna de rede para desktop”) instalado, não precisa deste pacote. Este pacote corre um daemon (http://en.wikipedia.org/wiki/Daemon_ (computer_software)) e substitui as funcionalidades auto ou     allow-hotplug (veja Tabela 5.10, “Lista de estrofes em "/etc/ network/interfaces"”) e inicia as interfaces após a sua ligação à rede.     Aqui está como utilizar o pacote ifplugd para a porta Ethernet interna, ex. eth0. 1. Remova a estrofe em "/etc/network/interfaces": "auto eth0" ou "allow-hotplug eth0". 2. Mantenha a estrofe em "/etc/network/interfaces": "iface eth0 inet …" e "mapping …".     3. instale o pacote ifplugd. 4. Corra "sudo dpkg-reconfigure ifplugd". 5. Coloque eth0 como a "interface estática para ser correspondida pelo ifplugd".     Agora, a configuração de rede funciona como deseja. * Após o ligar da máquina ou após a descoberta do hardware, a interface não é activada por si própria. o Processo de arranque rápido sem o longo tempo limite do DHCP. o Nenhuma interface activada de modo esquisito sem um endereço IPv4 apropriado (veja Secção 5.5.12, “O estado     de configuração de rede do ifupdown”). * Após encontrar o cabo Ethernet, a interface é activada. * Após algum tempo depois de desligar o cabo Ethernet, a interface é desactivada automaticamente. * Após ligar outro cabo Ethernet, a interface é activada sob o novo ambiente de rede. Dica     Os argumentos para o comando ifplugd(8) podem definir o seu comportamento tal como o atraso para reconfigurar interfaces. 5.6.2. O pacote ifmetric     O pacote ifmetric permite-nos manipular métricas de rotas à posteriori mesmo para DHCP.     O seguinte configura a interface eth0 para ser preferida sobre a interface wlan0. 1. Instale o pacote ifmetric. 2. Adicione uma linha de opção com "metric 0" logo por baixo da     linha "iface eth0 inet dhcp". 3. Adicione uma linha de opção com "metric 1" logo por baixo da linha "iface wlan0 inet dhcp". O 0 (zero) métrico significa que a rota de prioridade mais alta e     é a predefinida. O valor métrico mais alto significa rotas de prioridade mais baixa. O endereço IP da interface activa com o valor métrico mais baixo torna-se o originário. Veja ifmetric(8). 5.6.3. A interface virtual Uma única interface Ethernet física pode ser configurada como múltiplas interfaces virtuais com endereços IP diferentes.     Normalmente o objectivo é ligar uma interface a diferentes sub-redes de IP. Por exemplo, hospedagem web virtual baseada em endereço IP por uma única interface de rede é uma das tais aplicações.     Por exemplo, vamos supor o seguinte. * Uma única interface Ethernet na sua máquina está ligada a um hub de Ethernet (não ao router de banda larga). * O hub Ethernet esta ligado a ambos; Internet e rede LAN.     * A rede LAN usa a sub-rede 192.168.0.x/24. * A sua máquina usa endereço IP servido por DHCP com a interface física eth0 para a Internet. * A sua máquina usa 192.168.0.1 com a interface virtual eth0:0 para a LAN.     As seguintes estrofes em "/etc/network/interfaces" configuram a sua rede. iface eth0 inet dhcp metric 0 iface eth0:0 inet static     address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 metric 1 Cuidado Apesar deste exemplo de configuração com network address translation (NAT) (http://en.wikipedia.org/wiki/ Network_address_translation) que usa netfilter/iptables (http://     en.wikipedia.org/wiki/Netfilter) (veja Secção 5.9, “Infra-estrutura netfilter”) poder disponibilizar um router barato para a LAN com apenas uma interface única, não existem capacidades reais de firewall com tal configuração. Você deve utilizar 2 interfaces físicas com NAT tornar a rede local segura a partir da Internet. 5.6.4. A sintaxe de comando avançada O pacote ifupdown oferece configuração de rede avançada     utilizando o nome de configuração de rede e o nome de interface de rede. Eu utilizo uma terminologia ligeiramente diferente da usada em ifup(8) e interfaces(5). Tabela 5.12. Lista de terminologia para dispositivos de rede +---------------------------------------------------------------+ |terminologia|a minha |exemplos no texto que |descrição | |do manual |terminologia|se segue | | |------------+------------+----------------------+--------------| | | | |nome dado pelo| |nome da |nome da |lo, eth0, |kernel do | |interface |interface de| |Linux (usando |     |física |rede | |o mecanismo | | | | |udev) | |------------+------------+----------------------+--------------| | | | |testemunho de | |nome da |nome da |config1, config2, |nome seguindo | |interface |configuração||iface no "/etc| |lógica |de rede | |/network/ | | | | |interfaces" | +---------------------------------------------------------------+ Os comandos de configuração de rede básicos em Secção 5.5.1, “A     sintaxe simplificada de comando ” necessitam que o testemunho de nome da configuração de rede da estrofe iface corresponda ao nome da interface de rede em "/etc/network/interfaces". Os comandos de configuração de rede avançados activam a separação     do nome da configuração de rede e o nome da interface de rede em "/etc/network/interfaces" como se segue. Tabela 5.13. Lista de comandos avançados de configuração de rede com ifupdown +---------------------------------------------------------------+ |comando |acção | |-----------+---------------------------------------------------| |ifup eth0= |torna activa a interface de rede eth0 com a | |config1 |configuração config1 | |-----------+---------------------------------------------------|     |ifdown eth0|torna inactiva a interface de rede eth0 com a | |=config1 |configuração config1 | |-----------+---------------------------------------------------| |ifup eth0 |torna activa a interface de rede eth0 com a | | |configuração seleccionada pela estrofe mapping | |-----------+---------------------------------------------------| |ifdown eth0|torna inactiva a interface de rede eth0 com a | | |configuração seleccionada pela estrofe mapping | +---------------------------------------------------------------+ 5.6.5. A estrofe de mapeamento Nós saltamos a explicação da estrofe mapping no "/etc/network/     interfaces" em Secção 5.5.2, “A sintaxe básica de "/etc/network/ interfaces"” para evitar complicações. Esta estrofe tem a seguinte sintaxe: mapping script     map map map ... Isto disponibiliza a funcionalidade avançada ao ficheiro "/etc/     network/interfaces" ao automatizar a escolha da configuração com o script de mapeamento especificado por .     Vamos seguir a execução do seguinte.     $ sudo ifup eth0 Quando o "" corresponde a "eth0", esta     execução leva à execução do seguinte comando para configurar automaticamente eth0.     $ sudo ifup eth0=$(echo -e ' \n \n ...' | eth0)     Aqui, as linhas de entrada do script com "map" são opcionais e podem ser repetidas. Nota     O glob para a estrofe mapping funciona como o glob de nome de ficheiro em shell (veja Secção 1.5.6, “Glob da shell”). 5.6.6. A configuração manual da rede comutável Aqui está como mudar manualmente entre várias configurações de     rede sem reescrever o ficheiro "/etc/network/interfaces" como em Secção 5.5.13, “A reconfiguração de rede básica”.     Para todas as configurações de rede que necessite aceder, crie um único ficheiro "/etc/network/interfaces" conforme o seguinte: auto lo iface lo inet loopback iface config1 inet dhcp iface config2 inet static address 192.168.11.100 netmask 255.255.255.0 gateway 192.168.11.1 dns-domain lan dns-nameservers 192.168.11.1     iface pppoe inet manual pre-up /sbin/ifconfig eth0 up up ifup ppp0=dsl down ifdown ppp0=dsl post-down /sbin/ifconfig eth0 down # O seguinte é usado apenas internamente iface dsl inet ppp provider dsl-provider iface pots inet ppp provider provider Por favor note que o nome de configuração de rede o qual é o testemunho após iface não usa o testemunho para o nome da     interface de rede. Também, não existe nenhuma estrofe auto nem estrofe allow-hotplug para iniciar a interface de rede eth0 automaticamente após eventos.     Agora está pronto para comutar a configuração de rede. Vamos levar o seu PC para uma LAN servida por DHCP. Você activa a     interface de rede (a interface física) eth0 ao atribuir-lhe o nome de configuração de rede (o nome lógico da interface) config1 com o seguinte. $ sudo ifup eth0=config1     Password: ...     A interface eth0 está activa, configurada por DHCP e ligada a LAN.     $ sudo ifdown eth0=config1 ...     A interface eth0 está inactiva e desligada da LAN. Vamos levar o seu PC para uma LAN servida por IP estático. Você     activa a interface de rede eth0 ao atribuir-lhe o nome de configuração de rede config2 para ela com o seguinte.     $ sudo ifup eth0=config2 ... A interface eth0 está activa, configurada com IP estático e ligada à LAN. Os parâmetros adicionais dados como dns-*     configuram o conteúdo de "/etc/resolv.conf". Este "/etc/ resolv.conf" é melhor is better gerido se o pacote resolvconf estiver instalado.     $ sudo ifdown eth0=config2 ...     A interface eth0 está inactiva e desligada da LAN, outra vez. Vamos levar o seu PC para uma porta em modem-BB ligado ao serviço     servido de PPPoE. Você activa a interface de rede eth0 ao atribuir o nome de configuração de rede pppoe a ela com o seguinte.     $ sudo ifup eth0=pppoe ...     A interface eth0 está activa, configurada com ligação PPPoE directamente ao ISP.     $ sudo ifdown eth0=pppoe ...     A interface eth0 está inactiva e desligada, outra vez. Vamos levar o seu PC para uma localização sem LAN ou modem BB mas     com POTS e modem. Você activa a interface de rede ppp0 ao atribuir o nome de configuração de rede pots a ela com o seguinte.     $ sudo ifup ppp0=pots ...     A interface ppp0 está activa e ligada à Internet com PPP.     $ sudo ifdown ppp0=pots ...     A interface ppp0 está inactiva e desligada da Internet.     Você deve verificar o ficheiro "/etc/network/run/ifstate" para o estado actual da configuração de rede do sistema ifupdown. Atenção     Talvez necessite ajustar os números no final de eth*, ppp*, etc. se possuir várias interfaces de rede. 5.6.7. Scripts com o sistema ifupdown O sistema ifupdown corre automaticamente scripts instalados em "/     etc/network/*/" enquanto exporta variáveis de ambiente para os scripts. Tabela 5.14. Lista de variáveis de ambiente passadas pelo sistema ifupdown +---------------------------------------------------------------+ |variável de |valor passado | |ambiente | | |------------+--------------------------------------------------| |"$IFACE" |nome físico (nome da interface) da interface a ser| | |processada | |------------+--------------------------------------------------| |"$LOGICAL" |nome lógico (nome da configuração) da interface a | | |ser processada | |------------+--------------------------------------------------| |"$ADDRFAM" | da interface | |------------+--------------------------------------------------| |"$METHOD" | da interface. (ex., "static") |     |------------+--------------------------------------------------| |"$MODE" |"start" se corrido a partir de ifup, "stop" se | | |corrido a partir de ifdown | |------------+--------------------------------------------------| | |como para "$MODE", mas com granularidade mais | |"$PHASE" |fina, distinguindo as fases pre-up, post-up, | | |pre-down e post-down | |------------+--------------------------------------------------| |"$VERBOSITY"|indica se "--verbose" foi usado, regulado para 1 | | |se sim, 0 se não. | |------------+--------------------------------------------------| |"$PATH" |caminho de busca de comando: "/usr/local/sbin:/usr| | |/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | |------------+--------------------------------------------------| |"$IF_ |valor para a opção correspondente sob a estrofe | |