domingo, 9 de março de 2008

Arpwatch - Detecte em sua rede ataques de Arp Spoofing/Arp Poisoning

Introdução


Arpwatch é uma ferramenta que monitora a atividade em uma rede ethernet, mantendo atualizada uma tabela com endereços ethernet(MAC) e seus respectivos endereços IP. Essa ferramenta tem a capacidade de reportar via email certas mudanças.
O Arpwatch é uma ferramenta importante na monitoração da rede contra ataques de Arp Poisoning ou Arp Spoofing usados para realizar ataques mais sofisticados como Man-in-the-Middle(MITM).

Instalação


Tomando-se como base a distribuição Fedora, para a instalação do arpwatch, basta executar o comando abaixo:

[root@vpn01 fred]# yum install arpwatch 


Obs: Será necessário a instalação da libpcap.

Configuração


O arquivo de configuração está localizado em /etc/sysconfig/arpwatch. Sua base de dados é armazenada em /var/arpwatch. Neste diretório, estão os arquivos arp.dat que é a base de dados propriemanete dita e o ethercodes.dat que possui o bloco de endereços MAC atribuídos aos fabricantes.

Abaixo, vemos a configuração padrão do arpwatch:
# -u : defines with what user id arpwatch should run
  1. -e : the where to send the reports
  2. -s : the -address
OPTIONS="-u pcap -e root -s 'root (Arpwatch)'"


Vamos configurá-lo para que envie as mensagens para o nosso e-mail, altere a linha de forma que se pareça coma linha abaixo:


OPTIONS="-u pcap -e usuario@dominio.com.br -s 'root (Arpwatch Servidor XXX Rede 192.168.0.0/24)'"


Algumas opções possíveis são:

-d: Utilizada para debugging. Essa opção inibe o envio de relatórios via email. Eles são enviados para a saida de erro padrão (stderr)

-f: Informa qual o arquivo da base de dados deve ser usado. O valor padrão é arp.dat

-i: Usada para sobrescrever a interface padrão

-n: Especifica redes locais adicionais. É útil se na mesma rede física, estiver rodando mais de um endereçamento de rede.

-u: define qual usuário executará o arpwatch. Rodá-lo com um usuário diferente de root é extremamente recomendado para melhorar a segurança.

-e: Envia mensagens de e-mail para o endereço especificado. O padrão é para o usuário root. Se apenas o caractere '-' for definido, o envio de alertas via e-mail será suspenso, no entanto, o logging via syslog continuará ativo (Útil quando for executado pela primeira vez na rede, evita o recebimento de muitas mensagens).

-s: Envia mensagens de email com endereço de retorno, ao contrário do valor padrão do root.


Obs: Antes de ser rodado pela primeira vez, é necessário que o arquivo da base de dados exista (em branco) e que o usuário especificado em -u seja o dono do diretório /var/arpwatch

Vamos colocá-lo para iniciar no boot:

[root@vpn01 sysconfig]# /sbin/chkconfig --level 2345 arpwatch on 


Iniciando o arpwatch:

[root@vpn01 sysconfig]# /etc/init.d/arpwatch start 


Através do comandos abaixo, confirma-se que o arpwatch já está sendo executado:

[root@vpn01 log]# tail -f messages
Jan 4 10:41:04 vpn01 arpwatch: new station 192.168.0.222 0:10:c6:b9:69:2b
Jan 4 10:41:14 vpn01 arpwatch: new station 192.168.0.176 0:d:f4:3:2:d8
Jan 4 10:41:20 vpn01 arpwatch: new station 192.168.0.224 0:11:25:8a:87:9b



Exemplo de alerta


Ex1:
Subject: new station
hostname:
ip address: 192.168.0.185
ethernet address: 0:d:f4:3:3:1e
ethernet vendor: Watertek Co.
timestamp: Friday, January 4, 2008 10:40:44 -0300

Ex2:
Subject: new station
hostname:
ip address: 192.168.0.245
ethernet address: 0:30:a:5b:73:24
ethernet vendor: AZTECH SYSTEMS LTD.
timestamp: Friday, January 4, 2008 10:40:56 -0300

Entendendo as mensagens


new activity
Esse par de endereço MAC e endereço IP já foi utilizado a seis meses ou mais.

new station
Esse endereço ethernet (MAC) nunca foi visto antes.

flip flop
O endereço ethernet foi foi alterado do primeiro mais recente para o segundo mas recente.

changed ethernet address
O Host mudou para um novo endereço ethernet (MAC)

Testando


A forma de testarmos é rodarmos um ataque de arp spoofing em nossa própria rede. Para o teste, foi utilizado o aplicativo ettercap.
Os seguintes hosts foram utilizados:

Endereço IPEndereço MACDescrição
192.168.0.22400:11:25:8A:87:9BHost do Atacante
192.168.0.300:10:C6:B9:68:F5Gateway da rede, host a ser realizado o spoof


Após o inicio do ataque, foram recebidos os seguintes alertas:

MSG1: Arpwatch detecta a mudança do PAR MAC/IP
Subject: changed ethernet address
hostname:
ip address: 192.168.0.3
ethernet address: 0:11:25:8a:87:9b
ethernet vendor: IBM Corporation
old ethernet address: 0:10:c6:b9:68:f5
old ethernet vendor: USI
timestamp: Friday, January 4, 2008 11:16:06 -0300
previous timestamp: Friday, January 4, 2008 11:16:06 -0300
delta: 0 seconds

MSG2:Arpwatch detecta que o par está oscilando, característica do ataque de arp spoofing. Ele recebe pacotes ARP do com o MAC correto e em seguida, vários outros como MAC errado.
Subject: flip flop
hostname:
ip address: 192.168.0.3
ethernet address: 0:10:c6:b9:68:f5
ethernet vendor: USI
old ethernet address: 0:11:25:8a:87:9b
old ethernet vendor: IBM Corporation
timestamp: Friday, January 4, 2008 11:16:22 -0300
previous timestamp: Friday, January 4, 2008 11:16:21 -0300
delta: 1 second

MSG3: Arpwatch detecta que o par está oscilando, característica do ataque de arp spoofing. Ele recebe pacotes ARP do com o MAC correto e em seguida, vários outros como MAC errado.
Subject:flip flop
hostname:
ip address: 192.168.0.3
ethernet address: 0:11:25:8a:87:9b
ethernet vendor: IBM Corporation
old ethernet address: 0:10:c6:b9:68:f5
old ethernet vendor: USI
timestamp: Friday, January 4, 2008 11:16:31 -0300
previous timestamp: Friday, January 4, 2008 11:16:22 -0300
delta: 9 seconds

Conclusão


Dessa forma, demonstramos como utilizar o arpwatch para monitorar o tráfego ARP de sua rede, e provamos sua eficiência na detecção de ataques de Arp Spoofing/Arp Poisoning. A quantidade de alertas depende de alguns fatores. Um deles é se a rede está configurada com ip estático ou dinâmico. Se for via DHCP, é importante verificar o tempo em que o servidor mantém o endereço IP para o MAC. Se esse tempo for pequeno, é possível que a cada renovação de endereço, você recebe um alerta. Vale a pena ficar atento a esse detalhe.

Abraços.

Permissões part 2

Na primeira parte desse artigo, foi explicado como as permissões são formadas. Nesta segunda parte, conheceremos comandos para manipular as permissões de arquivos e diretórios.

1. Alterando o dono de arquivo/diretório

Através do comando chown é possível alterar o dono, bem como o grupo de um arquivo/diretório.

Ex1: Alterando o dono da pasta teste

[root@localhost Público]# chown root teste


Ex2: Alterando o dono e grupo da pasta teste
[root@localhost Público]# chown root:admin teste


Se especificarmos a opção -R a alteração será feia de forma recursiva para todo o diretório e subdiretórios

Ex3: Alterando o dono e grupo da pasta teste de forma recursiva
[root@localhost Público]# chown -R root:admin teste


2. Alterando o grupo de arquivo/diretório

Através do comando chgrp é possível alterar o grupo de um arquivo/diretório.

Ex1: Alterando o grupo da pasta teste
[root@localhost Público]# chown root teste


Se especificarmos a opção -R a alteração será feia de forma recursiva para todo o diretório e subdiretórios

Ex2: Alterando o grupo da pasta teste de forma recursiva
[root@localhost Público]# chown -R root teste


3. Alterando as permissões de arquivo/diretório

Através do comando chmod é possível alterar as permissões de um arquivo/diretório.
O comando chmod aceita duas forma de representação: a forma simbólica usando letras que representam as permissões, ou ainda o modelo octal conforme tabelas vistas no artigo Permissão de Arquivos - parte 1.

Forma Simbólica

As permissões são atribuídas através das letras (u) usuário, (g) grupo, (o) outros e (a) indicando para todos.
As letras devem ser seguidas dos operadores (+) indicando que a permissão deve ser adicionada, (-) indicando que ela deve ser removida ou ainda por (=), este setará os bits de permissão apenas para o modo especificado, caso o arquivo possua uma permissão não especificada, ela será removida.
As permissões seguem após os operadores anteriores e são expressados pelas letras (r) leitura, (w) gravação, (x) execução, (s) sgid ou suid, (t) stick.

Ex1: Removendo a permissão de execução para o grupo/outros e adiciona a permissão de escrita para o grupo/outros
[root@localhost Público]# chmod go-x,go+w  filename


Ex2: Ativando o Suid
[root@localhost Público]# chmod u+s filename


Ex3: Ativando o Stick
[root@localhost Público]# chmod o+t filename


Ex4: Ativando permissão de execução para todos
[root@localhost Público]# chmod a+x filename


Forma Numérica

É especificado por quatro dígitos octais de acordo com as tabelas do artigo Permissão de Arquivos - parte 1. Se algum digito for omitido, ele será considerado como zero.
O primeiro digito configura a utilização do Suid, Sgid ou Stick, já o segundo configura as permissões do usuário, o terceiro as permissões do grupo e o quarto a de outros.

Ex1: Configurando permissão total para dono/grupo e leitura e execução para outros
[root@localhost Público]# chmod 775 filename


Ex2: Configurando permissão total para dono, leitura e execução para grupos, apenas leitura para outros e suid ativo.
[root@localhost Público]# chmod 4754 filename


4. Utilizando o umask

O comando umask é um filtro de permissões para a criação de arquivos e diretórios.
As permissões padrão para arquivos é 0666 e para diretórios é 0777.
Quando criamos um novo arquivo/diretório, o sistema calcula a diferença das permissões padrão do objeto com o valor do umask, o resultado será a permissão do objeto.

Ex1: Determinando o valor do umask
[root@localhost /]# umask
0022


Um sistema com umask 0222 terá as seguintes permissões para seus novos arquivos/diretórios:

Arquivos

0666
- 0022

0644 (U-Leitura/escrita, G-leitura, O-leitura)

Diretórios

0777
- 0022

0755 (U-Leitura/escrita/execução, G-leitura/execução, O-leitura/execução)

Ex2: Alterando o valor do umask
[root@localhost /]# umask 0002
[root@localhost /]# umask
0002


Alterar o umask do sistema é uma recomendação de segurança.

Abraços.

Introdução ao Linux


O que é Linux? Esta é uma pergunta feita por muita gente, e há muitas respostas para ela. Linux é um sistema operacional, como os *BSD (FreeBSD, NetBSD e outros), OS/2, Windows, MacOS, BeOS, etc. O sistema operacional é o que permite o usuário usar o computador. O criador do Linux se chama Linus Torvalds. Com o nome que o autor tem, já dá pra tirar uma conclusão daonde é originado o nome "Linux"... Como o Linux é beaseado (ideologicamente falando) no Unix, ele juntou o seu nome (Linus) com Unix, e deu Linux :)

O Linux é um sistema operacional multi-tarefa e multi-usuário. Além disso, ele é suportado por várias plataformas (inclusive as mais populares como a arquitetura Intel, que todo o mundo usa). Ele é usado por muitas empresas (principalmente provedores) por sua alta capacidade de Rede e conversação com outros sistemas (como por exemplo, redes Windows e Novell), além de suportar também vários tipos de sistemas de arquivos.

Mas o barato de tudo, e o que deu impulso ao desenvolvimento do Linux é justamente por ele ser um sistema livre e gratuito (Open Source). Isso quer dizer que você não precisa pagar para usá-lo, e nem ele requer nenhuma licença de uso. O Linux simplesmente pode ser pego na Internet, copiado de um amigo, ou seja lá o que for, sem restrições. E além de gratuito, ele é livre! Livre? Sim, livre! O código-fonte do núcleo do sistema (kernel) está liberado sob a licença GPL, e pode ser pego na Internet por qualquer pessoa... Isto quer dizer que qualquer pessoa pode pegar e alterar o código livremente, modificando ao seu próprio gosto e suas próprias necessidades. Por ser livre, o Linux têm como desenvolvedores vários e vários hackers espalhados pelo mundo, que contribuem sempre mandando pedaços de códigos e implementações à Linus Torvalds, que organiza tudo e lança junto ao kernel oficial. Um dos nomes mais conhecidos como contribuidores para o kernel é Alan Cox, e você pode obter uma lista de outros contribuidores do kernel junto com o código-fonte do kernel que pode ser baixado através do endereço ftp://ftp.kernel.org (se possível use mirrors para baixar os kernels).

Quem diria que o Linux ia se desenvolver tanto! No começo nada passava de um grupo de hackers que usavam o sistema. Agora temos muitos usuários caseiros usando, além de várias empresas prestando serviços (como suporte e desenvolvimento de programas), e todo tipo de coisa mais. Sua popularidade cresceu muito, e continua crescendo. As estatisticas dizem que o Linux vai crescer e crescer, e a tendência é realmente essa! Pois o Linux é um sistema operacional de deixar qualquer um de queixo caído. No futuro, acredito que mais e mais empresas vão começar a adotar o Linux como sistema padrão, e começar a desenvolver produtos apenas para ele. Deixando de lado um pouco o monopólio de empresas como a Microsoft e seu sistema operacional Windows.

Você ainda não testou? Recomendo você fazer isso agúra! Pode ser um pouco estranho no começo, mas você aos poucos vai se acostumando, e acaba por se adaptar totalmente à ele! Eu mesmo me adaptei e só uso ele :) Viva o Linux!

A história do Linux

Como usuários fiéis, não podemos nos esquecer da história do Linux... Como surgiu isso tudo? Linus Torvalds, o pioneiro criador, era inscrito numa lista de programadores. Um dia ele estava lendo as mensagens e se bateu com uma pergunta: "Lembra-se daquela época quando os homens escreviam seus próprios drivers de dispositivos (device drivers)?' Ele então resolveu desafiar a si mesmo, e criar um sistema operacional onde se tinha uma liberdade e não se ficasse "preso' no sistema. O que ele tinha em mente era um Unix! Porém, ele não tinha verba suficiente para comprar os caríssimos Unix que eram o tipo de sistema que ele queria.

Inspirado num pequeno e humilde sistema feito por Andy Tanembaum, o Minix, Linus trabalhou duro para fazer o Linux e desenvolver ele. Um pouco antes de lançar a primeira versão oficial do kernel, Linus mandou a seguinte mensagem para o grupo de notícias comp.os.minix:

"Você suspira por melhores dias do Minix-1.1, quando homens serão homens e escreverão seus próprios drivers de dispositivos? Você está sem um bom projeto e está morrendo por colocar as mãos em um sistema operacional no qual você possa modificar de acordo com suas necessidades? Você está achando frustrante quando tudo trabalha em Minix? Chega de atravessar noites para obter programas que trabalhem corretamente? Então esta mensagem pode ser exatamente para você.

Como eu mencionei a um mês atrás, estou trabalhando em uma versão independente de um sistema operacional similar ao Minix para computadores AT-386. Ele está, finalmente, próximo do estágio em que poderá ser utilizado (embora possa não ser o que você esteja esperando), e eu estou disposto a colocar os fontes para ampla distribuição. Ele está na versão 0.02... contudo eu tive sucesso rodando o bash, gcc, gnu-make, gnu-sed, compressão e etc nele."

No dia 5 de Outubro de 1991, Linus Torvalds anunciou a primeira versão oficial do Linux, versão 0.02. Desde então muitos programadores têm respondido ao seu chamado, e têm ajudado a fazer do Linux o sistema operacional que é hoje, uma grande maravilha. Um sistema criado inteiramente por programadores espalhados pela Internet, os hackers!

Qual a diferença entre Linux e Unix?

Linus Torvalds, quando criou o Linux, criou ele nos padrões "POSIX", que é o mesmo padrão que os UNIX usam. É por esse mesmo uso do padrão POSIX que o Linux é parecido com o UNIX. Além do mais, existem vários tipos de UNIX, que têm seu código-fonte fechado, e pago. Uma resposta mais completa para esta pergunta foi feita pelo Fernando M. Roxo:

Limpo, claro e definitivo: O Linux não é UNIX. O Linux é um UNIX. O UNIX foi um sistema criado e registrado pela Unix Lab. Todos os sistemas baseados naqueles códigos são chamados de uma forma geral de UNIX.

Linux foi escrito desde o inicio pelo Linus Torvalds e não contém nenhuma linha de código do UNIX. Mas o Linux foi escrito para ser conforme o padrão POSIX, que deve ser o padrão da API (Application Programming Inteface) Unix, que em última análise pode ser resumido (forçando um pouco a barra) como sendo as chamadas do sistema. Por isto se diz que o Linux é um Unix (não UNIX). Tem uma diferença sutil aí.

Por causa da API POSIX, do conjunto de utilitários (FSF/GNU em sua maioria) e do uso do X-Window (XFree) o Linux é tão parecido com o UNIX que existem empresas que usam o Linux para desenvolver para UNIX que não seja o dela mesma (por exemplo a IBM).

As Distribuições

Voltando mais um pouco ao escopo do que é Linux, podemos ressaltar que o Linux é o sistema operacional, ou seja, o kernel (núcleo). Mas o que é um sistema operacional sem programas? Para que haja um uso dos recursos que o sistema operacional pode oferecer, os programadores vão criando aplicações e utilitários que vão dar o gostinho ao usuário.

O papel das distribuições é isso: empacotar o Linux. O que as distribuições fazem é reunir os programas disponíveis com o kernel, e deixar o sistema pronto para o uso. Sem as distribuições não haveria a popularização do Linux, pois seria um grande trabalho o usuário instalar o sistema puro, e depois compilar os programas deixando-os compatíveis.

Existem inúmeras distribuições existentes por esse mundo afora. Mas há sempre as distribuições mais conhecidas, que são as mais atuantes no mercado. Elas são: Slackware, Conectiva Linux, Debian, Red Hat Linux, SuSE, Mandrake. Cada um tem suas características bem marcantes. E se fôssemos discutir aqui quais as vantagens de cada uma em relação a outra, não conseguiríamos. A escolha da distribuição é uma escolha a gosto.

Meu micro suporta Linux?

Basicamente, para você usar o Linux, você precisará de no mínimo um 386. Isso mesmo, o Linux roda em 386! É claro que para um uso amplo de todos os programas e o sistema X-Window (gráfico), você terá de ser mais exigente com seu hardware... Mas todos os computadores compatíveis com a arquitetura Intel são suportados pelo Linux (e também outros tipos de arquiteturas como por exemplo o Alpha).

Para a memória RAM, você irá precisar de no mínimo 2MB de RAM. É recomendável ter 8Mb acima para rodar o servidor X. E seguindo a mesma filosofia do que falei antes, sempre é bom você ter mais para usar tudo rápido e sem perder a paciência :) Espaço em disco? Depende muito. As distribuições atuais disponibilizam até 6 CDs recheados de programas, que podem simplesmente acabar com o espaço do seu disco em alguns minutos! Uma instalação básica do Linux, apenas com o básico mesmo, dá 10MB. Eu acredito que 1GB seja suficiente para colocar todo tipo de coisa que você vai usar (e até coisa que você nem vai usar).

Só como curiosidade, aqui em casa, eu já rodei meu Linux nos seguintes computadores: Primeiro num Pentium 100, com 24MB de RAM, e 1GB de espaço em disco. Rodei também num 386 (nem me pergunte quantos Mhz é porque eu não faço a mínima idéia :) com 8MB de memória RAM, num HD de 256MB. E por último em um Celeron 300 com 32MB de RAM e 1GB de espaço em disco. Atualmente eu estou usando em um K6-II 550, com 64MB de RAM, e 10GB de espaço no HD.

Outra dúvida muito comum é: O Linux roda em laptops? Sim! Roda muito bem e suporta bem os dispositivos PCMCIA... Não tem absolutamente nada com o que se preocupar.

Por que eu devo confiar no Linux?

Pergunta muito fácil de se responder, inclusive eu vou responder bem grosseiramente: Ele é bom! :) O Linux tem ganhado credibilidade cada vez mais por ser um sistema seguro, estável, e confiável. É muito difícil (senào quase impossível) que o Linux em si dê um crash. Só para ter uma idéia, nestes 4 anos em que uso Linux, só obtive no máximo 3 travamentos! Por que estes travamentos? Bem, um foi na época em que exploraram uma falha no kernel e criaram o teardrop (um exploit que travou as coisas aqui), e os outros dois foi por causa de um problema na placa mãe :) Quer dizer, já aconteceu algumas outras vezes de minha interface travar, mas eu dei um telnet e um ping na máquina através de outra na rede, e ela respondia. Geralmente isso acontece comigo no Quake, quando eu mando conectar em algum nome de host que não existe, o SVGAlib (biblioteca que o Quake usa) simplesmente para de funcionar e você não tem mais como teclar algo ou mudar de tela... Mas tive a certeza que não foi o sistema que travou e sim o SVGAlib que travou meu teclado e monitor :)

Empresas cada vez mais estão apostando no Linux. A IBM é uma das empresas que mais está investindo pesado no Linux, sendo com ajuda financeira, parcerias e desenvolvimento de programas. A Intel é outra empresa que também está ajudando muito, investindo bastante nos desenvolvedores do sistema. Além disso, várias outras pequenas ou médias empresas estão cada vez mais adotando o Linux como sistema padrão pelo simples fato de que ele funciona melhor e mais estávelmente que outros sistemas como o Windows. Pode ser que você ache que isto tudo conversa fiada, mas o Linux é bem estável mesmo! Já vi sistemas Linux ligados por vários meses sem nem sequer dar um reboot na máquina. Inclusive aqui em casa eu consegui deixar o meu Linux ligado por 23 dias, pena que faltou luz e o computador desligou (buá não tenho nobreak :~().

Basicamente é isso. Você tem de confiar no Linux porque ele é bom e tá acabado. E só tende a melhorar, antigamente não havia nem uma interface gráfica muito boa e usável para quem está iniciando na computação. Hoje temos o GNOME e KDE que são duas ótimas interfaces gráficas para quem está engatinhando. São coisas que fazem o Linux valer a pena!

1.7. O que é GPL?

Se você já ouviu falar bem de Linux, com certeza já deve ter ouvido falar nesta sigla. GPL significa General Public License (ou traduzindo grosseiramente: Licença Pública Geral), e foi criada pela Free Software Foundation. A grande maioria dos programas que vêm nas distribuições Linux são de código-fonte aberto, e usam esta licença. Uma licença serve para proteger o seu código quando ele for lançado para o público.

A licença GPL permite que o autor do código distribua livremente o seu código... Outras pessoas podem simplesmente pegar este código, modificar à suas próprias necessidades e usar à vontade. O único requerimento é que a pessoa que modificou deve lançar o código modificado em GPL e manter também o seu código aberto (e não apenas distribuir os binários). Isso tudo cria uma comunidade de desenvolvedores onde toda a ajuda é mútua, e você pode pegar várias idéias de outros desenvolvedores simplesmente olhando o código deles. Além disso, você pode aproveitar e poder ajudar o desenvolvedor, criando correções e mandando-as para o autor.

É com essa licença que o kernel do Linux é liberado. É assim que o kernel tem seu desenvolvimento feito por várias e várias pessoas em todo o mundo. Estas pessoas pegam livremente o código-fonte do kernel, analizam-no e procuram por erros. Se encontrarem erros, escrevem correções e mandam para o Linus Torvalds. E não só correções, mas desenvolvedores também fazem novas implementações ao kernel e mandam para o Linus Torvalds organizar tudo. E é assim que temos hoje em dia este grande e bem feito e organizado kernel do Linux! É assim que a filosofia GPL funciona, e funciona muito bem para criar uma comunidade de desenvolvedores justa! Eu pessoalmente apóio e muito a licença GPL, que para mim é simplesmente perfeita. Vivas à Free Software Foundation por criar esta licença! E vivas para os desenvolvedores que a utilizam para seus códigos! :)

Você pode obter a licença GPL nos seguintes endereços:

Outras licenças que é interessante ver:

Permissões part 1

Esse assunto está dividido em duas partes:

Na primeira, conheceremos melhor o aspecto da permissão de um arquivo, em que ela se baseia, como checar as permissões de determinados objetos do sistema de arquivo e como as máscaras são formadas.

Na segunda, veremos os comandos fundamentais para alterar as permissões dos arquivos ou pastas (chmod, chown, chgrp, umask) e aspecto avançados sobre permissões.

Permissões, são conjuntos de direitos que são aplicados a arquivos ou diretórios do sistema de arquivo. Elas garantem que um usuário que não se enquadre nas permissão atribuídas a um arquivo, não tenha acesso ao mesmo, ou não possa executá-lo, ou ainda alterá-lo.

Desta forma pode-se garantir a integridade e/ou sigilosidade dos arquivos e pastas no sistema de arquivos.

Nos sistemas linux, o modelo de permissão, funciona em três níveis independentes:

  • Usuário;
  • Grupo;
  • Todos os outros usuários.

Para checarmos quis permissões um determinado arquivo ou diretório possuem, podemos usar o comando abaixo:

[fred@notebook tmp]$ ls -all
drwxrwxr-x 3 fred casa 4096 Fev 7 11:52 .
drwxr-xr-x 133 fred casa 8192 Fev 8 09:34 ..
-rw-rw-r-- 1 fred casa 49979 Fev 6 09:22 DSC07854.JPG
-rw-rw-r-- 1 fred casa 154913 Fev 7 11:52 DSC07855.JPG


Na primeira coluna temos o identificador do objeto e as permissões aplicadas a ele, na terceira coluna temos o dono do arquivo e na quarta coluna temos o grupo o qual o arquivo faz parte.
Identificador
Dono
Grupo
Objeto
drwxrwxr-x
fred
casa
.
drwxr-xr-x
fred
casa
..
-rw-rw-r--
fred
casa
DSC07854.JPG
-rw-rw-r--
fred
casa
DSC07855.JPG


Tomaremos como exemplo, o identificador do arquivo DSC07854.JPG.

Vamos separá-lo da seguinte forma:

-
Tipo do objeto
rw-
Permissão para o dono do arquivo (owner)
rw-
Permissão para o grupo do arquivo (group)
r--
Permissão para o outros (others)


O primeiro caractere '-' especifica o tipo do arquivo, no caso destacado acima, ele é um arquivo regular. É bom frisar que o linux trata os diretórios com arquivos, logo, o modelo aplica-se igualmente a eles. Os tipos possíveis para esse campo são:

Indicador
Significado
d
diretório
l
link
c
arquivo especial de caractere
b
arquivo de bloco
p
canal (fifo)
s
socket
-
arquivo normal


O resto do campo de permissão, é composto por três grupos de três caracteres, representando o usuário, o grupo e todos os outros, respectivamente.

Os valores convencionais para esses campos são:

r
Read (permissão de leitura)
w
Write (permissão de gravação/deleção)
x
Execution (permissão de execução)
-
Permissão desabilitada


Com isso, percebemos que o arquivo regular abaixo possui as seguintes permissões:

-rw-rw-r-- 1 fred casa 154913 Fev 7 11:52 DSC07855.JPG


rw-
O Dono possui permissão de leitura e escrita
rw-
O Grupo possui permissão de leitura e escrita
r--
Todos os outros possuem apenas permissão de leitura
fred
O Dono do arquivo é o usuário fred
casa
O grupo do arquivo é casa



Além da forma acima, podemos especificar as permissões de um arquivo, usando o modelo octal abaixo:

Permissão
Binário
Decimal
---
000
0
--x
001
1
-w-
010
2
-wx
011
3
r--
100
4
r-x
101
5
rw-
110
6
rwx
111
7



Poderíamos especificar a permissão do arquivo das seguintes maneiras:

rw-rw-r--
110110100
664 – Mais comum

Com isso, podemos criar o quadro abaixo contendo as permissões em forma decimal:

Permissões
Decimal
--------
000
r--------
400
r--r--r--
444
rw-------
600
rw-r--r--
644
rw-rw-r--
666
rwx------
700
rwxr-x---
750
rwxr-xr-x
755
rwxrwxrwx
777


O conhecimento da tabela acima é fundamental a administrador de sistemas. No dia a dia é muito comum se depara com a necessidade de alterar as permissões de arquivos e pastas.

Permissões Especiais

Ainda existe três permissões que podem ser atribuídas a um objeto do sistema de arquivos:

Suid
Se o bit de SUID for ativo para um arquivo, sempre que esse arquivo for executado, ele rodará com as permissões do dono do arquivo. Para exemplificar, imaginemos o aplicativo teste.sh cujo dono seja o root. Se o usuário fred executar esse arquivo, ele será executado com as permissões do usuário root.

O bit SUID é representado pela letra s no local do bit de execução w no campo de permissão do usuário. Vejamos o exemplo abaixo:

[root@localhost fred_m]# ls -all /usr/bin/passwd
-rwsr-xr-x 1 root root 29016 2007-09-25 18:28 /usr/bin/passwd


Sgid
De forma semelhante, podemos atribuir o bit SGID no campo da permissão referente ao grupo. Em um diretório que possua o bit SGID setado, todos os arquivos criados dentro dele, pertencerão ao mesmo grupo do diretório corrente ao invés de pertencer ao grupo do usuário que o criou. Veja o exemplo abaixo:

[root@localhost Público]# ls -all
drwxrwsr-x 3 fred_m fred_m 4096 2008-01-11 22:25 teste


Esta permissão é útil quando queremos utilizar um diretório no qual várias pessoas do mesmo grupo compartilharão arquivos nele.

Obs: S = apenas suid ou sgid
s = suid/sgid + x(execução)‏

Stick
Ao se ativar esse permissão em um diretório, os arquivos criados/contidos nele só poderão ser apagados pelo seu dono. Imaginemos o diretório /tmp no qual todos os usuários possuem acesso total. Neste diretório os usuários só podem apagar os arquivos que eles criaram.
Essa permissão só é aplicada a diretórios e é expressão no bit de execução do campo de permissão de outros. Ela é expressa pela letra t.

[root@localhost /]# ls -all /
drwxrwxrwt 73 root root 20480 2008-01-11 22:11 tmp


Obs: T = apenas stick
t = stick + x(execução)‏

Da mesma forma que as permissões convencionais, as permissões especiais podem ser representadas pelo modelo octal conforme tabela abaixo:

Digito
SUID
SGID
Stick
0
-
-
-
1
-
-
sim
2
-
sim
-
3
-
sim
sim
4
sim
-
-
5
sim
-
sim
6
sim
sim
-
7
sim
sim
sim

sexta-feira, 7 de março de 2008

apt-build

Tenho que admitir que sou um utilizador compulsivo do apt-get e por vezes do aptitude, chego a passar tardes a instalar e a desinstalar programas. E numa dessas tardes descobri este “pequeno” programa. Ele funciona sobre os mesmos repositórios do apt-get, logo temos acesso aos mesmos programas que o apt-get. Mas na altura de instalação desses mesmos programas é que as coisas mudam uma vez que eles são são optimizados para a nossa máquina.

Neste caso como estou a usar Ubuntu bastou-me fazer um “sudo apt-get install apt-build”. A configuração começa automaticamente pedindo ao utilizador o nível de optimização, neste caso temos baixo, médio e alto. Depois escolhemos o tipo de sistema em que estamos a instalar o apt-build, como sou possuidor de um centrino o sistema que eu escolhi é o pentium-m.

E pronto estamos prontos a usar o apt-build. Basicamente, usa os mesmos parâmetros que o apt-get.

Temos, por exemplo:

  • apt-build update
  • apt-build install
  • apt-build world

Este último não existe no apt-get, mas é bastante interessante e faz uma optimização ao sistema todo.

E pronto, neste momento estou a optimizar o mplayer para a minha máquina.

PS: Já agora, enquanto escrevia este post, deu na televisão que já está disponível o mais recente jogo da Floribella. É isso meus amigos, ela mesmo. E agora que o natal está à porta, acho que não vou perder a oportunidade.

Tv linux

Recentemente vi um post bastante interessante no PeopleWare, onde se disponha a dar a conhecer certos e determinados programas que nos permitiam ver televisão no computador, bastando para isso ter ligação a Internet. Esta ligação convém que seja um bocadinho rápida senão não se vê as coisas com muita fluidez.

Seja como for, estes respectivos programas são todos para Windows. E eu como utilizador Linux gostava imenso de ter esse serviço. Logo, comecei por dar uso ao Wine. Mesmo assim não conseguia ver pois o programa que eu tinha instalado tinha algumas dependências, ou seja, quando ia tentar ver o meu bonito futebol dava um erro. Fui pesquisar um bocadinho, e não é que deu resultado:

  • O programa que eu recomendo que usem é o TVAnts, é o mais usado para ver os jogos de futebol. Podem fazer o download aqui;

  • Quem não tem o Wine vai ter de o instalar. Eu fiz “sudo apt-get install wine“. Se o vosso sistema for Debian façam o mesmo;

  • Agora que temos o Wine instalado e o setup do TVAnts é chegada a altura de o instalar. Para isso basta ter um terminal aberto, ir para a pasta onde está o setup e escrever “wine TVAntsSetup.exe“.

  • Agora que temos o TVAnts instalado temos que o configurar. E vamos configura-lo tendo como intenção usar o Mplayer para ver os jogos em directo. Vamos ao menu do Wine e abrimos o TVAnts.

  • Agora vamos a “tools -> settings“. Escolhemos a tab “Broadcast“. No campo “Listen Port” vamos colocar a porta 1755 que é a porta que o Mplayer usa por default. E activamos o campo “Enable access from other computers”.

  • O que o TVAnts faz realmente é criar um servidor no nosso computador. Mediante os canais que vamos adicionando, ele vai criando vários endereços de streaming de vídeo que correm directamente na nossa máquina. Para os pudermos ver basta ter o Mplayer. Escusado será dizer para terem cuidado com o tráfego.

  • Agora vamos deslocar-nos ao site tugalive e escolher os jogos que queremos ver e que usem o programa TVAnts.

  • Uma vez decidido o jogo, carregamos com a tecla direita no endereço e copiamos o link. Voltando novamente ao TVAnts, vamos a tab “Channels“, carregamos no botão “add“, colamos o endereço no campo “URL” e fazemos “Ok“.

  • Se tudo estiver a correr bem vai dar um erro, mas não importa. O que importa mesmo é o endereço que está nesse erro que vai ser o usado como parâmetro para o Mplayer, ou seja, no terminal escrevemos “mplayer endereço“. No meu caso o endereço foi “http://localhost:1755/1.asf” onde o canal é “1.asf” mas podia ser outro, caso tivesse mais canais activos.

Espero que vos seja útil esta informação. Para mim foi. Caso tenham alguma dúvida é só comunicar aqui a minha pessoa.

P.S. Como deu para perceber este programa é mais virado para jogos de futebol, mas eu ontem estava a ver o canal Discovery com legendas em Chinês. Eram bonitas as legendas.