Marcelo Cavalcante - kalib : Dica Rápida - Linux - Troubleshooting em Tempo de Execução com Strace

December 19, 2013, by Unknown - 0no comments yet

Se algum dia você já precisou realizar uma análise para troubleshoot de algum comando em tempo de execução e não soube como fazê-lo, seus problemas acabaram. O strace faz justamente isso.

Já trabalhei em servidores de clientes comprometidos pós-invasão cujos comandos padrões Unix haviam sido substituídos por comandos similares (ao menos em nome) que realizam outras tarefas sem o conhecimento dos administradores dos mesmos.

O strace serve justamente para estes, bem como outros, casos. Ele lhe indica exatamente tudo o que acontece por baixo dos panos em seu sistema.

Vejamos um exemplo.

1
2
 [kalib@tuxcaverna ~]$ date
 Qui Dez 19 08:41:55 BRT 2013

Agora vejamos a diferença com o uso do strace.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 [kalib@tuxcaverna ~]$ strace date
 execve("/usr/bin/date", ["date"], [/* 59 vars */]) = 0
 brk(0)                                  = 0x21df000
 access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
 fstat(3, {st_mode=S_IFREG|0644, st_size=274630, ...}) = 0
 mmap(NULL, 274630, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fe0d3f3d000
 close(3)                                = 0
 open("/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\34\2\0\0\0\0\0"..., 832) = 832
 fstat(3, {st_mode=S_IFREG|0755, st_size=2031229, ...}) = 0
 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe0d3f3c000
 mmap(NULL, 3840528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe0d39b8000
 mprotect(0x7fe0d3b58000, 2097152, PROT_NONE) = 0
 mmap(0x7fe0d3d58000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a0000) = 0x7fe0d3d58000
 mmap(0x7fe0d3d5e000, 14864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe0d3d5e000
 close(3)                                = 0
 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe0d3f3b000
 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe0d3f3a000
 arch_prctl(ARCH_SET_FS, 0x7fe0d3f3b700) = 0
 mprotect(0x7fe0d3d58000, 16384, PROT_READ) = 0
 mprotect(0x60d000, 4096, PROT_READ)     = 0
 mprotect(0x7fe0d3f81000, 4096, PROT_READ) = 0
 munmap(0x7fe0d3f3d000, 274630)          = 0
 brk(0)                                  = 0x21df000
 brk(0x2200000)                          = 0x2200000
 open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
 fstat(3, {st_mode=S_IFREG|0644, st_size=1863120, ...}) = 0
 mmap(NULL, 1863120, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fe0d37f1000
 close(3)                                = 0
 open("/etc/localtime", O_RDONLY|O_CLOEXEC) = 3
 fstat(3, {st_mode=S_IFREG|0644, st_size=714, ...}) = 0
 fstat(3, {st_mode=S_IFREG|0644, st_size=714, ...}) = 0
 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe0d3f80000
 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\3\0\0\0\0"..., 4096) = 714
 lseek(3, -438, SEEK_CUR)                = 276
 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\3\0\0\0\0"..., 4096) = 438
 close(3)                                = 0
 munmap(0x7fe0d3f80000, 4096)            = 0
 fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 2), ...}) = 0
 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe0d3f80000
 write(1, "Qui Dez 19 08:42:47 BRT 2013\n", 29Qui Dez 19 08:42:47 BRT 2013
 ) = 29
 close(1)                                = 0
 munmap(0x7fe0d3f80000, 4096)            = 0
 close(2)                                = 0
 exit_group(0)                           = ?
 +++ exited with 0 +++

O strace não é instalado por padrão em todas as distribuições, portanto é possível que você precise instalá-lo com o seu gerenciador de pacotes.

Além do uso regular, ele possui diversos parâmetros que podem melhorar ou filtrar o seu uso. Você pode verificar a lista de parâmetros em seu manual de uso:

1
 [kalib@tuxcaverna ~]$ man strace


Reinaldo Bispo : Tor Browser

December 17, 2013, by Unknown - 0no comments yet

Olaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaá INTERNET!

Como vão, tudo bem?

Então, hoje eu irei informar como instalar o Tor browser. Então, os códigos que irei informar abaixo vão servir para distribuições .deb, ex: Ubuntu, Debian, Mint, Elementary OS e etc.

Ué, e porque não vai ensinar para instalar no archlinux? Tenha calma jovem..

Pois bem, abre seu terminal e digite os seguintes comandos:

$ sudo add-apt-repository ppa:upubuntu-com/tor ( Isso aqui vai adicionar o repositório para baixar o tor browser)

$ sudo aapt-get update (atualizar os repositórios)

$ sudo apt-get install tor-browser (instala o tor browser)

Eu uso um sistema 64 bits, é a mesma coisa?

Claro que NÃO! :-)

A ÚNICA diferença que vai fazer é no primeiro comando que será:

$ sudo add-apt-repository ppa:upubuntu-com/tor64

Agora que instalou posso entrar na deep web e virar hacker? Calma, ainda não.

Agora basta modificar a permissão para seu usuário com o seguinte comando:

$ sudo chown $USER -Rv /usr/bin/tor-browser/

Feito isso basta abrir seu tor e conectar!

E no archlinux?

Simples! Só utilizar o yaourt baixando o pacote tor-browser-en ou compilar na mão!

Até a próxima!




Blog do Gio : Instalando o VirtualBox no ArchLinux!

December 17, 2013, by Unknown - 0no comments yet

Instale o VirtualBox e as extenções:

# pacman -S virtualbox virtualbox-host-modules qt4
# pacman -S net-tools

O net-tools é para instalar o pacote no qual está o “ifconfig”.
O resto é configuração necessária ao VirtualBox.

$ yaourt -S virtualbox-extension-pack

# gpasswd -a meu_usuario vboxusers

Adicione os módulos abaixo ao arquivo virtualbox.conf:

# vim /etc/modules-load.d/virtualbox.conf

vboxdrv
vboxnetadp
vboxnetflt

Salve e saia.

Nota: Você pode precisar atualizar o banco de dados dos módulos a fim de evitar o erro “no such file or directory” ao carregar vboxdrv. Rode o comando “depmod -a” para isso.

Adicionais para convidados:

# pacman -S virtualbox-guest-iso

Adicione também os módulos para convidados ao arquivo virtualbox.conf:

# vim /etc/modules-load.d/virtualbox.conf

vboxguest
vboxsf
vboxvideo

Salve e saia.

Após reiniciar a máquina os módulos já vão subir automaticamente e tudo deverá estar funcionando corretamente.

Espero que ajude, abraço!




Marcelo Cavalcante - kalib : Sobre mim... Tarda mas não falha

December 16, 2013, by Unknown - 0no comments yet

Tarda, mas não falha… Reza o antigo ditado.

Da mesma forma, digo-lhes que tardou, mas não falhou. Confesso que nunca parei para elaborar a página “Sobre mim” deste blog. O link existia no topo, mas sempre esteve “Em construção”. Preguiça? Falta de interesse? Esquecimento? Acho que um pouco de cada.

Hoje fui surpreendido por uma pessoa que acabou caindo no blog e em seguida me questionou sobre o porque de o blog já existir a tanto tempo e até hoje a página “Sobre mim” continuar contendo apenas as palavras “Em construção”.

Isto me fez tomar vergonha na cara.. e hoje inseri conteúdo nesta página.

Agora sim… ;]



Magnun Leno : Pixel: Meu Novo Projeto

December 5, 2013, by Unknown - 0no comments yet

Todos que acompanham meu blog, ou meu trabalho, sabe o quanto eu valorizo a liberdade, sempre disponibilizo meu códigos, meus conhecimentos, as notícias que acho interessante (aqui, aqui e aqui) e tudo o mais que posso. Infelizmente, chega uma hora na vida que temos que nos tornar adultos e ter uma atitude mais profissional. Por isso anuncio…

Sorry. We're closed

Sim, senhores. Este meu projeto é fechado, não receberá contribuições da comunidade e nem estará disponível na internet (pelo menos não no próximos anos). Mas pelo menos não estou só nessa, tenho uma colaboradora que está praticamente “carregando o projeto nas costas” nesses últimos meses (sim este projeto está correndo há alguns meses) e eu estou mais cuidando da infraestrutura, logística e suporte.

Continue reading...



Marcelo Cavalcante - kalib : Dica Rápida - Linux - Efeito de Texto Sendo Digitado? O pv Resolve

December 5, 2013, by Unknown - 0no comments yet

Certamente você já cansou de ver em filmes e/ou séries de TV cenas nas quais um monitor apresenta um texto que, aparentemente, está sendo digitado em tempo real. É claro que eles não possuem uma pessoa digitando aquele texto ou série de comandos no momento da gravação. Então, que tal aprender uma forma de fazer isto no Linux?

O comando pv realizar perfeitamente este trabalho, podendo inclusive interagir com outros aplicativos e comandos.

Mão na massa…

Antes de mais nada você precisará instalar o pv em sua distribuição. No Arch Linux, eu utilizo o pacman da forma convencional:

1
 [kalib@tuxcaverna ~]$ sudo pacman -S pv

O pv está disponível nos repositórios de praticamente todas as distribuições, portanto utilize o gerenciador de pacotes de sua preferência para instalá-lo.

A utilização é simples, bastando que você utilize algum comando que, de alguma forma, exponha algum texto na tela e em seguida redirecione esta saída para o pv. O pv possui diversos parâmetros, mas eu gosto particularmente de utilizar -qL, onde o q significa “quiet” e o L significa latência, em seguida insiro um valor para a latência. Vamos ao exemplo:

1
2
 [kalib@tuxcaverna ~]$ echo "Primeiro teste com pv" | pv -qL 20
 Primeiro teste com pv

Se você digitar o mesmo comando, verá que ele irá escrever o texto na tela de forma “automática”: “Primeiro teste com pv”.

É claro, em uma gravação de Hollywood a linha na qual o comando foi passado não deveria aparecer, no caso: [kalib@tuxcaverna ~]$ echo “Primeiro teste com pv” | pv -qL 20. Que tal inserir um clear antes de nosso comando para limpar a tela antes da execução desejada?

1
 [kalib@tuxcaverna ~]$ clear && echo "Primeiro teste com pv" | pv -qL 20

Perceba que desta vez o comando digitado não aparece na tela. A única informação que será exibida será Primeiro teste com pv.

Diminuindo ou aumentando o valor da latência você diminuirá ou aumentará a velocidade de digitação do texto que você escolheu.

Como informei no início, você pode unir o pv com outros programas ou comandos. Que tal fazer com que um texto um pouco maior seja exibido?

Para este teste, eu criei um arquivo texto chamado testepv, conforme pode ser visto abaixo:

1
2
3
4
5
 [kalib@tuxcaverna ~]$ cat testepv

 Não obstante, a contínua expansão de nossa atividade oferece uma interessante oportunidade para verificação de todos os recursos funcionais envolvidos.
 A prática cotidiana prova que o desenvolvimento contínuo de distintas formas de atuação nos obriga à análise de alternativas às soluções ortodoxas.
 Por conseguinte, a competitividade nas transações comerciais estende o alcance e a importância da gestão inovadora da qual fazemos parte.

Neste caso, o texto pode ser digitado automaticamente com o pv, da seguinte forma:

1
 [kalib@tuxcaverna ~]$ clear && cat testepv | pv -qL 20

Legal? Que tal utilizarmos algo ainda melhor? Já ouviu falar no figlet? É outro comando/aplicativo Linux que muitas pessoas desconhecem. Comece instalando-o em seu sistema, caso você já não o possua. O figlet desenha o seu texto de uma forma um pouco mais enfeitada, se comparado ao puro cat ou echo. Exemplo:

1
2
3
4
5
6
7
 [kalib@tuxcaverna ~]$ figlet "Teste do Figlet"
  _____         _             _         _____ _       _      _   
 |_   _|__  ___| |_ ___    __| | ___   |  ___(_) __ _| | ___| |_ 
   | |/ _ \/ __| __/ _ \  / _` |/ _ \  | |_  | |/ _` | |/ _ \ __|
   | |  __/\__ \ ||  __/ | (_| | (_) | |  _| | | (_| | |  __/ |_ 
   |_|\___||___/\__\___|  \__,_|\___/  |_|   |_|\__, |_|\___|\__|
                                                |___/            

Nesse caso, vamos fazer com que o efeito figlet também pareça estar sendo digitado automaticamente e em tempo real:

1
 [kalib@tuxcaverna ~]$ clear && figlet "Teste do Figlet" | pv -qL 30

Resultado interessante, certo? Da mesma forma, o pv pode ser utilizado com diversos outros aplicativos que trazem alguma saída no terminal, como o cowsay e muitos outros. A sua criatividade é o limite.

Have fun! \,,/_



Magnun Leno : Contribuindo com o Mundo Open Source

November 27, 2013, by Unknown - 0no comments yet

É relativamente comum ver na comunidade Python pessoas com um bom conhecimento e capacidade para colaborar com alguns projetos. Mas muitos se abstêm com a famosa frase: “não sou bom o suficiente”. Entretanto, este é um grande erro. Não somente o fato de achar que seu conhecimento é insignificante quanto o comportamento padrão de “endeusar” o desenvolvedor e considerá-lo detentor da sabedoria suprema. Este texto mostra (de forma empírica) como qualquer um pode contribuir para um projeto FOSS (Free Open Source Software).

muro

É claro que em projetos mais complexos, como o kernel Linux, CPython, NGINX e etc, muitos de nos realmente é incapaz de contribuir e somos meras amebas acéfalas perto dos desenvolvedores. Entretanto, em projetos mais simples como frameworks, bibliotecas e aplicativos, uma simples vivência com alguma ferramenta pode ser um grande diferencial. Todo projeto FOSS é como um grande muro, onde cada um põe um tijolo, alguns põem mais tijolos que outros mas são todos extremamente importantes.

Continue reading...



Marcelo Cavalcante - kalib : Recomendação Bibliográfica - As Treze Relíquias

November 25, 2013, by Unknown - 0no comments yet

Sem sombra de dúvidas o livro superou minhas expectativas. Apesar de a sinopse passar a impressão de que se trata de mais um livro com temática sobrenatural voltado a um público mais jovem, a leitura revela o oposto. Certamente um livro que pode agradar diversas faixas etárias, trazendo foco no ocultismo, antigas religiões, artefatos mágicos, sexo e assassinatos com incrível crueldade, tudo isto em uma trama muito bem elaborada e descrita.

Por se tratar de assuntos que gosto, o livro prendeu minha atenção desde o início, visto que os autores souberam mesclar bem os diferentes temas em uma história conexa e personagens interessantes.

O fato de ser uma leitura bastante paralela, visto que acontecem muitas coisas ao mesmo tempo, torna o enredo mais atraente ainda, além de tornar a leitura mais rápida.

Sinopse retirada do site da Livraria Saraiva:

Há mais de sete décadas treze crianças foram designadas para cuidar de artefatos antigos, dotados com um poder primitivo e letal. As relíquias, como foram chamadas, deveriam ser mantidas por seus guardiões em total segurança e afastadas umas das outras. Entretanto, agora um homem sinistro e sua amante estão atrás delas, roubando cada peça e eliminando seus protetores, deixando um rastro de crimes violentos. Aparentemente por acaso, a jovem Sarah Miller se envolverá nessa trama perigosa e terá que correr contra o tempo para elucidar os enigmas que rondam sua nova vida. Serão os guardiões seres de outro mundo? Qual será o segredo das relíquias milenares? Por que justamente Sarah foi atraída para esse jogo mortal? Uma história inquietante, povoada de lendas que até hoje rondam nosso imaginário, As treze relíquias mostra que há forças que nunca devem ser despertadas.

Boa leitura!



Marcelo Cavalcante - kalib : Dica Rápida - Linux - Informações Sobre Arquivos com o Comando stat

November 22, 2013, by Unknown - 0no comments yet

<p><img title="'Information'" src="http://blog.marcelocavalcante.net/imgs/information.png" /></p> <p><strong>Q</strong>ue os sistemas GNU/Linux possuem uma infinidade de comandos todo mundo sabe, o que nem todos conhecem, na verdade, são alguns comandos simples porém eficientes e importantes. Um deles é justamente o <em>stat</em>.</p> <p><strong>Q</strong>uando se está em frente ao terminal de um servidor que não possui interface gráfica, tudo o que está a nossa disposição são as ferramentas de linha de comando, portanto é bom conhecer uma boa variedade das mesmas, desde ferramentas para tarefas complexas até ferramentas para as atividades mais simples e banais.</p> <p><strong>A</strong> dica que deixo hoje é uma ferramenta que muitas pessoas desconhecem: <em>stat</em></p> <p><strong>O</strong> stat serve para apresentar as informações de status de um arquivo ou sistema de arquivos. Ele apresenta uma série de informações sobre o arquivo que você informar como argumento. Dentre as informações estão o <em>Tamanho</em>, <em>Blocos</em>, <em>Permissões de Acesso</em>, <em>Data e Hora de último acesso</em>, <em>Data e Hora de última modificação</em>, etc.</p> <p><strong>O</strong> uso é simples, bastando digitar: <em>stat &lt;caminho_do_arquivo_ou_sistema_de_arquivos></em>.</p> <div><table><tr><td><pre><span>1</span> <span>2</span> <span>3</span> <span>4</span> <span>5</span> <span>6</span> <span>7</span> <span>8</span> <span>9</span> </pre></td><td><pre><code><span> [kalib@tuxcaverna ~]$ stat testdisk.log </span><span> File: “testdisk.log” </span><span> Size: 102478 Blocks: 208 IO Block: 4096 arquivo comum </span><span> Device: 804h/2052d Inode: 27001862 Links: 1 </span><span> Access: (0644/-rw-r--r--) Uid: ( 1000/ kalib) Gid: ( 100/ users) </span><span> Access: 2013-11-11 11:31:34.360892496 -0300 </span><span> Modify: 2011-05-10 09:48:46.000000000 -0300 </span><span> Change: 2011-05-11 15:01:29.019407886 -0300 </span><span> Birth: -</span></code></pre></td></tr></table></div> <p>ou</p> <div><table><tr><td><pre><span>1</span> <span>2</span> <span>3</span> <span>4</span> <span>5</span> <span>6</span> <span>7</span> <span>8</span> <span>9</span> </pre></td><td><pre><code><span> [kalib@tuxcaverna ~]$ stat /dev/sda1 </span><span> File: “/dev/sda1” </span><span> Size: 0 Blocks: 0 IO Block: 4096 arquivo especial de bloco </span><span> Device: 5h/5d Inode: 7253 Links: 1 Device type: 8,1 </span><span> Access: (0660/brw-rw----) Uid: ( 0/ root) Gid: ( 6/ disk) </span><span> Access: 2013-11-22 08:01:39.246618958 -0300 </span><span> Modify: 2013-11-22 08:01:39.246618958 -0300 </span><span> Change: 2013-11-22 08:01:39.246618958 -0300 </span><span> Birth: -</span></code></pre></td></tr></table></div> <p><strong>H</strong>ave fun!</p>



Blog do Gio : Guake Terminal!

November 13, 2013, by Unknown - 0no comments yet

A Guake é um terminal drop-down para Gnome muito útil!

Não o conhecia até pouco tempo, quando vi o amigo Gabriel utilizando-o, me interessei e estou aqui para recomendá-lo a vocês!

Instalando-o no Arch Linux:

$ sudo pacman -S guake

Podemos configurá-lo acessando as Preferências do Guake:

guake config

Feito isso, para utilizá-lo precisamos executá-lo (sério?!), procure por “guake” nos seus aplicativos, feito isso para chamá-lo basta usar a tecla de atalho F12!

guake terminal

O meu foi configurado para ficar em tela cheia, mexi na transparência, fonte e tamanho da fonte também. Por isso essa aparência que não é a padrão.

Para que o Guake inicie automaticamente basta adicioná-lo aos programas que iniciam com o sistema através do gnome-tweak-tool:

gnome-tweak-tool
Faça o teste e veja o que acha, particularmente curti bastante!