4 comandos fatais e proibidos pro Linux.

Há comandos que são extremamente danosos pro seu sistema operacional Linux, se executados inadvertidamente.
Felizmente, nenhum deles pode ser executado sem privilégios administrativos — mas você deve ser cuidadoso, mesmo assim.
Captura_de_tela-Breaking.Bad.S01E04.avi-1Se o seu objetivo é o aprendizado, o ambiente mais seguro para testar estes e muitos outros comandos é o virtual. Aprenda a criar uma máquina virtual e vá brincar com segurança dentro dela.

O comando que apaga tudo

A função do comando rm é remover arquivos — e ele pode remover diretórios inteiros também, sem pedir qualquer confirmação.
Ao executar o comando rm -rfv /, com privilégios de root todos os arquivos e diretórios do seu sistema serão eliminados.
Veja o que ele faz:

  • r — indica a recursividade. Todos os arquivos do diretório atual e seus subdiretórios sofrerão a ação do comando;
  • f — indica a ‘forçabilidade’. Todos os arquivos serão forçosamente removidos, independente de suas permissões;
  • v — liga a ‘verbosidade’. Torna tudo mais lindo ao exibir os arquivos à medida em que são eliminados no seu terminal;
  • / — indica o local em que a operação ocorrerá. Neste caso, a raiz. É isto que torna o comando todo tão perigoso;

Se você executar a linha sem privilégios administrativos, só os arquivos nos quais você tem permissão de escrita serão afetados.

Como executar uma fork bomb

Esta é uma das formas de se fazer um ataque de negação de serviços, que consiste em, basicamente, saturar os recursos de um servidor ao ponto de torná-lo indisponível.
A fork bomb apresentada a seguir faz com que o Linux ou o Unix opere definindo uma função, chamada ‘:’ e que refira-se a si mesma duas vezes – em background e foreground:

: (){ : | : & };:

No Linux, o administrador pode prevenir este tipo de ataque com o comando ulimit que impõe restrições à quantidade de processos simultâneos por usuário.

Formatar uma partição

Qualquer instalação decente do Linux estará distribuída em várias partições. O comando:

mkfs.ext4 /dev/sdaX</code>

vai aplicar uma formatação completa à partição /dev/sdaX.
Formatar um disco completamente, desta forma, pode ser útil no caso de se estar repassando a máquina para uma outra pessoa.

Escrever diretamente no disco rígido

Ao enviar a saída de um comando diretamente pro endereço do dispositivo de disco rígido não é apenas desaconselhável. É uma ação muito perigosa e danosa pro sistema de arquivos, em sua máquina.
Pode ser feito da seguinte forma:

ls > /dev/sda

Há várias outras formas de se danificar um sistema Linux/Unix — e, na maior parte delas, é necessário ter privilégios especiais para ter sucesso.
Distribuições Linux voltadas para usuários com menor nível de conhecimento costumam vir com algumas configurações que previnem a maior parte dos acidentes.

Seja responsável! 😉

Como fazer backup do seu banco de dados MySQL?

Cluster (Imagem: WikiMedia.)
Cluster (Imagem: WikiMedia.)

A segurança em TI, começa com as cópias de segurança (os backups):

  1. Sempre faça Backup de tudo o que é importante
  2. Teste frequentemente os seus backups — poucas coisas, em sua vida, serão tão frustrantes quanto, ao tentar se recuperar de um desastre, descobrir que não foram feitos adequadamente ou se corromperam
  3. Armazene adequadamente — mantenha as cópias de segurança longe do local em que se encontram os dados originais, para que não corram riscos de sofrer o mesmo incidente (roubo, incêndio, sabotagem etc).

Nenhum ‘esquema’ de segurança está completo se o foco for apenas a prevenção dos eventos sinistros. Política de segurança vai além da prevenção — uma vez que as possibilidades de ser vítima de invasão e acidentes são reais — por isso é fundamental ter um plano eficaz para uma rápida recuperação. Se os danos são inevitáveis, ter um plano B, C… pode minimizar significativamente os prejuízos.

Você é blogueiro? Tem um website ou portal?

Donos de sites e blogueiros têm razões adicionais para se preocupar com backup de todos os seus posts. O provedor pode tirar do ar e remover de seus servidores todo o seu trabalho, se acreditar que termos do seu contrato foram violados.
Veja como se colocar do lado seguro.

O nosso cenário

Neste post, vou mostrar como usar o comando mysqldump para fazer guardar cópias de segurança dos dados armazenados no seu servidor. Se você não se sente à vontade com comandos em modo texto, pode usar uma excelente ferramenta web, chamada phpMyAdmin, que faz o mesmo trabalho com alguns cliques.
Vamos usar algumas variáveis em meio aos comandos, para tentar torná-los mais compreensíveis. Se você não souber como preencher algumas destas variáveis, consulte o administrador do banco de dados. Veja quais são:

  • dbname — o nome do banco de dados
  • dbuser — o nome de usuário que vai acessar o banco. Em alguns casos, vamos usar o root (administrador)
  • dbpass — a senha do usuário do banco
  • dbhost — o servidor em que se encontra o banco. Em uma instalação local, normalmente é localhost

Como fazer backup do banco de dados com o mysqldump

O mysqldump é uma ferramenta eficiente para fazer backup do seu banco de dados na linha de comando, no servidor local ou remoto (via SSH). Ele cria um arquivo .sql com os comandos DROP, CREATE e INSERT. Veja como usar o comando mysqldump como root:

mysqldump -u root -p dbname > backup.sql

No exemplo acima, direcionamos uma cópia integral do banco de dados dbname pro arquivo backup.sql. Todos os comandos sql necessários para a criação de uma nova versão daquele banco, estão incluídos em backup.sql.
Para copiar mais de um banco de dados, separe seus nomes com espaços:

mysqldump -u root -p dbname1 dbname2 dbname3 > backup.sql

Se você quiser fazer backup de todos os bancos de dados do servidor, usar o parâmetro --all-databases torna tudo mais fácil:

mysqldump -u root -p --all-databases > backup-de-tudo.sql

Nota: O comando mysqldump bloqueia o banco de dados enquanto trabalha. Portanto, ele deixa os usuários sem acesso, enquanto está sendo executado. Em casos de bancos de dados muito extensos, ele pode demorar para ser concluído. O bom senso manda avisar os usuários com antecedência e não fazer backups demorados em horários de pico.

Como comprimir o arquivo de backup

Há vários motivos para comprimir o seu arquivo de backup:

  • arquivos de texto .sql grandes, atingem excelentes taxas de compressão;
  • quando comprimidos, podem ser enviados de um ponto a outro na rede muito mais rápido, consumindo muito menos banda;
  • você pode armazenar uma quantidade maior de cópias de segurança em uma mídia física (CD, DVD ou BluRay) ou em uma conta na nuvem.
    • Veja como é fácil realizar este processo, usando o exemplo anterior:

      mysqldump -u root -p --all-databases | gzip -9 > backup-de-tudo.sql.gz 

      Usamos o aplicativo gzip, presente na maioria das distro Linux, com o nível de compressão máximo (9), neste exemplo.
      Para descompactar, posteriormente, use o gunzip:

      gunzip backup-de-tudo.sql.gz

      Como restaurar o backup feito com mysqldump

      Não esqueça de substituir as variáveis pelos valores adequados, a seguir:

      mysql -u dbuser -pdbpass dbname < backup.sql

      Nota: A senha deve ser digitada “grudada” ao parâmetro -p.
      Para restaurar um arquivo de backup comprimido, faça assim:

      gunzip < backup.sql.gz | mysql -u dbuser -pdbpass dbname

      Se você deseja inserir os dados de backup.sql em um banco de dados já existente:

      mysqlimport -u dbuser -pdbpass backup.sql

      Como fazer um backup local e restaurar no servidor remoto

      Aqui, vou descrever o meu modo preferido de fazer backups. O problema é que nem sempre ele é aplicável — alguns provedores proíbem conexões, de fora, ao banco de dados. Ou seja, só aceitam conexões no localhost ou de dentro da sua própria rede. Quando isto ocorre, você recebe a seguinte mensagem ao tentar se conectar:

      mysqldump: Got error: 1045: Access denied for user ... 

      Neste caso, o correto é se conectar ao provedor primeiro. Depois, ao banco de dados. Clique aqui, para saber como se conectar ao MySQL, em um servidor remoto via SSH.
      Uma vez conectado, o mysqldump pode ser usado para realizar o serviço. Veja como:

      mysqldump -u dbuser-local -pdbpass-local dbname-local | mysql -u dbuser-remoto -pdbpass-remoto --host=dbhost-remoto -C dbname-remoto

      Nota: Fique atento, para usar os nomes e senhas corretos. Os valores e nomes locais são possivelmente diferentes dos valores remotos.
      Enfim, muito mais pode ser escrito sobre backups e, com toda certeza, há muitas outras formas de realizá-los para bancos de dados MySQL. O importante, mesmo, é fazê-los com frequência. Não se esqueça disto.

Use sync e sysctl para esvaziar a memória cache no Linux

Neste post, vou mostrar como usar algumas ferramentas de linha de comando para escoar o cache da memória RAM.
O objetivo deste post é dar aos iniciantes um pouco mais de conhecimento sobre gerenciamento de memória no Linux e alguns comandos para gestão do sistema de cache.

cache memória RAM
Clique, para mais detalhes.

Em que casos é necessário limpar a memória cache do meu sistema?

Em duas palavras: quase nunca.
O sistema já tem um excelente gerenciamento de memória e a tendência é sempre aproveitar toda a quantidade de memória disponível no seu computador ou smartphone, caso você esteja usando o Android.
A função do caching é tornar o sistema mais veloz, na medida em que ele mantém sempre à mão as informações mais requisitadas. O Linux é extremamente eficiente nisto e não há por que “se meter” neste processo e fazer o trabalho “manualmente”.
Em alguns casos, contudo, o processo de escoamento do cache pode ser útil.
Ao transferir arquivos muito volumosos (vídeos, por exemplo) do seu HD para um pendrive ou um HD externo, conectado na entrada USB, o Linux usa muito o sistema de caching, como sistema intermediário de armazenamento.
O motivo de o Linux usar intensivamente o caching é que o seu dispositivo interno transfere os dados muito mais rápido do que os dispositivos externos conseguem absorver.
Este é um dos motivos para você não conseguir desmontar/ejetar um pendrive ou qualquer outro dispositivo conectado — por que ele ainda não gravou todos os dados, ainda armazenados no cache.

Como esvaziar o cache

Os comandos sysctl e o sync podem ser usados em conjunto ou separados para realizar a tarefa.
Vamos verificar, antes, se o cache está sendo usado. Para isto, abra um terminal e digite o seguinte comando:

free -m
             total       usado      livre    compart.  buffers     em cache
Mem:          3,6G       2,9G       723M       172M       3,5M       1,5G
-/+ buffers/cache:       1,4G       2,2G
Swap:          15G         0B        15G

Observe a última coluna em cache.
No exemplo acima, há quase 1,5 Gb da memória cache em uso.
Para limpar o cache será necessário executar comandos com privilégios administrativos.
Veja como:

sudo sync
sudo sysctl -w vm.drop_caches=3
sudo sysctl -w vm.drop_caches=0

alternativamente, você pode executar os 3 comandos, em uma linha só:

sudo sync && sudo sysctl -w vm.drop_caches=3 && sudo sysctl -w vm.drop_caches=0

Saiba o que a linha de comando acima faz:

  • sync — este comando, assegura que os dados pendentes no sistema de cache sejam escoados pro disco.
  • sysctl -w vm.drop_caches = 3 — limpa o cache na memória
  • sysctl -w vm.drop_caches = 0 — reinicia o drop cache.

Veja o resultado:

             total       usado      livre    compart.  buffers     em cache
Mem:          3,6G       1,7G       1,8G       124M         0B       351M
-/+ buffers/cache:       1,4G       2,2G
Swap:          15G       156K        15G

Observe como o uso do cache foi drasticamente reduzido.
Esta linha de comando pode ser usada para limpar o cache armazenado na memória RAM.

Método alternativo

O método anterior funciona bem no Ubuntu.
Mas pode não dar resultado em outras distros. Neste caso, recomendo usar o comando sync das seguintes formas:
Para liberar pagecache, dentries e inodes, use o sync desta maneira:

sudo sync; sudo echo 3 > /proc/sys/vm/drop_caches

Para liberar dentries e inodes use-o assim:

sudo sync; sudo echo 2 > /proc/sys/vm/drop_caches

Para liberar apenas o pagecache, faça assim:

sudo sync; sudo echo 1 > /proc/sys/vm/drop_caches

Se você conhece outras maneiras para realizar o serviço, seja bem vindo para comentar sobre isso.
Não esqueça de compartilhar o post! 😉

GLOSSÁRIO

  • drop cache — versões superiores à 2.6.15 do kernel do Linux, dispõem de um mecanismo que faz o kernel eliminar o page cache e/ou o cache de inodes e o cache dentry — o que pode auxiliar significativamente na liberação de memória no sistema.
    Para fazer uso manual do /proc/sys/vm/drop_caches, basta gravar um número nele — o que pode ser feito com o comando echo.
  • page cache — também chamado de disk cache é uma cópia de parte dos dados do disco, mantida na memória RAM, pelo sistema operacional.
    O objetivo é dar acesso mais rápido a estes dados ao usuário.
  • dentries — A palavra “dentry” é uma abreviatura para “directory entry” (entrada de diretório).
    Uma dentry é nada além de um componente específico no caminho para um arquivo a partir da raiz do sistema. Sua função é prover acesso a arquivos e diretórios. Mohan, I. Chandra (2013)
  • inodes — “inode” é abreviatura para “index node“. Em um sistema de arquivos Unix, um inode é uma estrutura de dados usada para representar um objeto do sistema de arquivos – qual seja um arquivo, um diretório etc.
    Cada inode armazena os atributos e localizações dos blocos do disco referentes ao sistema de arquivos.
  • buffers — memória usada temporariamente para armazenar dados em tráfego no sistema.

Se quiser ler mais sobre o assunto:
O sistema de arquivos /proc.
http://www.commandlinefu.com/commands/view/1026/empty-the-linux-buffer-cache
http://duopetalflower.blogspot.com.br/2009/09/clearing-cache-memory-in-linux-using.html

Como montar um sistema de arquivos FTP remoto com o curlftps

É possível montar nativamente um sistema de arquivos FTP remoto, com o uso de um gerenciador de arquivos gráfico, presente em qualquer distribuição Linux — todos eles permitem acessar servidores remotos, através de diversos protocolos.
Se você precisa de mais recursos de conectividade, vou descrever, neste post, uma solução mais flexível e completa para a realização da tarefa — para quem não tem medo digitar (ou copiar e colar) alguns comandos no console.

Como instalar o curlftps no Debian ou Ubuntu

Vamos precisar instalar pelo menos um pacote de softwares, o curlftps – sistema de arquivos para acessar hosts FTP baseado em FUSE e cURL.
Comece abrindo um terminal (Ctrl+Alt+T, no Ubuntu). Agora, use o apt, para instalar:

sudo apt-get install curlftpfs

Após a instalação, vamos criar um diretório local dentro do qual vamos montar o diretório remoto via FTP:

sudo mkdir /mnt/meu_ftp

Para executar o curlftps, você precisa saber 3 coisas:

  • endereço do Servidor FTP
  • Nome de usuário;
  • Sua senha;

Substitua, no comando que segue, os valores pelos que se adequam ao seu caso:

sudo curlftpfs endereco_ftp.com /mnt/meu_ftp/ -o user=meuNomeDeUsuario:MinhaSenha -o allow_other

A opção -o allow_other serve para permitir que outros usuários na rede também tenham acesso a este diretório. Se isto não te interessa, basta remover do comando.
A esta altura você já pode acessar o seu diretório:

ls /mnt/meu_ftp/

Quer que este diretório seja montado já na inicialização do sistema ou da sessão?

Superfácil.
Abra e edite o arquivo /etc/fstab:

sudo editor /etc/fstab

Agora vá até a última linha do arquivo aberto no seu editor e insira o seguinte comando:

curlftpfs#ftp://username:password@ftp.myhost.com/ /meu_ftp fuse defaults 0 0

Captura de tela - 13-06-2013 - 20:23:31
Não esqueça de substituir

  • username, pelo seu nome de usuário no servidor;
  • password, pela senha correspondente ao usuário no servidor;
  • ftp.myhost.com, pelo endereço do seu servidor;
  • e meu_ftp pelo diretório local em que você pretende montar o diretório remoto.

Para montar tudo agora, execute o comando:

sudo mount -a

Para desmontar o diretório, a qualquer momento, use o comando:

sudo umount /mnt/meu_ftp

LEIA MAIS!

Além dos artigos sugeridos, abaixo, você pode realizar uma busca neste site, por qualquer assunto — na caixa de busca, no canto superior direito do site.

Como recuperar a senha de administrador no Zen Cart?

Vou mostrar como você pode recuperar a sua senha de administrador no Zen Cart, partindo do pressuposto de que pedir a recuperação via email não funcionou. Ainda há esperanças, desde que você seja o admin do site.
Este artigo é voltado para as versões superiores a 1.5.x, mas pode funcionar nas outras. Faça as adaptações cabíveis, caso a sua versão seja diferente, portanto.

LEIA MAIS

Remova o usuário antigo e crie um novo

logoVocê já tentou “de um tudo” – nem pedindo para receber um email com a senha deu certo. Vamos tentar outra abordagem – esta vem direto dos fóruns do Zen Cart.

Crie uma conta temporária

Você pode criar uma conta administrativa temporária no Zen Cart para ter acesso ao painel de controle do sistema de comércio eletrônico.
Para isto, você precisa ter acesso ao banco de dados do servidor em que o Zen Cart se encontra instalado.
Abra o PhpMyAdmin (que o seu provedor deve ter disponível), selecione o banco de dados da sua loja e clique na aba “SQL”. Vamos rodar o seguinte comando:

DELETE FROM admin WHERE admin_name = 'Admin'; 
INSERT INTO admin (admin_name, admin_email, admin_pass, admin_profile) 
VALUES ('Admin', 'admin@localhost', '351683ea4e19efe34874b501fdbf9792:9b', 1);

Não esqueça de alterar os comandos no caso de estar usando prefixos diferenciados nos nomes dos campos – prática comum, quando se está compartilhando o mesmo banco de dados com outras aplicações.

Faça login novamente

Você já pode fechar o PhpMyAdmin e abrir novamente a URL do painel administrativo da sua loja Zen Cart.

Username: Admin
Password: admin

Sem título14
Fique atento para o A maiúsculo da conta Admin.

Exclua a conta Admin e crie uma nova

… e não exatamente nesta ordem. Crie a nova conta primeiro.
Siga os passos:

  • No canto superior direito, clique em Admin Access Management e, em seguida, em Admin Users;
  • Agora, Clique o botão Add User;
  • Preencha com atenção as informações do novo usuário administrativo e selecione o perfil “superuser” para ele;
  • Quando terminar, clique em Insert;
  • Dê um “Logoff” e entre novamente com a nova conta criada;
  • Ao voltar para a tela inicial de administração de usuários, exclua o Admin.

Simples, não? 😉