Mafalda. Genial.
Autor: rafael
Crie pacotes
Baixar o código-fonte de uma aplicação e compilar você mesmo. Esta é uma tarefa clara para 90% dos programas que existem por aí, mas pode causar problemas com dependências. Enquanto os vários gerenciadores de pacotes possuem seus meios de trabalhar com as dependências, aqui vai outra.
Quando construir a partir do fonte usando o próprio método padrão de ./configure && make && make install
, instale CheckInstall
primeiro. Você pode pegá-lo em www.asic-linux.com.mx/~izto/checkinstall caso não esteja nos repositórios da sua distribuição. Execute-o ao invés de make install
que, no lugar de instalar os novos arquivos diretamente no seu sistema de arquivos, irá primeiro montar um pacote e então instalá-lo. CheckInstall funciona com pacotes Deb, RPM e Slackware. Você pode especificar o tipo no arquivo de configuração ou esperar que ele pergunte quando executado
./configure && make && checkinstall
Além do tipo de pacote, CheckInstall irá perguntar por outros detalhes. A maioria é opcional ou pode ser deixada no valor padrão, mas tenha certeza de que o nome é igual ao da versão anterior que você está substituindo, ou então o seu gerenciador de pacotes ficará confuso. Instalar com CheckInstall também permite a remoção simples do pacote, pois não há necessidade de manter o diretório fonte por perto e alguns programas nem possuem a opção make uninstall
.
Recupere espaço em disco
Ocupar 100% de uma participação pode ter um efeito desagradável no seu sistema. Quando serviços e outros programas não podem escrever nos seus arquivos de log ou não podem salvar dados em /var
, você pode estar com problemas. Estes programas não poderão salvar seus dados e tipicamente encerrarão (ou, em alguns casos extremos, quebrar dramaticamente!). Para evitar isto, os sistemas de arquivo ext2 e ext3 reservam 5% da sua capacidade somente para processos root
. Esta é uma boa idéia, mas 5% é muito em discos grandes - por exemplo, são 25GB num disco de 500GB. Além disso, não há necessidade de reservar nenhum espaço em um sistema de arquivos que não são usados para arquivos root
, como /home
.
A boa notícia é que isso pode ser alterado. Tune2fs é utilizado para ajustar vários parâmetros de um sistema de arquivo ext2 (ou ext3). Pode ser usado para trocar a etiqueta de um volume ou o número de montagens entre execução forçada do fsck
e a hospedagem de outro, e outras configurações esotéricas, mas as opções nas quais estamos interessados são -m
e -r. O primeiro altera o percentual dos blocos do sistema de arquivos reservados para o superusuário, enquanto o segundo usa um número absoluto de bloco. Então:
tune2fs -m 2 /dev/sda1
reduz a área reservada para 2% do sistema de arquivos, o que pode ser mais apropriado se você tem um sistema de arquivos grande em / ou /var. Se você está usando um disco de 500GB ou maior, esta é a melhor opção.
Esta linha de código:
tune2fs -r 0 /dev/sda1
define que o sistema de arquivos não terá blocos reservados, uma boa configuração para /home
que não precisa de área reservada para o superusuário.
Você já está cheio do seu log de sistema lhe entupir com relatórios de centenas (ou até milhares) de falhas de tentativas de autenticação SSH por script kiddies buscando entrar na sua máquia?
Eles não causam dano enquanto estiverem falhando mas ainda assim incomodam. Mas há algumas maneiras de evitá-las. A melhor - desde que você nunca precise de acesso SSH de fora da sua rede - é fechar a porta 22 do seu roteador, e ninguém poderá entrar. Outra opção é executar um programa como Fail2ban ou DenyHosts. Eles vigiam seu arquivo de log por falhas de tentativas de login repetidas pelo mesmo endereço IP e adiciona o IP nas regras do seu firewall para bloquear qualquer futuro contato do remetente por um tempo.
A terceira opção é ridiculamente fácil. Tentativas de quebra de SSH geralmente assume que o SSH é executado na porta padrão 22; mude para uma alta e aleatória porta e as tentativas de quebra desapareção por mágica. Altere /etc/ssh/sshd_config
e modifique a diretiva de escuta para algo como:
Listen 31337
e reinicie o sshd
. A única desvantagem disso é a incoveniênica de precisar adicionar esta porta no commando ssh
cada vez que você se autentica, mas você pode usar um apelido para lidar com isso:
alias myssh ssh -p 31337
SSH sem senha
Usar SSH para conectar a um computador remoto é conveniente, mas há algumas desvantagens. Uma delas é que você precisa digitar a senha a cada vez que você conecta, o que é incômodo num terminal interativo mas inaceitável em um script, pois você precisa que a senha esteja no script. O outro é que uma senha pode ser quebrada. Uma senha longa, aleatório e complexa ajuda, mas torna as autenticações interativas ainda mais incovenientes. É mais seguro ativar o SSH para funcionar sem senhas de uma vez. Primeiro, você precisa ativar um par de chaves para o SSH usando ssh-keygen
como este para gerar chaves RSA (mude o argumento para dsa
em chaves DSA).
ssh-keygen -t rsa
Serão criados dois arquivos em ~/.ssh
, id_rsa
(ou id_dsa
) com sua chave privada e id_rsa.pub
com a sua chave pública. Copie a chave pública para o computador remoto e adicione-a na lista de chaves autorizadas com
cat id_rsa.pub >>~/.ssh/authorized_keys
Agora você pode sair da sessão SSH e iniciá-la novamente. Você não será solicitado a entrar com senha, embora se relacionar uma frase-senha para a chave você será solicitado a digitá-la. Repita isso para cada usuário e cada computador remoto. Você pode fazer isto de maneira ainda mais segura ao adicionar
PasswordAuthentication no
a /etc/ssh/sshd_config
. O SSH passará a recusar todas as conexões sem uma chave, tornando a quebra de senhas impossível.
Trens no mundo
Conserte senhas corrompidas com chroot
Se você é o administrador de sistema responsável por missões críticas em data centers ou se trabalha em casa, Live CDs são maravilhosos para ter em volta para quando você estiver com um problema. Se você gerencia para bagunçar alguma coisa, você pode iniciar de um Knoppix, Ubuntu, GRML ou um dos outros vários Live CDs, montar as partições do disco rígido e editar qualquer dois arquivos que necessitam de recuperação. Contudo, há algumas coisas que não podem ser corrigidas facilmente, porque elas precisam que você esteja no próprio sistema que precisa de correção.
A solução é usar o comando chroot
(mudar root), que configura um ambiente de trabalho dentro de um diretório. Perceba que o root do nome se refere ao root do diretório e não ao usuário root (ou superusuário) embora o usuário root seja o único permitido a executar este comando. Chroot
cria um sistema 'enjaulado' dentro do diretório especificado, um que não tem acesso ao restante do sistema e pensa que o diretório informado é o diretório root. Para corrigir uma senha, por exemplo, você deveria iniciar de um Live CD, montar o root do seu sistema de arquivos /mnt/tmp
e fazer isto:
sudo -i mount --bind /dev /mnt/tmp/dev mount -t proc none /mnt/tmp/proc chroot /mnt/bin/bash
A primeira linha é necessário para se tornar root no Ubuntu. As duas próximas tornam o /dev/
e o /proc
diretórios disponíveis dentro do chroot
, e a última entra no diretório que foi configurado executando um terminal Bash. Agora você pode executar passwd
ou qualquer outro comando que precisar e encerrar com logout
ou pressionando Ctrl-D para sair.
Gulosos por tráfego de banda
Você já percebeu que sua conexão de internet se tornar bem mais lenta mesmo que você não esteja baixando nada? É pela maneira como algumas conexões de banda larga assimétrica são configuradas, se você saturar a taxa de tráfego para enviar arquivos, baixar arquivos se torna quase impossível.
Isto é por causa da maneira como o tráfego é colocado na fila pelo modem e pelo provedor de internet (ISP). Mesmo a mais lenta e mais baixa operação de tráfego, como usar um shell remotamente ou procurar um endereço DNS, se torna dolorosamente lenta ou expira. Se você está usando alguma coisa como um cliente BitTorrent para enviar arquivos, você pode limitar a taxa de envio, que evitará este problema. Alguns outros probramas, como rsync, tem uma característica similar, mas a maioria não possui. Da mesma maneira, executar dois programas assim continuará a causar problemas caso cada um tenha sido permitido a usar 90% do tráfego de envio.
Uma solução é um útil script chamado Winder Shaper. Ele utiliza o comando tc
(traffic control) para limitar o uso completo do tráfego de banda para levemente abaixo do máximo disponível. Pege-o em https://github.com/magnific0/wondershaper, coloque o script whaper
em alguma pasta - /usr/local/bin
é uma boa escolha - e edite o inicio do script para se adaptar ao seu sistema. Defina DOWNLINK
e UPLINK
para logo abaixo da sua banda máxima (em kilobits/s) e execute-o. Você agora vai perceber que envio de arquivos pesados, como enviar fotos para o Flickr, não irá mais puxar seu modem para baixo. Quando você estiver contente com as definições, configure-o para ser executado na inicialização com qualquer método que sua distro use.
Encontre arquivos perdidos
Alguma vez você salvou um arquivo, talvez um download, e então não conseguiu encontrá-lo? Talvez você o tenha salvo em um diretório diferente ou com um nome incomum.
O comando find
é útil aqui:
find ~ -type f -mtime 0
e mostrará todos os arquivos do seu diretório home
que forão modificados ou criados hoje. Por padrão, find
conta dias a partir da meia-noite, então o valor 0
siginifica hoje.
Você deve ter usado a opção -name
com o find
antes, mas ele pode fazer muito mais. Estas opções podem ser combinadas, então, se o elusivo download foi um arquivo MP3, você pode reduzir a pesquisa com:
find ~ -type f -mtime 0 -iname '*.mp3'
As aspas simples são necessárias para para evitar que o shell fique tentando expandir o coringa, e -iname
torna a combinação insensível ao caso.
Permissões incorretas podem causar erros obscuros algumas vezes. Você pode, por exemplo, ter criado um arquivo no seu diretório pessoal enquanto trabalhava como root
. Para encontrar arquivos e diretórios que não peretencem a você, use:
find ~ ! -user ${USER}
O shell define a variável de ambiente USER
para o usuário atual, e um !
muda o resultado para o próximo teste, então este comando encontra qualquer coisa no atual diretório do usuário que não pertencem a este usuário. Você pode até usar o find
para corrigir permissões
find ~ ! -user $USER -exec sudo chown ${USER}:"{}" \;
A página man
do find
explica o uso de -exec
e muitas outras possibilidades.
A maneira fácil de compartilhar arquivos
O compartilhamento de arquivos com Samba ou NFS é fácil desde que você tenha tudo previamente configurando em ambos os computadores, mas e se você quer apenas transferir um arquivo para outro computador na rede sem o trabalho de configurar programas? Se o arquivos é pequeno, você pode enviá-lo por e-mail. Se os computadores estão na mesma sala e o uso do compartimento USB é permitido nos computadores, você pode usar a porta USB, mas há também outra opção.
Woof é um script Python que pode ser executado em qualquer computador com Linux (ou similar). O nome é um acrônimo para Web Offer One File (A Teia Oferece Um Arquivo), que o define muito bem, como se o fosse um servidor web a um clique. Não há nada a instalar; apenas baixe o script de www.home.unix-ag.org/simon/woof.html e o defina como executável, então compartilhe o arquivo digitando:
./woof /pasta/do/meuarquivo
Isto irá responder com uma URL que pode ser digitada em um navegador em outro computador na rede - nenhum programa além do navegador é necessário. Woof irá disponibilizar o arquivo para aquele computador e então retirá-lo (você pode usar a opção -c
para deixá-lo disponível por mais de uma vez). Woof disponibiliza também um diretório, como:
./woof -z /um/diretorio
O diretório será compactado com gzip tarball e enviado, e você pode substituir -z
por -j
ou -u
para ter um arquivo bzip ou tarball descompactado. Se outros gostarem do Woof e quiserem usá-lo, você pode até mesmo dar-lhes uma cópia com:
./woof -s