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! 😉

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 instalar um servidor FTP no Linux Debian (vale pro Ubuntu também)

Instalar um servidor FTP é tão simples que eu não precisaria de mais de um parágrafo para tratar deste assunto objetivamente.
Mas este artigo vai falar além da instalação. Vou abordar alguns aspectos que surgem após a instalação e a configuração do FTP para que ele te sirva melhor.
As dicas aqui são voltadas para quem tem um sistema Linux baseado na distro Debian (é o caso do Ubuntu). Mas podem ser facilmente adaptadas a outras distros.

Como instalar o FTP

O servidor FTP do qual vamos tratar aqui é o popular proFTPd. Sua instalação pode ser feita em uma única linha de comando:

  • Abra uma terminal (Ctrl + Alt + T)
  • Dê o seguinte comando:sudo apt-get install proftpd

Durante o processo de instalação, o Debconf vai perguntar se você deseja usar o inetd ou o autônomo (versão em português). A última costuma ser a mais indicada para a maioria das pessoas – além do fato de que usar o inetd vai pedir outras configurações…

2013-04-22-1366655411_1024x600

Como configurar proftpd

Feita a instalação, alguns ajustes podem ser benvindos no arquivo de configuração. No Debian ele costuma ser /etc/proftpd/proftpd.conf. No Ubuntu ele é /etc/proftpd.conf.
Uma dica rápida: com o comando man proftpd você pode descobrir onde ficam os arquivos de configurações deste ou outro aplicativo, dentro da seção FILES.
apague-me-Sem título

O diretório home do usuário FTP

Para que cada usuário tenha acesso apenas aos seus próprios arquivos, descomente a linha
DefaultRoot ~.

Como permitir acesso anônimo ao servidor FTP

Há uma seção dentro do proftpd.conf  que trata disto. Normalmente, basta descomentar as linhas desta seção. Veja como está no meu arquivo. Se for o caso, adapte para as suas necessidades:

<Anonymous ~ftp>
User ftp
Group nogroup
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp

# Cosmetic changes, all files belongs to ftp user
DirFakeUser on ftp
DirFakeGroup on ftp

RequireValidShell off

# Limit the maximum number of anonymous logins
MaxClients 10

# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message

# Limit WRITE everywhere in the anonymous chroot
<Directory *>
<Limit WRITE>
DenyAll
<Limit>
<Directory>
</Anonymous>

Com estas opções os seus usuários poderão acessar o seu servidor como anonymous e ftp. Não poderão fazer uploads, apagar ou alterar arquivos. O acesso, neste caso, é só para leitura.

Mensagem de boas vindas

A mensagem de boas vindas (welcome message) do seu servidor proFTPd pode ser alterado em /home/ftp/welcome.msg. Trata-se de um arquivo de texto simples que é exibido pros usuários assim que autenticam.

Por último…

… mas, nem por isto, menos importante. Para que as alterações feitas ao arquivo de configuração tenham efeito, é necessário reiniciar o servidor FTP:
sudo /etc/init.d/proftpd restart

Divirta-se e não se esqueça de compartilhar! 😀

Como configurar o Vim para fazer realce de sintaxe.

Aqui, o assunto vai ser um editor de textos simples presente em quase todas as distro Linux, justamente por ser extremamente leve (acho que este não é bem o caso do vim) e, além de tudo, é extremamente ‘espartano’ no seu visual.
Não se engane com “as roupas simples” do nosso amigo. Ele tem mais recursos que o leafpad, gEdit ou o Notepad (Windows).

Gosto de algumas coisas no Vi, ou Vim.
A possibilidade de executar dentro de um terminal transparente e poder editar os meus arquivos de configuração e contemplar o meu papel de parede preferido enquanto trabalho, é uma delas.
A leveza deste aplicativo completo também se destaca.

Alternativas ao Vim

há várias outras alternativas disponíveis por aí.
E é sempre disso que estamos falando, quando o assunto é software livre: escolhas e liberdade de escolha.
Uma, que eu gosto muito é o nano e ele já tem o recurso syntax highlighting disponível como padrão e costuma vir ‘empacotado’ na maioria das distro.

Como ativar o syntax highlighting no Vim

O caso, aqui, é simples para ser resolvido.
Inicie o editor, com o arquivo código do seu programa (eu vou usar o ‘startx’, no exemplo):


vim -R /usr/bin/startx
  • Note que usei a opção ‘-R’ (read only mode), para evitar fazer alterações acidentais no arquivo.
    Dentro do editor, digite o seguinte comando:

:set syntax on

Isto deve resolver o problema.

Ops! Mensagem de erro E319…

Você ainda está aqui? Recebeu uma mensagem de erro?
vimrc-config2

Se você está usando a versão mais simplificada do vi, saiba que ela não tem o recurso de realce da sintaxe do código.
Isto gera a mensagem de erro: “E319: Sorry, this command is not available in this version“.
Para resolver, instale a versão mais avançada, Vim (vi improved):


sudo apt install vim

O exemplo, acima, é voltado para uso no Debian ou no Ubuntu (e nas distribuições derivadas deles).

Editando o arquivo de configuração do Vim

Uma solução definitiva e melhor é editar o arquivo de configuração do Vim.
Abra-o com o seu editor favorito e edite a linha syntax off para syntax on. Se estiver apenas comentado, retire os “#”, tal como na figura:
vimrc-config

No Ubuntu, o arquivo de configuração do vim é /etc/vim/vimrc.
Ao editá-lo, a solução torna-se definitiva.
Happy coding!