terça-feira, 10 de maio de 2011

Continuação dos Comandos do Unix

Comandos para manipulação de arquivos

cat - Mostra o conteúdo de um arquivo binário ou texto 
tac - Semelhante ao cat mas inverte a ordem
tail - Mostra as últimas linhas de um arquivo. Ex: tail -f <arquivo> Útil para visualizar arquivos de log continuamente.
head - Mostra as primeiras linhas de um arquivo. Ex: head -100 visualiza as 100 primeiras linhas do arquivo. 
less - Mostra o conteúdo de um arquivo de texto com controle 
vi - Editor de ficheiros de texto 
vim - Versão melhorada do editor supracitado 
rm - Remoção de arquivos (também remove diretórios, mas com o parâmetro -r, que significa recursividade) 
cp - Copia diretórios 'cp -r' copia recursivamente
mv - Move ou renomeia arquivos e diretórios 
chmod - Altera as permissões de arquivos ou directórios 
chown - Altera o dono de arquivos ou directórios cmd>txt - Cria um novo arquivo(txt) com o resultado do comando(cmd) cmd>>txt - Adiciona o resultado do comando(cmd) ao fim do arquivo(txt)
touch touch foo.txt > arquivo.txt - Mais rápido que o touch para criação de arquivos split - Divide um arquivo 
recode - Recodifica um arquivo ex: recode iso-8859-15..utf8 file_to_change.txt 
Comandos para administração
man - Mostra o manual do comando.adduser - Adiciona usuários. O useradd pode também ser usado.addgroup - Adiciona grupos. o group add pode também ser usado.apropos - Realiza pesquisa por palavra ou stringdmesg - Exibe as mensagens da inicialização(log)
du - Exibe estado de ocupação dos discos/partições
find - Comando de busca ex: find ~/ -cmin -3userdel - Remove usuáriosusermod - Modifica informações de um determinado usuário.groupmod - Modifica informações de um determinado grupo.chfn - Altera informação relativa a um utilizadorwho - Informa quem está logado no sistema.em algumas versões do linux, o comando w pode ser usado, e retorna informações mais detalhadas, como o shell do usuário.whoami - Informa com qual usuário você está logadopasswd - Modifica senha (password) de usuáriosumask - Define padrões de criação de arquivos e diretórios
ps - Mostra os processos correntesps -aux - Mostra todos os processos correntes no sistema
kill - Mata um processokillall - Mata todos os processos com o nome informado
su - Troca para o super-usuário root (é exigida a senha)su user - Troca para o usuário especificado em 'user' (é exigida a senha)chown - Altera o proprietário de arquivos e pastas (dono)
Comandos para administração de rede
ifconfig - mostra as interfaces de redes ativas e as informações relacionadas a cada uma delas
route - Mostra as informações referentes as rotas
mtr - Mostra rota até determinado IP
netstat - Exibe as portas e protocolos abertos no sistema.
iptraf - Analisador de trafego da rede com interface gráfica baseada em diálogos
tcpdump - Sniffer muito popular. Sniffer é uma ferramenta que "ouve" os pacotes que estão passando pela rede.
traceroute - Traça uma rota do host local até o destino mostrando os roteadores intermediários
nslookup - Consultas a serviços DNS 
dig - Consultas a serviços DNS

terça-feira, 3 de maio de 2011

Comandos do Unix

Esta é uma lista de programas de computador para o sistema operacional Unix e os sistemas compatíveis, como o Linux. Os comandos do Unix tornam-se acessíveis ao usuário a partir do momento em que ele realiza o login no sistema. Se o usuário utiliza tais comandos, então ele se encontra no modo shell, também chamado de modo texto (ou Unix tradicional). Quando estiver utilizando o modo gráfico, o usuário também poderá se utilizar de tais comandos desde que abra uma janela de terminal (Xterm).
A linha de comando do sistema operacional Unix permite a realização de inúmeras tarefas através de seus comandos, de manipulação de arquivos a verificação do tráfego em rede. Para exibir uma descrição detalhada de cada comando abra uma console ou xterm e digite man comando, onde comando é o comando em questão.

Comandos de manipulação de diretório


mkdir - Cria um diretório vazio exemplo: mkdir docs
rmdir - Exclui um diretorio (se estiver vazio)
rm -rf - Exclui um diretório e todo o seu conteúdo (cuidado com este comando)
cd - Entra num diretório (exemplo: cd docs) ou retorna para HOME
cd / - Muda para o diretório raiz
cd ~ - vai direto para o diretório home do usuário logado.
cd - - volta ao último diretório acessado
pwd - Exibe o local do diretório atual
ls - Lista o conteúdo do diretório
ls -alh - Mostra o conteúdo detalhado do diretório
ls -a - Exibe os arquivos "ocultos" do determinado diretório.
ls -ltr - Mostra os arquivos no formado longo(l) em ordem inversa(r) de data (t)
df - Mostra a utilização dos sistemas de arquivos montados
du -msh - Mostra o tamanho do diretório em Megabytes
whereis - Mostra onde se encontra determinado arquivo (binários) exemplo: whereis samba

Continua no próximo post (...)

terça-feira, 26 de abril de 2011

HISTÓRIA DO LINUX

O nome Linux surgiu da mistura de Linus + Unix. Linus é o nome do criador do Linux, Linus Torvalds. E Unix, é o nome de um sistema operacional de grande porte, no qual contaremos sua história agora, para que você entenda melhor a do Linux.

A origem do Unix tem ligação com o sistema operacional Multics, projetado na década de 1960. Esse projeto era realizado pelo Massachusets Institute of Technology (MIT), pela General Eletric (GE) e pelos laboratórios Bell (Bell Labs) e American Telephone na Telegraph (AT&T). A intenção era de que o Multics tivesse características de tempo compartilhado (vários usuários compartilhando os recursos de um único computador), sendo assim, o sistema mais arrojado da época. Em 1969, já exisita uma versão do Multics rodando num computador GE645.] 

Ken Thompsom era um pesquisador do Multics e trabalhava na Bell Labs. No entanto, a empresa se retirou do projeto tempos depois, mas ele continuou seus estudos no sistema. Desde então, sua idéia não era continuar no Multics original e sim criar algo menor, mas que conservasse as idéias básicas do sistema. A partir daí, começa a saga do sistema Unix. Brian Kernighan, também pesquisador da Bell Labs, foi quem deu esse nome. 

Em 1973, outro pesquisador da Bell Labs, Dennis Ritchie, rescreveu todo o sistema Unix numa linguagem de alto nível, chamada C, desenvolvida por ele mesmo. Por causa disso, o sistema passou a ter grande aceitação por usuários externos à Bell Labs. 

Entre 1977 e 1981, a AT&T, alterou o Unix, fazendo algumas mudanças particulares e lançou o System III. Em 1983, após mais uma série de modificações, foi lançado o conhecido Unix System IV, que passou a ser vendido. Até hoje esse sistema é usado no mercado, tornando-se o padrão internacional do Unix. Esse sistema é comercializado por empresas como IBM, HP, Sun, etc. O Unix, é um sistema operacional muito caro e é usado em computadores poderosos (como mainframes) por diversas multinacionais. 

Qual a relação entre o Unix e o Linux, ou melhor, entre o Unix e Linus Torvalds? 

Para responder essa pergunta, é necessário falar de outro sistema operacional, o Minix. O Minix é uma versão do Unix, porém, gratuita e com o código fonte disponível. Isso significa que qualquer programador experiente pode fazer alterações nele. Ele foi criado originalmente para uso educacional, para quem quisesse estudar o Unix "em casa". No entanto, vale citar que ele foi escrito do “zero” e apesar de ser uma versão do Unix, não contém nenhum código da AT&T e por isso pode ser distribuído gratuitamente. 

A partir daí, “entra em cena” Linus Torvalds. Ele era um estudante de Ciências da Computação da Universidade de Helsinki, na Filândia e em 1991, por hobby, Linus decidiu desenvolver um sistema mais poderoso que o Minix. Para divulgar sua idéia, ele enviou uma mensagem a um grupo pela Usenet (uma espécie de antecessor da Internet). A mensagem pode ser vista no final deste artigo. No mesmo ano, ele disponibilizou a versão do kernel (núcleo dos sistemas operacionais) 0.02 e continuou trabalhando até que em 1994 disponibilizou a versão 1.0. Até o momento em que este artigo estava sendo escrito, a versão atual era a 2.6. 

O Linux é um sistema operacional livre e é uma re-implementação das especificações POSIX (padronização da IEEE, Instituto de Engenharia Elétrica e Eletrônica) para sistemas com extensões System V e BSD. Isso signfica que o Linux é bem parecido com Unix, mas não vem do mesmo lugar e foi escrito de outra forma. 


Mas porque o Linux é gratuito? 

Linus Torvalds, quando desenvolveu o Linux, não tinha a inteção de ganhar dinheiro e sim fazer um sistema para seu uso pessoal, que atendesse suas necessidades. O estilo de desenvolvimento que foi adotado foi o de ajuda coletiva. Ou seja, ele coordena os esforços coletivos de um grupo para a melhoria do sistema que criou. Milhares de pessoas contribuem gratuitamente com o desenvolvimento do Linux, simplesmente pelo prazer de fazer um sistema operacional melhor. 

Licença GPL 

O Linux está sob a licença GPL, permite que qualquer um possa usar os programas que estão sob ela, com o compromisso de não tornar os programas fechados e comercializados. Ou seja, você pode alterar qualquer parte do Linux, modificá-lo e até comercialiazá-lo, mas você não pode fechá-lo (não permitir que outros usuários o modifiquem) e vendê-lo. 

GNU 

Mas a história do Linux não termina por aqui. É necessário também saber o que é GNU. GNU é um projeto que começou em 1984 com o objetivo de desenvolver um sistema operacional compatível com os de padrão Unix. O Linux em si, é só um kernel. Linus Torvalds, na mesma época que escrevia o código-fonte do kernel, começou a usar programas da GNU para fazer seu sistema. Gostando da idéia, resolveu deixar seu kernel dentro da mesma licença. 

Mas, o kernel por si só, não é usável. O kernel é a parte mais importante, pois é o núcleo e serve de comunicador entre o usuário e o computador. Por isso, com o uso de variantes dos sistemas GNU junto com o kernel, o Linux se tornou um sistema operacional. 

Mas você pode ter ficado confuso agora. O que é o Linux então? O que é GNU? Simplesmente, várias pessoas uma versões modificadas dos sistemas GNU, pensando que é o Linux em si. Os programadores que trabalham com ele, sabem que o Linux, é basicamente o kernel, conforme já foi dito, mas todos, chamam esse conjunto de Linux (há quem defenda o uso de GNU/Linux). 

Finalizando, o projeto GNU é um dos responsáveis pelo sucesso do Linux, pois graças à “mistura” de seus programas com o kernel desenvolvido por Linus Torvalds, o Linux vem mostrando porque é um sistema operacional digno de habilidades insuperáveis por qualquer outro sistema.

quinta-feira, 21 de abril de 2011

Dispositivos e Partições no Linux

Nesse post tentarei colocar de uma maneira simples, rápida e fácil, dicas de como lidar com suas partições e dispositivos. Procurarei manter sempre uma comparação com o Windows para ninguém se perder.

HDs
Diferente do que acontece no Windows, no Linux vê-se todos os dispositivos como colaboradores do sistema, e estes serão encontrados no diretório /dev . Sendo assim, se seu modem estiver na COM 2, no Linux ele aparecerá no diretório /dev/ttyS1 , e assim por diante. Como estamos falando de discos, farei uma rápida tabelinha para orientação.

Bios Windows Linux
Primário MasterC:/dev/hda
Primário SlaveD:/dev/hdb
Secundário MasterE:/dev/hdc
Secundário SlaveF:/dev/hdd

Claro que neste caso estamos falando de disco IDE. Para cada particão criada em um disco, diferente do Windows que gera um novo nome para a partição, o Linux da um número a mesma. Vamos imaginar que trabalharemos com o primário master ou como chamaremos sempre a partir de agora hda. Vamos supor que temos um HD de 10Gb, o dividimos em 3 partições, uma de 256Mb pra swap, uma de 4Gb para o root ("../xml/introducao-xml//"), e o resto para o /usr. Com isso seu disco ficará da seguinte forma.
/dev/hda1
/dev/hda2
/dev/hda3
Existe ainda um porém, caso queira acessar arquivos em um sistema com formato diferente do ext2, tipo uma partição Windows (vfat), DOS (msdos), CD-ROM (iso9660, joliet), entre outros, será necessário ter um kernel compilado com suporte a esses formatos.
Por exemplo, para montar sua partição Windows (vfat) localizada em /dev/hda1 use o comando:
mount -t vfat /dev/hda1 /mnt/windows
Outro ponto importante é dizer ao mount qual o tipo de partição ele está montando com a opção "-t", os tipos padrões são:
  • vfat: para partições Windows com FAT16 ou FAT32
  • msdos: para partições DOS
  • iso9660: para alguns CD-ROMs
  • joliet: também utilizado para CD-ROMs
Fiz essa introdução, para que todos pudessem entender como é o sistema de utilização de discos no 1 .

CD-ROMs e floppys
Agora, falaremos como usar seu CD-ROM no Linux. Primeiro verifique onde está o seu CD-ROM. Digamos que esteja no hdc. Existem várias maneiras de acessá-lo. A primeira, na mão com o comando: mount -t iso9660 /dev/hdc /mnt/cdrom . A outra é, adicionando essa linha ao arquivo /etc/fstab :
/dev/hdc /cdrom iso9660 defaults,ro,user,noauto 0 0
E para montar o CD-ROM basta dar o comando: mount /mnt/cdrom ou mount /dev/hdc . O Linux verifica para ver se existe essa entrada no fstab e a monta. O comando mount só pode ser usado pelo super-usuário (root). Uma vez montado o cd-rom, qualquer usuário pode utilizá-lo, com as devidas permissões de uso. Quando o seu CD-ROM estiver montado, não será possível tirar o CD do driver, isto porque é incorreto fazê-lo enquanto o cd estiver sendo lido. Muitas pessoas falam: "Ahh, mais meu Windows faz isso!"../xml/introducao-xml/. Realmente, ele faz, mas a própria Microsoft, em um comunicado, diz que não se responsabiliza por danos causados pelo fato do CD estar sendo lido e um usuário abrir o driver. Para poder tirar o cd do driver é preciso desmontar o CD-ROM com o comando: umount /mnt/cdrom ou umount /dev/hdc . Feito isso, pode-se tirar o cd do driver.
Com o disquete também não é diferente, a diferença é onde o disquete fica no diretório /dev . Geralmente é no /dev/fd0 , pode-se montá-lo na mão ou então criar a entrada no /etc/fstab :
dev/fd0 /floppy auto defaults,user,noauto 0 0
Existem alguns programas que se dispõe a montar seus discos e outros dispositivos automaticamente, como o automount. Isso ajuda bastante se existem muitos usuários na máquina, se não quiser dar permissões de root para os mesmos. Ou pode-se adicioná-los no grupo do CD-ROM e do floppy também. O problema de programas como o automount é que ele realmente monta o dispositivo quando precisa ser utilizado, mas não sabe a hora correta de desmontá-lo, no próprio automount-HOWTO tem um script para fazer isso. Caso queira dar uma olhada vá em http://linuxdoc.org/HOWTO/mini/Automount.html .

terça-feira, 12 de abril de 2011

Permissões de arquivos no Linux

"O Linux é um sistema multiusuário". Você já deve ter ouvido esta frase muitas vezes. Isto significa que um mesmo PC ou servidor pode ser acessado por vários usuários simultâneamente.
Com isto, surge a necessidade de algum sistema de segurança que limite o que cada usuário pode fazer no sistema, para que não haja o risco de que um usuário possa destruir arquivos ou configurações do sistema ou de outros usuários.
Isto é feito através das permissões de arquivos. Clicando sobre as propriedades de qualquer arquivo no konqueror você verá uma janela com 9 campos, que permitem dar permissão de leitura, gravação e execução (que alguém traduziu para "inserir" na versão em Português :-) para o usuário dono do arquivo, para outros usuários que pertencem ao mesmo grupo que ele e finalmente a todos os demais usuários. O "dono" do arquivo é por default o usuário que criou o arquivo. Apenas este usuário pode alterar as permissões de acesso ao arquivo e pasta. Em seguida vem o grupo, que permite que vários usuários tenham acesso a um arquivo ou pasta, sem ter que apelar para o campo "outros" que daria acesso a qualquer um. Imagine que estamos configurando um servidor em uma empresa importante e neste servidor temos uma pasta chamada "projeto_apollo" com vários arquivos confidenciais que deverá ser acessada apenas pelos programadores que estão trabalhando no projeto. Desativaríamos de imediato o campo "todos" mantendo marcados apenas os campos "usuário" e "grupo". O próximo passo seria justamente criar um novo grupo de usuários ("apollo" por exemplo) e incluir neste grupo todos os usuários que fazem parte do projeto. A partir daí, todos os programadores passariam a ter acesso à pasta, já que fazem parte do grupo. Você pode criar novos grupos e adicionar usuários a eles através do programa "kuser" que faz parte do KDE e por isso é encontrado em quase todas as distribuições. Basta chama-lo pelo terminal.Basta clicar em "Grupo > Novo", fornecer o nome do novo grupo e em seguida clicar no botão "Edit" para marcar os usuários que farão parte dele. Caso o kuser não esteja instalado no seu sistema, uma segunda opção é o "userconf". No Mandrake você pode utilizar também o "userdrake". Você pode criar quantos usuários e quantos grupos quiser, e cada usuário pode fazer parte de quantos grupos for necessário. Ou seja, você pode por exemplo criar um grupo para cada pasta importante e adicionar no grupo apenas os usuários que tiverem acesso a ela. De fato, a configuração default da maioria das distribuições linux atuais é dar acesso de leitura para a maioria das pastas (com excessão naturalmente dos arquivos de senha e outros arquivos críticos) para todos os usuários, mas ao mesmo tempo dar acesso de gravação apenas para o diretório home de cada um. Ou seja, por default você, logado como usuário normal, poderá navegar por quase todos os diretórios do sistema, mas só poderá criar e alterar arquivos dentro da sua pasta de usuário. Nos outros lugares receberá sempre um aviso de acesso negado. Isso impede que os usuários possam fazer besteira no sistema, como por exemplo, tentar deletar a pasta de módulos do Kernel. Claro, como todas as regras, as permissões de acesso têm um única exceção: o root. Ele é o único que não possui restrições: pode alterar, executar ou deletar o que bem entender. Pode alterar o dono das pastas ou alterar as permissões de acesso. O root é o Deus do sistema. Você precisará usar o root sempre que for alterar as permissões de acesso a uma pasta do sistema ou criada por outro usuário, mas não use-o regularmente, a menos que esteja apenas brincando com o sistema e possa reinstala-lo a qualquer momento, pois além de poder destruir facilmente arquivos do sistema, usar o root abre as portas para várias brechas de segurança ao usar programas de IRC, abrir anexos em e-mails ou mesmo navegar na web.
A maioria dos problemas de segurança a que os usuários do Windows estão submetidos, decorre justamente do fato de utilizarem contas com privilégios equivalentes ao do root no Linux. Se você pode fazer o que quiser no sistema, os programas executados por você (incluindo trojans, scripts incluídos de páginas web executados pelo navegador, etc.) também poderão não terão restrições.
Se você se pergunta às vezes como alguns vírus como o Ninda e o Sircan podem se espalhar tão rapidamente, saiba que o problema é justamente este: a combinação de um sistema com um fraco controle de segurança, combinado combinado com o uso de contas administrativas por usuários sem noções de segurança. Voltando ao tema da criação de usuários, se você não gostou dos utilitários gráficos, pode adicionar novos usuários também usando os comandos "adduser" e "passwd"
Por exemplo:

adduser morimoto
(cria o usuário morimoto)

passwd morimoto
(altera o password do user morimoto)

O comando passwd também pode ser usado para alterar a senha. Como root você deve usar "passwd usuario" e como usuário apenas "passwd" para alterar a senha do login. Apenas o root pode adicionar novos usuários ao sistema.
Para alterar as permissões de acesso de arquivos e pastas via linha de comando você deve usar o comando chmod. A sintaxe dele parece um pouco complicada à primeira vista, mas nada que um pouco de prática não possa resolver:
# chmod 744 arquivo

Temos aqui o comando chmod propriamente dito, o arquivo ou pasta que terá suas permissões de acesso alteradas e um número de três dígitos que indica as novas permissões para o arquivo.
Os três números indicam respectivamente:
7 : Permissões para o dono do arquivo4 : Permissões para o grupo4 : Permissões para os demais usuários

Você deve lembrar que temos três permissões: leitura, gravação e execução. Como é possível representar estes três atributos através de um único número?
Bem, os programadores costumam ser muito bons em matemática e, como em outros casos, usaram um pequeno truque para resolver este problema:
Cada permissão possui um número:
4 : Leitura2 : Gravação1 : Execução

Você simplesmente soma estes números para ter o número referente ao conjunto de permissões que deseja:
0 : Sem permissão alguma, se for uma pasta o usuário sequer pode ver o conteúdo1 : Só execução (não é possível ler o arquivo ou alterá-lo, apenas executar um programa)4 : Apenas leitura6 (4+2) : Leitura + gravação7 (4+2+1): Controle total: leitura + gravação + execução

Engenhoso não é? Se você quer dar controle total do arquivo ou pasta para o dono e para o grupo, mas permissão de apenas leitura para os demais usuários, usaria o número 774; se você quisesse que todos os usuários tivessem permissão de leitura e gravação, mas sem poder executar nada, usaria o número 666, se quisesse dar controle total para todo mundo usaria 777 e assim por diante. Como disse, parece um pouco complicado, mas depois de usar o comando algumas vezes você não vai esquecer mais.
Para alterar o dono e o grupo do arquivo você deve usar o comando chown. O uso dele é simples, basta indicar qual é o novo dono e em seguida indicar o arquivo ou pasta que mudará de dono, como em:

# chown morimoto apollo

Se você quiser que a alteração se aplique a todos os arquivos e subpastas do diretório, use a opção -R (de recursivo) como em:

# chown -R morimoto apollo

Se você quiser alterar também o nome do grupo, acrescente o nome do novo grupo após o nome do dono, separando ambos por um ponto:
# chown -R morimoto.apollo apollo

Agora a pasta "apollo" passa a ser propriedade do usuário morimoto e do grupo apollo. Fizemos a mesma coisa que no exemplo anterior, mas agora usando o comando de modo texto. Você escolhe qual forma prefere.
Além dos comandos que vimos, você também pode recorrer ao mc, encontrado na maioria das distribuições. Basta chama-lo no terminal. Além de ser um gerenciador de arquivos com muitos recursos, ele permite editar arquivos de texto, mover arquivos, alterar permissões, etc.

Criando Pastas no Linux

Na aula de GSO nessa terça, aprendemos um pouco sobre a criação e alteração de propriedades de pastas. Com isso, resolvi fazer uma postagem com esse assunto relacionado ao nosso tema, que é o Sistema Operacional Linux. Segue ai uma pequena introdução desse recurso no Linux:


O sistema Linux, quando se inicializa, assim como todo sistema operacional ele interage com o hardware do computador, preparando e deixando pronto para uso os recursos da máquina, para que você possa rodar seus programas. O Linux "puro" seria sem uma "interface gráfica", sem janelas de programas, por exemplo. 


Primeiro choque para quem está chegando agora é a estrutura de diretórios do Linux, que não lembra em nada o que temos no Windows. Basicamente, no Windows temos os arquivos do sistema concentrados nas pastas C:\Windows\ e C:\Arquivos de programas\ e você pode criar e organizar suas pastas da forma que quiser.

No Linux é basicamente o contrário. O diretório raiz está tomado pelas pastas do sistema e espera-se que você armazene seus arquivos pessoais dentro da sua pasta no diretório /home.

Mas, as diferenças não param por aí. Para onde vão os programas que são instalados se não existe uma pasta central como a arquivos de programas? E para onde vão os arquivos de configuração se o Linux não possui nada semelhante ao registro do Windows?

A 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 diretório raiz ou simplesmente "/".

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ê está vê quando abre o gerenciador de arquivos.

O diretório */bin* armazena os executáveis de alguns comandos básicos do sistema, como o su, tar, cat, rm, pwd, etc. Geralmente isto soma de 5 a 7 MB, pouca coisa. O grosso dos programas ficam instalados dentro do diretório */usr* (de "Unix System Resources"). Este é de longe o diretório com mais arquivos em qualquer distribuição Linux, pois é aqui que ficam os executáveis e bibliotecas de todos os principais programas. A pasta */usr/bin* (bin de binário) por exemplo armazena cerca de 2.000 programas e atalhos para programas numa instalação típica do Linux. Se você tiver que chutar em que pasta está o executável de um programa qualquer, o melhor chute seria justamente a pasta /usr/bin :-)

Outro diretório populado é o */usr/lib*, onde ficam armazenadas bibliotecas usadas pelos programas. A função destas bibliotecas lembra um pouco a dos arquivos .dll no Windows. As bibliotecas com extensão .a são bibliotecas estáticas, enquanto as terminadas em .so.versão (zzz.so.1, yyy.so.3, etc.) são bibliotecas compartilhadas, usadas por vários programas.

Subindo de novo, a pasta */boot* armazena (como era de se esperar) o Kernel ("coração" do sistema) e alguns arquivos usados pelo Lilo (o gerenciador de boot do sistema, caso você esteja utilizando o Lilo), que são carregados na fase inicial da inicialização do computadoer. Estes arquivos são pequenos, geralmente ocupam menos de 5 MB.

Logo abaixo temos o diretório /dev, que é de longe o exemplo mais exótico de estrutura de diretório no Linux. Todos os arquivos contidos aqui, como por exemplo /dev/hda, /dev/dsp, /dev/modem, etc. não são arquivos armazenados no HD, mas sim "links" para dispositivos de hardware. Por exemplo, todos os arquivos gravados no "arquivo" */dev/dsp* serão reproduzidos pela placa de som, enquanto o "arquivo" */dev/ttyS0* contém os dados enviados pelo mouse (ou outro dispositivo conectado na porta serial 1).

Esta organização visa facilitar a vida dos programadores, que podem acessar o hardware do micro simplesmente fazendo seus programas lerem e gravarem em arquivos. Não é preciso nenhum comando esdrúxulo para tocar um arquivo em Wav, basta "copiá-lo" para o arquivo */dev/dsp*, o resto do trabalho é feito pelo próprio sistema. O mesmo se aplica ao enviar um arquivo pela rede, ler as teclas do teclado ou os clicks do mouse e assim por diante.








quinta-feira, 31 de março de 2011

Encontramos no youtube um vídeo bem simples, sobre a história do unix que conta com um depoimento de Ken Thompson, um dos programadores que criou o Unix, vejam:

sábado, 26 de março de 2011

VANTAGENS:

            O Linux é sem dúvida a melhor opção de Unix para PC, pois possui todas as características de um UNIX moderno, tais como: multitarefa real, multiusuário, memória virtual, biblioteca compartilhada, interface gráfica (X Windows), entre outros. O Linux possui centenas de comandos embutidos, chamados utilitários e ferramentas, cada ferramenta é um programa distinto, destinado a fazer uma tarefa específica de forma rápida e eficaz. Como é um sistema aberto é extremamente flexível (o utilizador tem acesso ao fonte do sistema) é outro ponto positivo.
            Diversos grupos de estudo do Linux no mundo inteiro garantem actualizações do software praticamente mensais. Além disto, cada nova versão contem dispositivos periféricos que são lançados no mercado.
            O Linux tem um excelente mercado a nível académico, o que faz com que possa haver constantes melhoras no software, pois grande parte dos melhores professores/pesquisadores de sistemas operacionais colaboram para o seu desenvolvimento tecnológico.

DESVANTAGENS:

            O suporte técnico é um dos pontos fracos do sistema, é feito basicamente através da Internet. Além disto, a documentação do Linux é escassa, apesar de já haver muitas revistas do género e maioritariamente a informação vem de fontes na Internet.  
O número de aplicativos é limitado e não existe perspectiva de entrada de grandes companhias de software desenvolvendo aplicativos para Linux, sem aplicativos não há como um sistema se tornar popular no mundo dos PCs.
            O sistema de arquivos varia de uma distribuição para outra, tornado difícil a vida do administrador de sistema, que muitas vezes tem dificuldade de descobrir o que é essencial em cada subdirectoria, limpar, criar, preparar, verificar, encontrar e montar outros sistemas de arquivos (possivelmente em máquinas remotas), todas estas tarefas podem ser dificultadas se não encontrarmos os arquivos aonde esperamos.
            A administração e a operação de um modo geral é bem mais complexa em um ambiente Unix, inclusive o Linux, do que no ambiente DOS/Windows, o que dificulta sua popularização.

sexta-feira, 25 de março de 2011

Um pouco da história do UNIX

O projeto GNU (G is not Unix) é mais antigo (1983) que o Linux (que se refere ao Kernel desenvolvido por Linus Torvalds em 1989), a questão é que o GNU era praticamente um SO pronto, com interpretador de comandos e algumas aplicações, porém lhe faltava o Kernel (núcleo do sistema operacional), Richard Stallman soube da mensagem enviada por Linus nos tempos da Usenet e chegaram na conclusão que ambos estavam desenvolvendo um novo Sistema Operacional de código fonte aberto com basicamente o mesmo objetivo e filosofia, um possuia o Kernel pronto e outro possuia todo o sistema porém sem Kernel, em 1992 o Projeto GNU se juntou ao Linux e nascia então o GNU/Linux.

Algumas curiosidades históricas:

1) O Unix foi precedido por um sistema chamado Multics desenvolvido pela Bell Labs (AT&T), General Eletric e MIT, o Multics era um sistema monousuário e monotarefa e não conseguiu atingir seu propósito, ainda sim o último sistema rodando Multics só foi desativado em 30 de Agosto de 2000 exatamente as 17:08 UTC no Canadá.

2) Dois engenheiros da AT&T, Ken Thompson e Dennis Ritchie fanáticos por um jogo chamado Space Travel perderam acesso ao sistema e decidiram portar o jogo para um computador PDP-7 que estava parado, nascia um novo sistema operacional que a princípio foi chamado de Unics, o novo SO foi assim chamado pois ao contrário do Multics era multitarefa (time sharing) e multiusuário e Ken Thompson achou engraçado fazer essa alusão ao Multics, o mais interessante do Unics é que este foi idealizado para ser altamente "portável" e rodar em praticamente qualquer hardware existente, uma das premissas de sua criação era construir um SO de programador para programadores, mais tarde o Unics foi portado para uma máquina PDP-11, posteriormente o Unics foi escrito em linguagem C (linguagem também criada por Dennis Ritchie) e devido a essa particularidade finalmente o Unics se tornava realmente um sistema portável.

3) Não se sabe ao certo quando e porquê o Unics veio a ser chamado de Unix, algumas teorias dizem que foi por puro marketing, outros dizem que era uma limitação do sistema em usar um nome com 5 caracteres, a teoria mais plausível é a da própria Bell Labs que diz que o Unix assim como a Fenix ressurgiu das próprias cinzas graças ao esforço multiorganizacional de seus idealizadores em criar um sistema multitarefa seguro, esse trabalho em equipe e a filosofia em que o sistema foi concebido era algo inimaginável nos anos 60, desde então o Unics passou a ser chamado Unix herdando a letra "x" da "Fenix".

4) Richard Stallman decidiu criar um SO do tipo Unix gratuito pq muitos programadores que contribuíram para o aperfeiçoamento do Unix foram injustiçados quando a AT&T decidiu se apropriar do sistema que fora fruto do trabalho destes.

5) Ao contrário do que muitos pensam Linus Torvalds não escreveu o Linux Kernel do zero, reza a lenda que Linus ao ver seu tio sofrendo na pobre interface shell do DOS decidiu escrever um sistema operacional mais flexível e poderoso, que fosse multi-tarefa e lhe permitisse explorar mais o hardware disponível.Para isso ele usou como base o Kernel do Minix (SO tipo Unix escrito por Andrew Tannenbaum)

6) Assim como acontece no GNU/Linux o Unix também possui muitas variantes, o que dificulta um pouco o trabalho dos profissionais dessa área, conceitualmente as variantes Unix se diferem das variantes GNU/Linux pois as primeiras são adaptadas ao hardware específico de um fabricante, temos como exemplo o HP-UX da HP, o AIX da IBM, o Solaris da SUN (que possui também versão para plataforma x86), o Irix da Silicon Graphics, entre outros.

7) Aqui acho que vou assustar muita gente, muitos associam a Microsoft só ao Windows mas até ela já teve seu Unix que se chamava Xenix, posteriormente esse foi vendido para a SCO mas ainda sim serviu de base para o desenvolvimento do MS-DOS, aliás o MS-DOS embora conceitualmente seja muito diferente do Unix estruturalmente possui várias semelhanças, como redirecionamento de dispositivos de I/O, pipes "|", estruturas de arquivos e alguns comandos.


sexta-feira, 18 de março de 2011

UNIX

O Unix é um sistema operacional portátil, multitarefa e multiusuário.
O unix começou como um passatempo de um jovem pesquisador e tornou-se um empreendimento que gera bilhões de dólares envolvendo universidades, corporações multinacionais, agências governamentais, e entidades internacionais de padronização.
Nosanos 40 e 50, existia um problema da maneira que os computadores eram utilizados, ou seja, era preciso o usuário enviar ao centro de processamento de dados um job em cartões perfurados, para que estes fossem processados. 
Para tentar solucionar tal impasse, o sistema de compartilhamento de tempo foi inventado no Darmouth College e no M.I.T. Em pouco tempo, os pesquisadores do M.I.T se juntaram ao da General Electric e os do Bell Labse desenvolveram um sistema de segunda geração,esse não fez sucesso, pois ele foi escrito em PL/I - uma linguagem muito pesada, com compilador muito ineficiente.
Com esse fracasso, a equipe do Bell Labs fez com que um de seus pesquisadores, Ken Thompson , começasse a reescrever o Multics, em linguagem de máquina usando um PDP-7. A denominação veio a partir de outro pesquisador, Brian Kernighan, chamando o sistema de Unics.O trabalho de Thompson teve logo adesão de Dennis Ritchie. A partir daí, o unix saiu do PDP-7 para os então modernos PDP-11/20, logo depois PDP-11/45 e para o PDP-11/70, sendo que estas duas últimas máquinas dominaram o mercado durante toda a década de 70. Com estas evoluções, Thompson reescreveu o Unix na linguagem B e posteriormente Ritchie desenvolveu a linguagem C, e escreveu um compilador para ela.
Em 1974, Ritchie e Thompson publicaram um artigo sobre o Unix, que teve seu devido reconhecimento com o recebimento do Turing Award. Com isso muitas universidades começaram a solicitar ao Bell Labs cópias do Unix. Apesar do compilador C ser muito eficiente e rápido, ele só gerava código objeto para o PDP-11 além de considerar que todos os números inteiros eram de 16 bits, que todos os ponteiros eram de 16 bits também, e que a máquina possuia três registradores disponíveis para armazenamento temporário.
Uma das primeiras universidades a adquirir o Unix versão 6 foi a University of California at Berkeley, com o código fonte disponível. Sendo assim o pessoal de Berkeley, foi capaz de analisar e modificar o sistema, chegando a produzir o 1SBD.
Em 1983 é lançado o System V da AT&T e o 4.2 BSD. O SV incluía o pacote IPC (shm, msg, sem) para comunicação entre processos. 
Surgiram outras versões do SV com a inclusão de novas características como sharedlibs no SVR4.O 4.2BSD foi talvez uma das mais importantes versões do UNIX. O seu software de conexão de redes tornava muito fácil a tarefa de conectar computadores UNIX a redes locais. Nessa versão é que foram integrados os softwares que implementam TCP/IP e sockets.
Em 1988 foi lançado o SVR4. Este sistema era um merge de releazes anteriores do SV, BSD e SunOs, uma implementação decendente de BSD. 
O 4.4BSD foi lançado em 1992 para várias plataformas: HP 9000/300, Sparc, 386, DEC e outras, mas não em VAX. Entre as novas características estão: Novo sistema de memória virtual baseado em Mach 2.5 e Suporte ISO/OSI (baseado em ISODE)
A nova versão, SunOs 5.x está baseada no SVR4, embora tenha herdado algumas características do SunOs 4.x. O novo sistema operacional da Sun, Solaris 2.x, é um SO que engloba SunOs 5.x, Open Network Computing e Open Windows.