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.