segunda-feira, 11 de junho de 2012

Estrutura de diretórios no Linux

 Um dos primeiros grandes impactos de quem resolve aventurar-se no mundo Linux, é justamente a estrutura de diretórios (pastas, no Windows).
 Pra começarmos a entender, é essencial citar que o diretório raiz no linux, é representado por uma barra ( / ).
 A estrutura dos sistemas linux e unix, segue um padrão, denominado FHS (Filesystem Hierarchy Standard) - Padrão para sistema de arquivos hierárquico.
 Abaixo, segue a estrutura básica desta hierarquia, aqui listados em ordem alfabética:

/bin = Arquivos executáveis essenciais para o sistema.
/boot = Arquivos do gerenciador de inicialização, incluindo a imagem do kernel.
/dev = Arquivos usados para acessar dispositivos existentes na máquina.
/etc = Arquivos de configuração do computador.
/home = Diretório  que contém os arquivos dos usuários. Cada usuário recebe um subdiretório em /home. Ex.: Usuário Marcos ==> /home/marcos.
/lib = Bibliotecas compartilhadas do sistema.
/media = Ponto de montagem de dispositivos removíveis. (Pendrives, por exemplo).
/mnt = Ponto de montagem temporário.
/proc = Diretório que não existe "fisicamente" no disco. O Kernel aloca este diretório virtualmente, e nele são abrigados arquivos de informação do kernel e dos processos da máquina. Diversos programas acessam o /proc para obter informações importantes, como por exemplo, tipo de CPU instalada.
/root = Diretório "home" do super usuário root.
/sbin = Arquivos executáveis essenciais para administração do sistema.
/usr = Conhecido como hierarquia secundária. Contém dados compartilhados pelos usuários e seu acesso é geralmente "somente leitura".
/var = Arquivos variáveis, como logs.

Diretório lost+found:
Implementado a menos tempo no FHS, este diretório contém arquivos essenciais de recuperação de sistema, em caso de falhas no sistema de arquivos. Por isso, cada partição possui uma pasta "lost+found".

sexta-feira, 8 de junho de 2012

[EXTRA] O sudo

 O comando sudo é utilizado para que um usuário comum obtenha privilégios de outro usuário, em geral, do usuário root. Isto permita a execução de tarefas administrativas dentro de sistema, de maneira controlável pelo administrador. O nome sudo vem de "Substitute User DO - Fazer substituido usuário" ou "Super User DO - Fazer como super usuário".

 O arquivo de configuração das permissões do sudo é o /etc/sudoers, e apenas o root pode alterá-lo. Nele, está configurado quais usuários podem utilizar o sudo, em que máquinas podem fazê-lo e quais comandos podem executar através dele.

 Algumas distros desabilitam o super usuário (root) e exigem o uso do sudo para executar tarefas administrativas. Ex.: Ubuntu.

Os Terminais Virtuais

 Um terminal virtual (console) são o teclado e a tela conectados ao computador. É uma nova sessão, totalmente independente de outras.
 O GNU/Linux, por ser multi-usuário, permite o uso de vários terminais virtuais ao mesmo tempo conectados local ou remotamente.
 O linux suporta até 63 terminais, porém apenas 06 ficam disponíveis a principio, para economizar memória RAM.
 Os terminais são nomeados da seguinte forma no linux: ttyN (sendo N o número do terminal).

Alternando entre os terminais:
Por padrão, o linux utiliza o terminal tty7 para carregar o modo gráfico. Para trocarmos de terminal, basta segurarmos a tecla Alt + F* (onde * é o número do terminal desejado). Por exemplo: Alt+F2 alterna para terminal tty2. Se desejarmos voltar para o modo gráfico, basta teclarmos Alt+F7.

Os usuários no Linux

 O GNU/Linux é um S.O. multiusuário, o que significa que vários usuários podem conectar-se ao mesmo tempo.
 Existem 03 tipos de usuários no linux.

-Usuários comuns: São usuários que podem conectar-se normalmente ao sistema, porém sem privilégios de administração. Possuem, geralmente, um diretório base, onde ficarão armazenados seus arquivos: /home/nomedousuário. É como a pasta C:\Documents and Settings\Usuario do Windows.

-Usuários de sistema: São contas que pertencem exclusivamente ao sistema, que ás utiliza para diversas configurações e ações. Estas contam não se conectam e não possuem diretórios base.

-Usuário root (Super Usuário): É o usuário com plenos poderes administrativos no sistema. O root tem permissão de acesso e execução á todos os diretórios e programas, e é o único que pode executar algumas funções. Também é o responsável por atribuir ou negar permissões aos usuários comuns. Seu diretório base é o "/root".

No shell, os usuários comuns são diferenciados do usuário root pelo último carácter impresso na linha digitável antes do cursor.
Ex.: marcos@debian~$  (o "$" indica que "marcos" é um usuário comum do sistema).
        debian ~#               (o "#" indica que estamos logados como super usuário (root).

Podemos trocar de usuários no shell, através do comando su (switch user).

$ su - (Altera a sessão para o usuário root).
$ su - antonio (Altera a sessão para o usuário antonio).

DICA: Sempre crie senhas fortes para o usuário root, afim de proteger o sistema.




Introdução ao Shell

 Shell é o interpretador de comandos do linux. Uma boa analogia, seria o prompt do MS-DOS... Porém o shell é muito mais potente.
 Existem vários shells. No linux, o padrão é o bash. São exemplos de shell: csh, tcsh, zsh, ksh.
 O shell nada mais é do que um módulo que permite a interação entre o usuário e o S.O. através de comandos. Provê também uma linguagem simples de programação que permite a criação de pequenos programas, conhecidos como Shell Scripts (algo como os arquivos .bat do Windows).
Alguns comandos básicos no shell
DICA: As setas para cima e para baixo do teclado podem ser utilizadas para repetir comandos já digitados, porém no começo é aconselhável digitar os comandos para ir habituando-se á eles.

$ cd
Comando "Change Directory". Serve para abrir ou mudar de diretório (pasta).
Ex.: $ cd /home (abra a pasta home).

$ ls
Lista o conteúdo de um diretório.

$ pwd
Mostra na tela o diretório atual.

$ history
Lista dos últimos comandos digitados.

$ mkdir
Cria um novo diretório.

$ rmdir
Remove um diretório vazio.

$ du
Exibe o tamanho do diretório em disco.

$ rm
Apaga arquivos.

DICA: É possivel obter mais detalhes sobre os comandos através de seu manual. Para fazer isso, basta digitar o comando "man" seguido do comando do qual deseja obter detalhes.
Ex.: $ man ls


Estrutura do Linux

 O sistema operacional GNU/Linux, pode ser dividido em algumas camadas básicas:

1- Hardware: Dispositivos físicos disponiveis para uso.
2- Kernel Linux: O núcleo do sistema operacional. O kernel é a camada mais próxima do nível de hardware. Tem por função interagir diretamente com a parte física da máquina, interpretando as solicitações (comandos) das camadas acima de seu nível.
3- Sistema Operacional: Tem a função de abrigar os aplicativos das camadas superiores.
4- Terminais virtuais: No linux são nomeados como ttyN (sendo N o número do terminal). É onde são executados comandos por nós humanos e traduzidos para a linguagem de máquina.
5- Display Manager (DM): Gerencia os logins dos usuários e definem o ambiente gráfico á ser utilizado na sessão.
6- Desktop Environment: O Gerenciador de janelas. Tem a função de deixar o ambiente "usuárioXmáquina" mais intuitivo e agradável.

Distribuições Linux

 Desde quando Linus Torvalds liberou o kernel linux e o projeto GNU passou a utilizá-lo (ambos sob a GPL), têm surgido cada vez mais "versões" de S.O. utilizando o GNU/Linux como base. Estas "versões" são chamadas de distribuições, ou "distros".
  Exemplos são o Debian, o RedHat, o Ubuntu, o Mint... São centenas. Cada uma com uma filosofia diferente.
  Existem dois tipos de distribuições:

-From Scratch: Distribuições desenvolvidas do zero, utilizando-se apenas o kernel linux e alguns aplicativos GNU. Todo restante é desenvolvido de forma particular áquela distro.
Ex.: Slackware, Debian, Redhat...

-Provenientes: São distros que utilizam as ferramentas prontas das distros "from scratch", visando atingir seus objetivos mais rapidamente.
Ex.: Ubuntu, Fedora, Slax...

As distros estão distribuidas também em duas categorias:
-Corporativas, que são mantidas por empresas privadas, as quais vendem suporte ao seu sistema.
Ex.: RedHat, Suse, Mandriva.

-Livres, mantidas por comunidades de colaboradores ao redor do mundo.
Ex.: Ubuntu, Debian, Slackware...

O motivo de existirem tantas distros, é justamente a liberdade que a GPL fornece de poder adaptar o sistema livremente ás suas necessidades.

Licença GPL

 O Fundador da F.S.F. (Richard Stallman) criou a licença mais amplamente utilizada até hoje para uso de software livre, a GPL (General Public License).
 A GPL garante 04 liberdades básicas:
0- Liberdade de executar o programa para qualquer finalidade
1- Liberdade para estudar como o programa funciona e adaptá-lo ás suas necessidades.
2- Liberdade de redistribuir cópias com o intuito de ajudar ao próximo.
3- Liberdade de aperfeiçoar o programa e liberar seus aperfeiçoamentos para que toda a comunidade beneficie-se deles.

Á grosso modo, a GPL visa garantir que um programa possa ser utilizado, melhorado, modificado e redistribuído da forma que se fizer necessário, desde que mantenha-se a idéia de código aberto. É permitido á qualquer um modificar um software que esteja sob a GPL, porém não é permitido que este "tranque" o código, impedindo outros de visualizar, modificar e aprender com ele.

 Por este motivo, ainda existem limitações de software disponíveis para o GNU/Linux. Algumas empresas recusam-se a abrir o código-fonte de seus programas. Não existe, por exemplo, o Adobe Photoshop disponível para uso LIVRE no Linux. O mesmo acontece com alguns "device drivers".
 Porém, isso tem mudado! Hoje, quando instalamos o GNU/Linux em uma máquina, muito raramente nos deparamos com hardware não-suportado.

O que é Linux?

 Linux é um sistema operacional, baseado em UNIX.
 O termo "linux" na verdade, refere-se ao kernel, que é o núcleo do sistema operacional.
 Este kernel foi desenvolvido, a principio, pelo estudante Finlandês Linus Torvalds, em meados de 1991.
 Linus Torvalds criou o kernel linux baseado no sistema MINIX. Seu propósito inicial era desenvolver um sistema melhor que o próprio MINIX.
 No mesmo ano, Linus abriu o código-fonte de seu projeto, buscando desenvolvedores interessados em auxiliar no projeto.
 No inicio, era um sistema complexo, operado apenas através de linhas de comando. Era possível ser operado apenas por usuários avançados.
 Desde seus primórdios, a estabilidade do kernel linux tornou-o muito utilizado em servidores de grande porte, mainframes, etc...
 O Linux suporta diversos tipos de sistemas de arquivos, tornando-o compatível com a maioria dos outros S.O. (sistemas operacionais) existentes. Suporta dentre outros, os formatos FAT, NTFS, JFS. E possui formatos nativos: ext3, ext4, ReiserFS, entre outros.
 Paralelo ao desenvolvimento do kernel linux, por Torvalds, Richard Stallman avançava com o projeto GNU, com o propósito de desenvolver um S.O. livre! O projeto GNU já acumulava aplicativos prontos, porém, ainda sem um kernel estável. Assim, a FSF (Free Software Foundation) decidiu adotar o kernel de Torvalds como base para o projeto GNU. Diversas empresas também aderiram á idéia, e surgiram então as diversas "versões" do Linux, chamadas de distribuições.
 A união Linux(kernel) + GNU(projeto de Stallman) possibilitou a adoção de um sistema operacional completo, chamado GNU/Linux. Um sistema operacional pode ser definido como um kernel + conjunto de aplicativos que fornecem as mais diversas funções ao sistema (editores de texto, gerenciadores de janelas, aplicativos de escritório, etc.).
 Hoje, várias empresas disponibilizam ambientes gráficos e aplicativos cada vez mais amigáveis, e o linux vem se popularizando entre usuários comuns. São exemplos de ambientes gráficos: KDE, GNOME, UNITY, MATE...
 GNU/Linux está em constante evolução, e continua sendo amplamente utilizado em sistemas e servidores que exijam estabilidade e melhor gerenciamento de hardware.




Apresentação

Olá galera...
  Este blog tem o intuito de compartilhar conhecimentos em linux, e é EXCLUSIVAMENTE voltado para iniciantes no mundo GNU/Linux, assim como eu.
  Espero que curtam!