quinta-feira, 25 de julho de 2013

Teste para pagamento no mercado pago "Cabo adaptador"

Pagar



ou



Pagar

sexta-feira, 28 de junho de 2013

Guia sobre Linux: bash, comandos, permissões, rede, e outros.

DIRETÓRIOS
Para os que estão se iniciando no Linux, conhecer os diretórios pode ser um pouco difícil, as vezes por causa da sua estrutura peculiar (eu diria, mais organizada) ou por estarem migrando do ''outro''.
/ : raiz do sistema, o diretório que ''guarda'' todos os outros diretórios. É um ''c: da vida''. Uma dica é que ele não possua nenhum arquivo além dos diretórios/arquivos (defalt) do sistema.
/bin : arquivos/comandos utilizados durante a inicialização di sistema e por usuários (após a inicialização)
/boot: arquivos utilizados durante a inicicialização do sistema
/dev : drivers de controle de dispositivos
/etc : arquivos de configurações do computador
/etc/sysconfig : arquivos de configuração do sistema para os dispositivos.
/etc/passwd : dados dos usuários, senhas criptografadas...
/etc/fstab : sistemas de arquivos montados no sistema
/etc/group : grupos
/etc/include : header para programação em C
/etc/inittab : arquivo de configuração do init.
/home : pasta pessoal dos usuários comuns. Um ''Meus Documentos da vida''
/lib : bibliotecas compatilhadas
/lib/modules : modulos externos do kernel usados para inicializar o sistema...
/misc : arquivos variados
/mnt : ponto de montagem de sistemas de arquivos (CD, floppy, partições...)
/proc : sistema de arquivos virtual com dados sobre o sistema.
/root : diretório pessoal do root
/sbin : arquivos/comandos especiais (geralmente não são utilizados por usuários comuns)
/tmp: arquivos temporários
/usr : Unix System Resources. Contém arquivos de todos os programas para o uso dos usuários de sistemas UNIX.
/usr/bin : executáveis para todos os usuários
/usr/sbin : executávies de administração do sistema
/usr/lib : bibliotecas dos executávies encontrados no /usr/bin
/usr/local : arquivos de programas instalados localmente
/usr/man : manuais
/usr/info : informações
/usr/X11R6 : Arquivos do X Window System e seus aplicativos.
/var : Contém arquivos que são modificados enquanto o sistema está rodando não é compartilhado em rede por ser específico de cada sistema, estando em constantes modificações.
/var/lib : bibliotecas
/var/local : arquivos variáveis de processos que estão rodando.
/var/log : arquivos de log do sistema
/var/run : arquivos úteis até o próximo boot (atualizações de softwares e kernel)
/var/tmp : arquivos temporários dos programas
O PATH
Para visualizar o path (caminho de procura de arquivos e comandos executáveis), usa-se o comando % echo $PATH. Todos os comandos executáveis serão executados ''se e somente se'' estiverem armazenados na variável path. O comando que está no PATH é executado apartir de qualquer diretório (não importa se o usuário está no home ou no mnt ou qualquer outro). Para inserir um arquivo no path usa-se ''./'' (Ex: ./arquivo ).
Para inserir o caminho para todos os usuários do sistema edite o earquivo /etc/profile ou /etc/bashrc.
Para alterar caminhos de um único usuário, edita-se o arquivo .bash_profile do diretório /home/ ou $HOME/.bashrc
Para adicionar caminhos novos ao ''caminho existente'' use e precione , vá até o fim da linha e adicione o novo caminho. Confira utilizando o comando % env.
Para adicionar novos comando com o alias faça:
% alias cdon = ''mount /dev/cdrom /mnt/cdrom'' o comando %cdon (recém criado) será adicionado ao path e utilizará o script de montagem do CD-ROM.
ATALHOS DO BASH
Ctrl + Alt + BackSpace : reinicia o X
Ctrl + Alt + Del : reinicia o sistema em modo texto
Ctrl + Alt + F''x'' : muda o shell (F1 – F6 (texto), F7 (gráfico))
Alt + F''x'' : alterna o shell (modo texto)
Alt + B : move o cursor do console para a palavra anterior
Alt + F : move o cursor do console para a palavra seguinte
Ctrl + A : vai para o início da linha
Ctrl + E : vai para o fim da linha
Ctrl + C : pára o comando
Ctrl + D : logout
Ctrl + W : apaga do cursor até o início da palavra
Ctrl + U : apaga do cursor até o início da linha
Ctrl + K : apaga do cursor até o fim da linha
Ctrl + L : clear
Ctrl + R : busca incremental no hitórico de comandos
Ctrl + T : inverte caractere sob o cursor com o anterior
Ctrl + Y : re-inserir o último texto apagado
Ctrl + Z: colocar processo em background
Shift + Page(UP/DOWN) : navega pelo shell
!''x'': repete o último comando (onde ''x'' é o comando a ser chamado – Exemplo: !mount)
TAB : autocompletar
COMANDOS DE INICIALIZAÇÃO
shutdown :Sintaxe: shutdown [atributo] [tempo]
Atributos: -r : reboot
-h : halt
-n : force (sem sincronizar)
-f : reboot rápido
-c : cancela shutdown corrente
-k : somente simula um shutdown
Tempo: now : executar no exato momento
Exemplo: Shutdown -r now
poweroff : halt
init 0 : halt
init 3: derruba o modo gráfico
init 5: iniciar o modo gráfico
init 6 : reboot
init q: examinar o arquivo /etc/inittab
init s: entrar em modo mono usuário (single mode)
exit: termina sessão atual
logout : termina sessão atual
COMANDOS DE SISTEMA
dmsg | less : mostrar lista de inicialização
arch : mostra a arquitetura do computador
uname : informações de sistema
Parâmetros: -m : hardware
-n : nome da máquina na rede
-r : versão do kernel
-s : nome do OS
-v : data de compilação do OS
-a : todas as acima...
uptime : mostra o tempo em que a máquina está no ar
free : mostra o uso da memória
vmstat : Mostra as estatísticas da memória virtual
ps -aux | grep tty : lista terminais em uso
tty : mostra em qual terminal o usuário atual está
stty : exibir ou escolher parâmetos do terminal
tset : escolher tipo de terminal
fgconsole : exibe o nº de terminais válidos
cu : chama outro sistema unix
type : informa o que faz um certo comando. Exemplo: type mount
time : mede o tempo gasto para executar um comando
cal : calendário
date: data e hora
who : mostra quem está na máqina no momento
whoami : mostra quem é você
last : informa a entrada e saída de usuários no sistema
lastlog : informa o último usuário que logou no sistema
at : agendar tarefas. Sintaxe : at [hora][data][comando]
crontab : programa tarefas.
Sintaxe: crontab [-parâmetros][usário][arquivo]
Parâmetros: -l : exibe crontab do usuário atual
-r : remove crontab do usuário atual
edita-se o arquivo /usr/spool/cron/crontab . São 6 campos separados por sendo que:
1º é o minuto
2º é o hora
3º é o dia do mês
4º é o mês
5º é o dia da semana (que começa com 0 = domingo)
6º é a tarefa ou script a ser executado
lspci : lista os dispositivos PCI
setserial : informações sobre as portas seriais
COMANDOS PARA REDES
ifconfig : configura a interface de rede
netconf : Interface gráfica do RedHat para confiurar a rede
netconfig : Outra interface gráfica para a configuração da rede
hostname : nome da máquina
netstat : Mostra informações sobre as conexões à rede
domainname: Mostra ou ajusta o nome de domínio do sistema
route : Mostra e manipula a tabela de roteamento
showmount : Mostra informações de sistemas NFS montados sobre a rede
nmap: capta informações em conexões remotas, como o sistema operacional usado, portas abertas...
Sintaxe: nmap -O 200.0.0.5
tracerout : mostra o caminho percorrido do pc até um ''tal'' servidor da internet
ping : informações de conexão
Parâmetros: -r : avisa se o pacote não chegar ao destino
-c''N'' : onde ''N'' é o nº de pings a serem executados
-s : determina o tamanho dos pacotes enviados, por defalt é 56bytes
rusers : mostra quem está usando as máquinas na rede
ruptime : informações sobre máquinas da rede local
Parâmetros : -a: usuários inativos a mais de uma hora
-l : ordena saída de informações de cada host
-r : inverte ordem de saída de informações
-t : (uptime)
-u: ordena saída por nº de usuários
rup: semalhante ao uptime, porém para outra máquina na rede. Sintaxe: rup
rwho : mostra o que está ''sendo feito'' nos computadores da rede local (semelhante ao ruptime)
mail : rebe ou envia e-mail
smbclient : Cliente para redes SAMBA.
smbmount : Monta um sistema de arquivos SAMBA (Windows)
COMANDOS DE AJUDA
man: manual de ajuda. Exemplo : man mount
xman : man em modo gráfico
info : como o man, porém com links nos textos
makewhatis : levanta banco de dados para o comando apropos
apropos:levanta respostas de comandos desconhecidos, antes deve-se executar makewhatis. Exemplo :
% apropos compiler (serão localizados arquivos que contenham a descrissão de compiler).
help: ajuda do shell atual
COMANDOS PARA MANIPULAÇÃO DE DIRETÓRIOS
cd : entra no diretório
Atributos: - : volta ao último diretório buscado
~ [nomedapastadousuario] : vai para a pasta do usuário
/ : diretório raiz
.. : diretório ''acima''
ls : lista arquivos e diretórios
Atributos : -C : exibe em colunas
-R : modo recursivo
-a : mostra ocultos
-l : mostra propriedades
mkdir : cria um diretório
rmdir : remove um diretório (atributo : -R para deletar diretórios não vazios)
pwd : mostra o diretório atual
cp : copia diretórios
Atributos: -f : não perguta para sobrescrever
-i : pergunta para sobrescrever
-r : cópia recursiva
mv : movimenta diretórios (mesmos atributos do cp)
du : mostra hierarquia
Atributos: -a : informações de todos os arquivos
-b : mostra em bytes
-k : mostra em kbytes
-s : lista o total de cada argumento
-x : ignora diretórios com sistemas de arquivos diferentes
-S : apresenta o tamanho de cada diretório separadamente
diff : exibe diferenças entre 2 arquivos ou diretórios
diff3 : exibe diferenças entre 3 arquivos ou diretórios
ln : link simbólico para arquivos e/ou pastas. Exemplo: ln linux-2.6 kernel-atual
COMANDOS PARA MANIPULAÇÃO DE ARQUIVOS
bash : executa o bash
basename :exclui o sulfixo do arquivo
fsbrowser : encontra arquivos ou diretórios no pc
head : lista a primeira parte dos arquivos
tail : o contrário do head
cat : exibe conteúdo do arquivo ou direciona-o para outro
Exemplos: cat /home/fulano/contato (exibe o conteúdo do arquivo contato)
cat contato1 > contato2 (faz uma cópia do arquivo contato)
cat contato1 >> contato2 (adiciona um arquivo ao outro)
cat musica.wav > /dev/dsp1 (direciona o som para o dispositivo de audio)
cat arquivo1 arquivo 2 | gzip > arquivo1e2.gz (compacta arquivo1 e arquivo2 num só arquivo)
tac : inverso do cat
file : identifica o tipo de arquivo
find : localiza arquivo ou diretório.
Sintaxe: find [opções] [dados] [opções]
Opções: -name: parâmetro seguido do arquivo a ser procurado
-print : mostrar resultado na tela
-exec ''comando'' : executa um comando
-ok : idem a exec, porém pergunta antes de executar o comando
awk : procura por um modelo apartir de um arquivo
bdiff : compara 2 arquivos grandes
bfs: procura um arquivo grande
diff : exibe diferenças entre 2 arquivos ou diretórios
uniq : compara 2 arquivos, exibe as linhas incomparáveis do arquivo
diff3: exibe diferenças entre 3 arquivos ou diretórios
cmp : compara 2 arquivos, mostra a localização da primeira diferença entre eles
comm: compara 2 arquivos para determina quais linhas são comuns entre eles
split : dividir um arquivo
more e less : filtros depaginação
Exemplos : more /etc/fstab
ps -aux | less
ls : lista arquivos do diretório
Atributos : -C : exibe em colunas
-R : modo recursivo-a : mostra ocultos
-l : mostra propriedades
cp : copia arquivos
Atributos: -f : não perguta para sobrescrever
-i : pergunta para sobrescrever
-r : cópia recursiva
mv : movimenta arquivos (mesmos atributos do cp)
rm : remove um arquivo
wc: (não cacete! não é banheiro não!) esse aí lista as propriedades dos arquivos
Atributos : -l : nº de linhas do arquivo
-c : n de cracteres
-w : nº de palavras
-b : nº de bytes
grep : uma espécie de busca. Exemplo: % grep tty
od : mostra o arquivo em formato octal
ln : link simbólico para arquivos e/ou pastas. Exemplo: ln linux-2.6 kernel-atual
COMANDOS PARA COMPACTAR
Sem descrissões... todos fazem a mesma coisa, só que em formatos diferentes, dependendo da ocasião um pode ser melhor que o outro... depende do ''gosto'' de cada um...
compress/ uncompress : compacta / descompacta em .z
Sintaxe : idem a bzip2
Atributos: -f : compacta em background
-c : desmpacta na tela
-V : informações sobre o arquivo
-v : informações sobre a compactação corrente
-d: junto dom o compress, descompacta o arquivo
tar : Atributos: -t : lista conteúdo do arquivo tar
-x : extrai arquivos
-c : cria um arquivo tar
-d : compara um arquivo tar com arquivos atuais
-r : anexa arquivos no fim do arquivo tar
-u : analiza arquivos
-A : anexa outros tar
-v : mostra informações de processamento
Exemplos: tar cvM -L 1350 -f /mnt/floopy/partes.tgz grande.tgz : quebra um arquivo grande em
partes menores.
tar pvfx arquivo.tar: extrai tar
tar zpvfx : extrai tar.gz ou tgz
tar jpvfx : extrai tar.bz2
gzip : compacta arquivos e nomes de arquivos com mais de 14 letrras
Atributos: -d : descompacta
-f : compacta
-l : informações sobre arquivo compactado
-r : recursivo
gunzip : descompacta
Exemplo: gzip -c arquivo1 > arquivo1e2.gz ; gzip -c arquivo2 > arquivo1e2.gz ou
cat arquivo1 arquivo 2 | gzip > arquivo1e2.gz
(compacta arquivo1 e arquivo2 num só arquivo)
bzip / bunzip: compacta / descompacta
bzcat : descompacta na tela do sistema
bzip2recover : recupera arquivos danificados quando for possível
Atributos : -1 : (1, 2,3...9) sendo que 9 é o maior fator de compactação
-v : informações de processamento
-c : descompacta na tela do sistema
-d : descompacta
-t : verifica integridade do arqivo
-f : sobrescreve
-s : reduz us da memória exigida
cpio: executa funções equivalentes a arquivos de dados em formato cpio ou tar, e contém informações sobre o arquivo. Seus modos de arquivamento são entrada, saída e passagem.
Modo de entrada: extrai arquivos de um arquivo maior, caso não for inserido um padrão, todos são extraídos.
Modo de saída: copia os arquivos em um arquivo maior
Modo de passagem : combina os modos de entrada e saída sem usar modo de arquivamento, copia
uma árvore de diretórios para outra
Parâmetros: -0 : (saída / passagem) lê arquivo terminado em caractere nulo; ao invéz de nova linha
-A : (saída) adiciona um arquivo existente; deve estar especificado -0 ou -F
-d : cria diretório (se for preciso)
-H : indica o formato do arquivo maior
-i : (entrada) extrai
-o : (saída) cria
-t : (entrada) lista tabela
-u :sobrescreve sem perguntar
-v : lista arquivos processados
USUÁRIOS E GRUPOS
useradd : adiciona usuário
userdel : exclui usuário
username : exibe nome do usuário logado no momento
users : exibe os usuários logados no momento
usermod : Modifica um usuário.
id : identificação do usuário e grupos a que pertence
passwd : adiciona senha em usuário já cadastrado. Exemplo: % passwd fulano
chpasswd : muda senha de usuário
groupadd : cria grupo
groupdel : exclui grupo
groups : lista grupos
groupmod : Modifica um grupo
newgrp : altera identificação do grupo
chgroup : altera propriedade do grupo
chown : altera usuário/propriedade do grupo de cada arquivo especificado. Ex: % chown -R root /home
sg : executa comando como se fosse de outro grupo
su : usado para ganhar permissão de root.
wall : Manda uma mensagem para todos no terminal.
PERMISSÕES
Primeiramente precio dar umas breves explicações sobre permissões, dono, grupo e coisarada de esquemas... Vou mostrar permissões no modo ''literal'' e no modo ''octal'', que são mais fáceis e mais usadas, porém pode ser feito com aplicativos, cliques no botão direito e coisarada, se a distro tiver tal recurso. Para todos os modos usa-se o comando:
% chmod [opções] [permissão] [diretório]
Atributos: -v : mostra arquivos processados
-f : não mostra mensagens de erro
-c : mostra somente arquivos com permissão
-R : recursivo
Dono: é o usuário que criou o arquivo
Grupo: é um recurso para que vários usuários tenham como ''usar'' um mesmo arquivo
Outros : não são donos e nem pertencem ao grupo do arquivo
ESQUEMA USADO NO % ls -l
r : permite leitura
w : permite edição/gravação
x : permite executar arquivos executáveis. Se for um dietório, pode ser acessado pelo comando % cd
Se houver 1 ''d'', indica que é um diretório; se houver um ''-'' indica um arquivo
Exemplo: -rw------- (somente o dono pode ler e gravar no arquivo)
MODO LITERAL :
Esse é o modo em que o sistemas nos mostra as permissões num % ls -l, mas esse é o mais ''chatinho'' pois é feito linha por linha.
[a]LL : todos
[g]roup : grupo
[o]thers : outros
[u]ser : dono
[+] : adiciona permissão
[-] : remove permissão
Com o comando % chmod ficaria assim:
% chmod a -rx /mnt (retira a permissão de leitura e execussão para todos no diretório /mnt)
% chmod o +r /mnt (da permissão para ''outros'', no caso os que não pertencem ao grupo do dono)
MODO OCTAL :
É o jeito mais fácil e rápido de ''adminitrar'' permissões, pois usa números de 0 a 7 para dar permissões para dono, grupo e outros numa única linha de comando. É uma verdadeira economia de tempo e paciência... :-)
Depois do % chmod usa-se 3 dígitos (que como já disse, variam de 0 a 7). O 1º indica a permissão do dono do arquivo, o 2º indica o grupo do dono e o 3º indica os outros usuários...
DÍGITO PERMISSÃO (UGOA)
0 Nenhuma ---
1 Executar --x
2 Escrever -w-
3 Escrever/Executar -wx
4 Ler r--
5 Ler/Executar r-x
6 Ler/Escrever rw-
7 Ler/Escrever/Executar rwx
Exemplo: % chmod -R 750 /mnt (Dono: pode Ler, Escrever e Executar; Grupo: pode Ler e Executar, e os outros não podem nada) para o diretório /mnt e todos os seus subdiretórios.
COMANDOS PARA MANIPULAR IMPRESSÃO
lpq : mostra trabalhos de impressão atual
lpr : copia um arquivo para a linha da impressora
lprm : remove trabalhos de impressora
lpstat: informações
Atributos: -a : lista relatórios enviados para a impressora
-p : lista o estado das impressoras
-s : sumário do estado das impressoras
-R : mostra o nº de cada jobna fila de impressão
COMANDOS PARA MANIPULAR PROCESSOS
ps -aux | less: mostra o PID dos processos
top : mostra todos os processos ativos no pc. (em modo grafico usa-se ktop (do kde) gtop (do gnome)...)
kill: mata um processo pelo PID. Sintaxe: kill [PID]
killall : mata processospelo nome. Sintaxe: killall -HUP [nome]
sleep : torna um processo inativo por determinado tempo
nice : prioridade de execussão (-19 é o máximo e 19 é o mínimo). Sinaxe: nice [opções][comando]
& : quando colocado no fim da linha, executa o processo em 2º plano (ou background se preferir)
jobs : exibe processos em 2º plano
bg : ao rodar um processo tecle Ctrl + Z para congelar o processo, depois digite bg para o programa voltara ''rodar'' em 2º plano.
fg: para fazer o processo voltar ao 1º plano. Sintaxe: fg [nº do processo]
nohup : logout sem matar processos no 2º plano. Exemplo: nohup cc program C & ; logout
COMANDOS DE MANIPULAÇÃO DE MÍDIAS
cfdisk : particionador
mke2fs : formata o hd. Exemplo: mke2fs -j /dev/hda1 (formata a primeira partição do hd primário em ext3)
dosfsck : Verifica e repara sistemas FAT do DOS
dumpe2fs : Faz o backup de blocos do HD e grupos.
e2fsck : Verifica um volume ext2 em busca de erros.
E2label : Muda o nome de uma partição ext2.
dump : Usado para fazer o backup de um sistema ext2. O complemento deste comando é o restore
restore : Usado para restaurar um sistema ext2.
badblock: busca por setores ruins
fsck: faz reparos na partição
df : mostra espaço usado, livre e a capacidade das partições do HD
mount : monta dispositivo. Exemplo: mount -vfat /dev/hda1
umount : desmonta dispositivo. Exemplo: unmount /mnt/cdrom
supermount : monta dispositivos automaticamente. Sintaxe: supermount [opções] [/local/do/dispositivo]
mformat : formatação de baixo níveis em disquetes no formato M$-DOS
fdformat : formatação de baixo níveis em disquetes. Exemplo: fdformat /dev/fd0 H1440
GRAVANDO CDs
Aqui eu vou falar de gravação pelo console mesmo... linhas de comando... as vezes até acaba sendo mais fácil... Ah! Essas aí foram inteiramente retiradas de um e-mail que recebi da Dicas-L :-)
Cds de Áudio:
% cdrecord dev=0,0,0 -pad -dao -v -eject -audio track01.wav...trackN.wav
-eject : ejeta no final
-dao : para não ficar com muito espaço entre as faixas
-pad : enche (se necessário) os arquivos com o número correto de espaços (para o aparelho de som ler em múltiplos de 2352 bytes)
Convertendo mp3 para cdr:
mpg123 –cdr – track1.mp3 > track1.cdr
grave usando -audio para indicar cada trilha
nice -19 cdrecord -eject -v speed=8 dev=1,1,0 -audio track1.cdr
track2.cdr...
Decodificar mp3 direto no CD:
for | in*.mp3
do
mpg123 –cdr - ''$|'' | cdrecord -dummy – audio -pad -nofix -
done
cdrecord -fix
Parâmetro: -dummy : Simulação
Criando ..iso:
mkhybrid -r -j -o imagem.iso diretório_dos_arqivos
Testando o .iso antes de gravar
mount -t iso9660 -o loop imagem.iso /mnt/iso
Fazendo uma cópia fiel de cd pra cd:
cdrecord -v speed=8 dev=1,1,0 -isosize /dev/cdrom
Fazendo CD de Boot:
Crie a imagem apartir de um disquete de boot
dd if=/dev/fd0 of=boot.img bs=18k
Apagando CD-RW
Para sobrescrever um CD-RW use o parâmetro blank=fast no cdrecord
CD-ROM de audio e dados:
cdrecord -v speed=8 dev=1,1,0 -data imagem.iso -audio track1.cdr
track2.cdr
EMULADORES*
* os ''comandos'' citados nesse tópico necessitam do aplicativo instalado (as vezes vem com a própria distro... dá uma ''baga no pc pra ve se tem... heheh)
* o Wine não se ''considera'' emulador como seu nome diz (Wine Is Not Emulator), mas... acho que aqui é melhor pra falar desse treco.
* Leia (!) os arquivos de ajuda de cada ferramenta asseguir citadas, isso impede que a ''pecinha'' (que tá olhando pro pc) cometa algum erro e venha com a mensagem : - ''Ai meu Deus, não funciona... Ahhhhhh''
WINE : esse daí emula o rWindows. Pode emular programas que ESTÃO numa partição com Windows ou num pc SÓ com linux (basta configurar... não vou dar muitos detalhes porque é meio que MUITA COISA). Depois de configurado certinho é só dá um % wine calc (pra abrir a calculadora do rWindows... Tá, foi um exemplo ''meio'' inútil, mas foi só exemplo). Dra pra rodar até jogos...
DOSEMU : emulador de programas para M$-DOS... Sintaxe: % dos (ou xdos no modo gráfico)
MTOOLS : emula comandos do M$-DOS (pra que diabos alguém ia querer isso? Sei lá) usa-se ''m'' antes do comando. Exemplo: mtools , mdir, mdel ...
USANDO O RPM
RPM é um pacote (normalmente pré-compilado para cada distro) de fácil instalação. Com uma só linha de comando ou cliques no rato são suficientes para instalar e não se incomodar com compilações e coisarada...
Sintaxe : rpm [parâmetros][opções][pacote.rpm]
Parâmetros : -i : instala
-e : desinstala
-q : consulta
-v : verbose
-h: exibe ''#'' como porcentagem a medida que o pacote se instala
showrc : exibe
checksig : verifica assinatura
setugids [especificações do pacote] : ajusta UID
etperms [especificações do pacote] : ajusta permissões
+ : após de um parâmetro, indica que pode haver repetição
Mas não é só isso minha gente!!! (aeeeeeeeeee!!!). Tá aí algumas receitas de bolo (mas não deixe dar usar um % man pra REALMETE aprender os segredos milenares – mas nem tanto – desse desse comando).
Obtendo instalações de pacotes instalados:
% rpm -qa | sort | less : lista em ordem alfabética os pacotes instalados
% rpm -qa | wc -1 : mostra a quantidade de pacotes instalados
% rpm -qf /usr/bin/nomedopacote.rpm : mostra os pacotes pertencentes ao arquivo
% rpm -qa | grep gimp: lista todos os arquivos que correspondem ao gimp
Para pacotes não instalados:
% rpm -qip /.../.../pacote.rpm : informações do pacote
% rpm -qdp /.../.../pacote.rpm : encontra documentação
% rpm -qp /.../.../pacote.rpm : mostra como será o nome do pacote
% rpm -qlp /.../.../pacote.rpm : lista os arquivos do pacote
% rpm -qcp /.../.../pacote.rpm : lista arquivos de configuração dos pacotes
% rpm -q –whatrequires /.../.../pacote.rpm : mostra o requerimentos
Desinstalação depacotes:
% rpm – e [opções] pacote.rpm
Opções: --allmatches : remove todas as versões do pacote
--noscripts : não executa scripts de pré/pós instalação
--nodeps : verifica se as dependências serão quebradas
--test : somente simula a desinstalação
Instalação/Atualização de pacotes:
% rpm -ivh [opções] pacote.rpm : instala
% rpm -Uvh [opções] pacote.rpm : atualiza
Opções: --force : sobrescreve
--noscripts : não executa scripts de pré/pós instalação
--nodeps : verifica se as dependências serão quebradas
--excludedocs : não instala arquivos de texto
--test : somente simula a desinstalação
--percent : exibe porcentagem
--oldpkage : atualiza para versão anterior
--replacepkgs : substitui arquivos instalados
--allfiles : instala atualiza pacotes faltantes
% whereis : mostra a localização dos binários do pacote instalado
% rpm -ivh /.../.../gimp-* : instala todos os pacotes do gimp simultaneamente
Instalação por FTP:
% ftp://:@host /.../.../arquivo.rpm
Opções: --ftpproxy : a ''máquina'' do host citado será o servidor proxy para tranferências
--ftpport: Especifica uma porta TCP ao invéz de FTP (porta 21). É cara, troca o xxx pelo número da porta.

Fonte: http://www.linuxbsd.com.br

quinta-feira, 23 de maio de 2013

A história do Linux


Introdução

Quando Linus Torvalds criou o Linux, certamente não sabia da importância que este projeto teria para os mais variados aspectos da computação. Graças à sua iniciativa, o Linux está presente em centenas de milhares de servidores, computadores pessoais e dispositivos portáteis em todo o mundo. Mas, como isso aconteceu? Por que Torvalds criou o Linux? Por qual motivo este projeto teve uma aceitação tão grande? Efetivamente, o que é Linux? Para obter as respostas para estas e outras questões relacionadas, nada melhor do que conhecer a história do Linux. É isso que o InfoWester apresenta a seguir.

O que é Linux?

Para muita gente, o Linux é meramente um sistema operacional. Esta definição não está errada, mas também não está completa. Na verdade, o Linux é parte de um todo, mais precisamente, é um kernel de código-fonte* aberto, que foi - e é desenvolvido - ao longo do tempo graças à colaboração voluntária de desenvolvedores de várias partes do mundo.
* Em poucas palavras, código-fonte é um conjunto de instruções baseado em uma linguagem de programação que, depois de compilado ou interpretado, forma um software. Tendo acesso ao código-fonte, é possível saber como determinado programa ou recurso de software foi desenvolvido.

O que é kernel?

Kernel  pode ser entendido como o núcleo do sistema operacional, isto é, como a parte essencial deste. Cabe ao kernel fazer o intermédio entre o hardware e os programas executados pelo computador. Isso significa que a junção do kernel mais os softwares que tornam o computador usável (drivers, protocolos de comunicação, entre outros), de acordo com a sua aplicação, é que formam o sistema operacional em si.
Para compreender melhor, você pode imaginar o kernel como sendo o chassi de um veículo. De acordo com a aplicação em questão, uma montadora pode adquirir um chassi e utilizá-lo para montar um carro para transportar cargas ou, se a necessidade for esta, para construir um automóvel de passeio para uma família.
Perceba que o kernel não é, necessariamente, um software manipulável pelo usuário. Ou seja, não se trata de algo tão simples a ponto de poder ser instalado e, logo em seguida, estar pronto para uso, como um programa de edição de textos, por exemplo. O kernel é uma base complexa, que serve de estrutura para o sistema, atuando nos "bastidores". Assim, o usuário sequer precisa saber de sua existência para poder utilizar o computador.

Então, o Linux é um kernel?

Exatamente! Quando procuramos um programa que possui versões para vários sistemas operacionais - como o navegador Mozilla Firefox  -, nos deparamos com vários links: um que aponta para a versão Windows, outra que direciona para a versão Mac OS X, outra para Linux e assim por diante. Perceba que, em situações como esta, o nome Linux não é empregado incorretamente. Por outro lado, achar que o Linux é todo o conjunto de software, incluindo aplicativos, interfaces gráficas e outros, é uma visão bastante limitada.
Mas, para entender melhor o que é Linux e o que ele representa, é conveniente conhecer a sua história.

A história do Linux

A história do Linux começa no ano de 1991, pelas mãos de um estudante universitário finlandês chamado Linus Torvalds. O Linux foi criado por ele, não totalmente do "zero", mas sim como uma variação do MINIX.
Linus Torvalds - Imagem por Wikipedia
Linus Torvalds - Imagem por Wikipedia
O MINIX é um sistema operacional simples, criado por Andrew S. Tanenbaum, um renomado professor de computação que é conhecido pelos diversos livros que escreveu para a área.
Tanenbaum disponibilizou o MINIX principalmente para servir de auxílio no ensino de computação. Trata-se de um sistema operacional simples, que exige poucos recursos de hardware e cuja primeira versão foi lançada em 1987.
Dadas as suas finalidades acadêmicas, não só o MINIX foi disponibilizado de maneira gratuita e livre, como também o seu código-fonte completo. Assim, os estudantes de computação podiam - e podem - estudá-lo inteiramente para desenvolver suas habilidades ou mesmo para criar projetos derivados. Foi assim que Linus Torvalds entrou nesta história.

A relação do Linux - e do MINIX - com o UNIX

O MINIX também não foi escrito do "zero". Trata-se, na verdade, de um projeto baseado em um sistema operacional que tem grande participação na história da computação: o UNIX.
O surgimento do UNIX se deu em 1969, como um projeto da Bell Labs, laboratório pertencente à AT&T. Mas somente em meados da década seguinte tornou-se um sistema efetivamente disponível no meio acadêmico, o que permitiu a sua evolução e o surgimento de variações.
O UNIX, na verdade, começou em meados dos anos 1960 como um projeto a ser desenvolvido por um grupo de habilidosos programadores, entre eles, Ken Thompson e Dennis Ritchie: um sistema operacional de nome Multics.
O Multics era um projeto ambicioso, mas enfrentou vários problemas, entre eles, falta de recursos computacionais. Assim, no mesmo ano, Ken Thompson decidiu criar algo mais "realista", chamando o novo projeto de Unics. Tempos depois, o nome foi mudado para UNIX, denominação que permanece até hoje.
Apesar de haver outros programadores envolvidos com a criação do UNIX, Ken Thompson e Dennis Ritchie são os nomes mais lembrados porque ambos, em 1973, praticamente reescreveram o UNIX a partir da linguagem C.
C é uma criação de Dennis Ritchie, daí o seu comprometimento com o trabalho envolvendo a linguagem e o UNIX. Por causa de seus recursos, a linguagem passou a ser utilizada em vários outros projetos mais complexos, inclusive no desenvolvimento de outros sistemas operacionais, fazendo com que o seu criador fosse reconhecido mundialmente como um dos grandes nomes da computação (infelizmente, Dennis Ritchie faleceu eum outubro de 2011).
O UNIX teve grande aceitação não somente em universidades, mas também em ambientes corporativos, resultando no surgimento de variações diversas do sistema, como as versões BSD e o Solaris. O MINIX, assim como o Linux, é  uma delas, o que não quer dizer que ambos sejam iguais ao UNIX, mas notoriamente parecidos.

O surgimento do Linux

Linus Torvalds, então com quase 20 anos, começou a estudar ciência da computação na Universidade de Helsinki, na Finlândia, em 1988. Cerca de dois anos depois, aproveitando o conhecimento que tinha e estava adquirindo sobre a linguagem C, decidiu criar a sua própria implementação de um terminal em seu recém obtido computador 80386, principalmente para acessar o servidor UNIX da instituição de ensino. Isso porque ele já havia testado o MINIX para esta finalidade, mas não estava satisfeito com os seus recursos.
A intenção de Torvalds era a de fazer com que o projeto rodasse especificamente em sua máquina 80386, com o desenvolvimento sendo feito a partir do MINIX. O trabalho avançou de tal forma que chegou um ponto onde Torvalds já tinha um kernel funcional em mãos.
Em 1991, Linus Torvalds decidiu divulgar abertamente o seu projeto. Para isso, publicou mensagens na Usenet (uma espécie de antecessora da internet, baseada em troca de mensagens) pedindo sugestões e colaborações para a sua iniciativa.
Eis a íntegra da primeira mensagem, em inglês, postada em 25 de agosto de 1991. Logo em seguida, sua tradução para português:
From: torvalds@klaava.Helsinki.Fi (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Keywords: 386, preferences
Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki
Lines: 20
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones. This has been brewing
since april, and is starting to get ready. I'd like any feedback on
things people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
among other things).
I've currently ported bash(1.08) and gcc(1.40), and things seem to work.
This implies that I'll get something practical within a few months, and
I'd like to know what features most people would want. Any suggestions
are welcome, but I won't promise I'll implement them :-)
Linus (torvalds@klaava.Helsinki.Fi)
PS. Yes - it's free of any minix code, and it has a multi-threaded fs.
It is NOT protable (uses 386 task switching etc), and it probably never
will support anything other than AT-harddisks, as that's all I have :-(.
Tradução para português:
Assunto: O que você gostaria de ver no minix?
Summary: Pequena pesquisa para o meu novo sistema operacional
Olá a todos que usam o minix -
Estou fazendo um sistema operacional (livre - apenas como um hobby,
não será algo grande e profissional como o GNU) para
máquinas AT 386 (486). Ele tem sido trabalhado desde abril, e
está começando a ficar pronto. Eu gostaria de
opiniões sobre coisas que as pessoas gostam/não gostam no
minix, já que o meu SO lembra um pouco ele (mesmo layout
físico do sistema de arquivos (por motivos práticos),
entre outros).
Eu já portei o bash (1.08) e o gcc (1.40) e as coisas parecem
funcionar. Isso indica que conseguirei alguma coisa prática
dentro de alguns meses, e gostaria de saber quais recursos as pessoas
mais gostaria de ter. Todas as sugestões serão
bem-vindas, mas não prometo implementá-las :-)
Linus (torvalds@kruuna.helsinki.fi)
PS. Sim - ele está livre de qualquer código do minix, e
tem sistema de arquivos com multi-threading. Ele NÂO é
portável (usa 386, chaveamento de tarefas, etc) e provavelmente
nunca suportará qualquer coisa além de discos
rígidos AT, pois é tudo o que eu tenho :-(.
Por esta mensagem, é possível perceber que Linus Torvalds não esperava que seu projeto fosse crescer tanto e se tornar tão importante para o advento da computação e da Tecnologia da Informação.
O início da trajetória do Linux não foi isenta de problemas. Uma dos obstáculos que Torvalds teve que enfrentar foram as críticas do professor Andrew S. Tanenbaum, que em suas declarações afirmou que o "Linux é obsoleto", especialmente por este ter "design monolítico".
Tanenbaum não estava contente com o fato de o Linux ter sido preparado especificamente para rodar com o processador 80386 que, além de caro, teria sua arquitetura substituída futuramente, o que, na verdade, não aconteceu.
Linus respondeu às críticas e continuou seu trabalho, contando com o apoio de cada vez mais pessoas. Com o passar do tempo, o Linux acabou inclusive sendo portado para várias outras plataformas, o que certamente contribuiu para o seu sucesso.
Linux rodando no console Nintendo DS
Linux rodando no console Nintendo DS

O nome Linux

O projeto já era realidade, mas não tinha um nome. Inicialmente, Torvalds atribuiu ao kernel a denominação Freax, uma mistura de free (livre) com freak (monstruoso, esquisito) e a letra 'x', para lembrar o UNIX.
O símbolo do Linux é o Pinguim Tux
O símbolo do Linux é o Pinguim Tux
O programador Ari Lemmke, depois de sugerir a Torvalds que colocasse o projeto em uma rede para torná-lo mais acessível, decidiu criar no servidor de FTP que hospedaria o software uma pasta de nome "linux" (muito provavelmente, uma mistura de Linus com UNIX), já que não havia gostado de Freak. A denominação "Linux" acabou "pegando" e é, tal como você vê, utilizada até hoje.

GNU/Linux

Você já deve ter visto em vários lugares - inclusive aqui no InfoWester - a expressãoGNU/Linux. O que isso significa?
Tal como você já sabe, o Linux, por si só, é um kernel. Sozinho, um kernel não tem muita utilidade. É necessário "juntá-lo" a um conjunto de softwares para que tenhamos, efetivamente, um sistema operacional em condições de uso. É aí que o projeto GNU entra.
GNU é a sigla para um nome curioso: "GNU is Not UNIX (GNU Não é UNIX)". Trata-se de um projeto que teve início em 1984, pelas mãos de Richard Stallman, que queria criar um sistema compatível com UNIX, mas sem utilizar código deste.
Com o passar dos anos, o projeto foi ganhando recursos, como compiladores e editores de texto. Mas, faltava um elemento importantíssimo: um kernel. Stallman e seus colaboradores estavam trabalhando em um kernel de nome Hurd, mas dada a demora em concluí-lo, muitos daqueles que precisavam ou queriam usar software GNU decidiram recorrer a algo que souberam ser capaz de atender à necessidade que tinham: o Linux.
Então, basicamente, o Linux que temos hoje é conhecido por trabalhar em conjunto com software GNU. Por isso, muitos integrantes e simpatizantes de movimentos ligados ao software livre defendem a ideia de que, quando houver referência ao sistema operacional como um todo, o nome GNU/Linux seja utilizado. Acontece que, por comodidade ou simplesmente desconhecimento, muitas pessoas criaram o hábito de chamar todo o conjunto de Linux e não somente o kernel.

Distribuições Linux

Você já sabe que o Linux, ao contrário de outros sistemas baseados no UNIX ou mesmo deste, não é um sistema operacional como um todo. Mas, sendo um kernel disponível de maneira gratuita e com código-fonte aberto, qualquer pessoa ou organização pode juntá-lo a um conjunto de softwares para criar um sistema operacional customizado.
Ao longo dos últimos anos, foi justamente isso que aconteceu. Vários grupos ou mesmo empresas se organizaram e criaram seu próprio sistema operacional baseado em Linux. Cada uma delas recebe o nome de "distribuição Linux" (ou "distribuição GNU/Linux").
Há várias distribuições Linux por aí, para os mais diversos fins. Muitas inclusive fazem parte de negócios rentáveis, onde a empresa fornece, por exemplo, o sistema operacional de graça, mas obtém receita a partir de serviços de suporte técnico. Naturalmente, aquelas distribuições que se destinam ao segmento de usuários domésticos são mais populares.
Captura de tela do Ubuntu
Captura de tela do Ubuntu
Para o público em geral, a distribuição mais famosa é o Ubuntu, da empresa Canonical. Por padrão, são lançadas novas versões do Ubuntu em todos os meses de abril e outubro de cada ano. Há um esquema de numeração que ajuda a identificar a época de lançamento: a versão 11.10 do Ubuntu, por exemplo, foi lançada em 2011, no mês de outubro. É possível saber disso porque a indicação de ano aparece primeiro (11) e, depois do ponto, vem a indicação do número do mês (10).
É claro que há outras distribuições renomadas, entre elas:
  • Fedora (ligada à Red Hat);
  • Debian;
  • Mandriva;
  • Linux Mint;
  • CentOS (com foco em servidores);
  • Slackware.
É possível obter informações sobre estas e outras distribuições Linux no site DistroWatch.com(em inglês).

Versões do kernel

Periodicamente, novas versões do kernel Linux são lançadas. Atualizações são naturais para qualquer software e ocorrem para atribuir melhorias a determinadas funcionalidades, para corrigir falhas (bugs) e, no caso de sistemas operacionais, para adicionar recursos importantes ao kernel, principalmente compatibilidade com novos hardwares.
Normalmente, cada versão do kernel é representada por três números distintos separados por pontos, por exemplo: 2.6.24. O primeiro número indica a versão do kernel. O segundo número indica a última revisão feita até o momento naquela versão. O terceiro número, por sua vez, indica uma revisão menor, como se fosse uma "revisão da última revisão" do kernel. Um quarto número pode ser utilizado para indicar uma atualização importante naquela versão.
É válido frisar que antes da série 2.6.x, a numeração do kernel tinha o seguinte esquema: se o segundo número da representação fosse ímpar, significava que aquela série ainda estava em desenvolvimento, ou seja, era uma versão instável e em fase de testes ou aperfeiçoamentos. Se o número fosse par, significava que aquela série já tinha estabilidade para ser disponibilizada para uso.
A numeração sofreu outra mudança em julho de 2011, quando foi lançada a versão 3.0 do Linux. Das versões 1.x para 2.x houve significativas alterações no kernel. No entanto, da 2.x para a 3.x não houve nada tão importante assim, tanto que, pelo esquema, esta versão deveria ser 2.6.40.
Tudo indica que a mudança aconteceu por uma questão de comodidade e "estética". Há também quem afirma que a numeração 3.0 foi dada como forma de comemorar o aniversário do Linux, que completou 20 anos de existência em 2011.

A licença do Linux

Uma licença é, em poucas palavras, um documento que explica como determinado software pode ser utilizado. No que se refere a programas de código-fonte aberto, há vários tipos de licenças disponíveis. O Linux utiliza a GPL (GNU Public Licence).
Vale frisar que, inicialmente, Linus Torvalds aplicou ao Linux uma licença própria, que tinha restrições para uso comercial. A GPL só foi adotada somente em 1992, mesmo porque o Linux já era utilizado com software GNU.
A GPL é uma licença criada pela Free Software Foundation (organização fundada por Richard Stallman) baseada nas liberdades que a entidade defende:
  • liberdade de executar o programa, para qualquer propósito (liberdade zero);
  • liberdade de estudar como o programa funciona e adaptá-lo às suas necessidades (liberdade 1), sendo o acesso ao código-fonte um pré-requisito para esta aspecto;
  • liberdade de distribuir cópias de forma que você possa ajudar ao seu próximo (liberdade 2);
  • liberdade de melhorar o programa e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie (liberdade três). Novamente, aqui o acesso ao código-fonte é um pré-requisito.
Um software não pode utilizar a GPL se não corresponder a todos estes requisitos.
A GPL surgiu em 1989, mas foi revisada em 1991 para atender a determinadas necessidades, resultando na GPLv2 (GPL versão dois). Em 2007, surgiu a GPLv3 (GPL versão três). É possível consultar a GPL no seguinte link (em inglês): www.gnu.org/licenses/gpl.html.
Finalizando
Você pode até não ter Linux em seu computador, mas já o utilizou de alguma forma. Por se tratar de um software gratuito, de código-fonte aberto e amplamente disponível, é comum encontrá-lo nas mais diversas aplicações. O servidor que hospeda o InfoWester, por exemplo, roda uma distribuição Linux. Também é possível encontrar este kernel em sistemas embarcados, caixas eletrônicos, dispositivos portáteis, entre outros.
Para saber mais sobre o assunto, você pode consultar os sites que serviram de referência para este texto:
  • en.wikipedia.org/wiki/Linus_Torvalds;
  • www.gnu.org/gnu/linux-and-gnu.pt-br.html;
  • en.wikipedia.org/wiki/MINIX;
  • www.unix.org;
  • www.bell-labs.com/history/unix;
  • netfiles.uiuc.edu/rhasan/linux.
  • en.wikipedia.org/wiki/Tanenbaum_Torvalds_debate.
  • http://www.infowester.com/historia_linux.php


quarta-feira, 22 de maio de 2013

A história dos sistemas operacionais



Atualmente, os sistemas operacionais (SO) estão cada vez mais fáceis de usar, possuindo interfaces muito simples e bonitas. Contudo, todas estas funcionalidades não surgiram do nada, foram evoluindo com o tempo. Por exemplo, a bela interface gráfica do Windows Vista é resultado de mais de 20 anos de desenvolvimento, desde as primeiras versões deste SO. Por isso, criamos este artigo que conta a história dos sistemas operacionais, incluindo os principais representantes de cada época.

Sistema operacional não é a maquina


Atualmente, ainda são comuns alguns equívocos em relação ao sistema operacional. Por exemplo, todos alguma vez já ouviram um diálogo como este:

       - Que computador você irá comprar?
       - Vou comprar o Windows.

O diálogo acima demonstra um erro muito comum no mundo da informática: pensar que o sistema operacional é a máquina em si. Basicamente, o computador é composto por duas grandes categorias: hardware e software. A primeira delas se refere à parte física da máquina, ou seja, o que pode ser tocado fisicamente. Já a segunda abrange a parte lógica responsável por realizar tarefas,  utilizando-se do hardware para a realização de suas tarefas.

Por isso, sistemas operacionais como o Windows, Linux ou o MAC OS, são apenas softwares que gerenciam toda a atividade do hardware, mas não o computador em si. Consequentemente, em um PC que contenha um dos SOs citados acima, quase sempre é possível instalar outro.

Sistemas operacionais primitivos

Primeiramente, vamos tratar sobre a gênese dos sistema operacionais, abordando a forma como eram desenvolvidos nas décadas de cinquenta, sessenta e setenta.

Máquinas que não usavam SO


A primeira geração  da computação moderna (1945-1955) não trabalhava com o conceito de sistema operacional propriamente dito, visto que as operações eram setadas através de hardware. Por exemplo, chaves, quilômetros de fios e luzes de aviso, como na foto abaixo do Eniac. Nesse período, era muito comum que a mesma pessoa projetasse, programasse e utilizasse os computadores. A principal implicação desta abordagem é o fato de que era muito difícil criar rotinas programáveis, exigindo trabalho intenso dos operadores de máquinas.
Painel de controle do Eniac

Programação em Batch

 O conceito de sistema operacional apareceu durante a segunda geração da computação  moderna (1955 - 1965), através da programação em Batch. Assim, vários comandos já poderiam ser executados em sequência através de cartões perfurados, eliminando parte do trabalho do operador de terminal. Normalmente,  um programa era composto por um conjunto de cartões inseridos pelo usuário do sistema, na ordem correta.

Sistemas específicos

Em meados da década de 60, os primeiros sistemas operacionais foram desenvolvidos conforme a evolução da tecnologia da época. Contudo, cada máquina possuía seu próprio SO específico, o que implicava na incompatibilidade de mainframes distintos. Um dos maiores representantes foi o CTSS, criado pela MIT, sendo lançado em 1961 para o computador IBM 7090.
IBM 7090 rodando CTSS

Unix, o primeiro sistema operacional moderno

Visando ao problema da incompatibilidade de SOs de máquinas distintas, um grupo de desenvolvedores da AT&T ciaram o Unix em 1969, sendo o primeiro sistema operacional moderno da computação. É possível afirmar que mais de 90 porcento dos SOs atuais foram influenciados de alguma maneira pelo Unix.

Sua primeira versão foi escrita em linguagem assembly, sendo posteriormente reescrito em C no ano de 1973, linguagem utilizada até os dias de hoje. Este sistema introduziu conceitos muito importantes para a computação: portabilidade, multi-usuário, multi-tarefas e compartilhamento de tarefas.

Durante a década de 70, o Unix foi distribuído gratuitamente (incluindo seu código fonte) para universidades e órgãos governamentais norte-americanos, o que conferiu muita popularidade a este sistema. Sua interface era totalmente em modo texto sem interface gráfica

Em 1977 foi lançado o BSD, sistema operacional fortemente baseado no Unix, focado principalmente para a execução em máquinas específicas de alto desempenho, como o famoso computador VAX, o qual foi uma referência de hardware na época.
Comando em modo texto no BSD

Sistemas Operacionais para computadores pessoais

Tanto o Unix quanto o BSD, em suas primeiras versões, foram desenvolvidos para o uso de computadores de grande porte, normalmente em universidades. Contudo, alguns jovens programadores possuíam uma ideia absurda para época: criar sistemas operacionais para o uso de pessoas comuns.

Steve Jobs e a Apple

Um dos primeiros a pensar desta forma foi Steve Jobs, fundador da Apple. Desde a criação de sua empresa, seu principal foco foi a criação de computadores para o dia-a-dia, incluindo sistemas operacionais fáceis de serem operados. O lançamento do Apple I em 1976, um dos primeiros computadores pessoais,  foi um marco na história da computação.

PC Apple IIPela primeira vez, um PC continha um teclado fácil de ser utilizado, com uma mini-televisão adaptada como monitor. Assim, conhecimentos avançados de computação já não eram mais requisitos para se operar um PC. Jobs fez questão de criar o seu sistema operacional do zero, sem se basear inicialmente no Unix. Nos anos seguintes, os modelos Apple II e Apple III foram lançados no mercado, um sucesso de vendas. Suas interfaces gráficas eram muito primitivas comparadas com o padrão usado atualmente, mas avançadíssimas para a época.

Em meados de 1979, Steve Jobs tomou conhecimento sobre o desenvolvimento de um computador totalmente inovador pela Xerox Parc. Em uma vista a esta empresa, ele ficou deslumbrado com Xerox Alto, um PC que possuía uma interface gráfica (GUI) totalmente revolucionária. Pouco tempo depois, a Apple lançou o Lisa, aproveitando todas as ideias gráficas do computador. Não é nem preciso dizer que o sucesso foi estrondoso. Cada versão do Apple  possuía um sistema operacional distinto.

Como se não bastasse, o Apple Machintosh foi lançado em 1984, introduzindo o conceito de desktop, utilizando ícones e pastas para representar programas e arquivos do modo como conhecemos hoje. Esta máquina acompanhava o revolucionário e inovador sistema chamado MAC OS. Seu sucesso foi estrondoso em todo EUA, principalmente pela vinculação de seu comercial durante a final do Superbowl do mesmo ano.
Macintosh Original

Com o passar dos anos, as novas versões do Macintosh e o do MAC OS já não eram mais populares como antes, o que fez com que a Apple perdesse bastante mercado para a Microsoft. No final dos anos 90, o código do Macintosh apresentava muitos problemas, o que obrigou que um novo plano fosse traçado. Em 2001, a Apple surpreendeu o mundo da informática, abandonando o seu próprio código e reescrevendo todo o seu sistema operacional usando o Unix como base. A partir daí, ele passou a se chamar MAC OSX, sistema que continua forte até os dias de hoje.
Mac OSX


Bill Gates e a Microsoft

Voltando ao final da década de 70, outro jovem programador, chamado Bill Gates, também possuía o desejo de revolucionar o mundo da informática. Em 1975, ele fundou a Microsoft, empresa que possuía como objetivo primário o desenvolvimento de software em linguagem BASIC para o computador Altair da IBM. Com o sucesso dos programas desenvolvidos pela Microsoft, a empresa  afirmou que possuía um sistema operacional completo. A IBM se interessou pelo projeto e ambas as organizações afirmaram um contrato, em 1979.

Entretanto, a Microsoft estava com sérios problemas, pois não possuía um sistema operacional de verdade. A solução encontrada foi a compra do SO da Seattle Computer Products pelo valor de $50.000. Muitos o chamam de negócio do século, pois a partir de 50 mil dólares, a Microsoft possui o patrimônio atual avaliado em dezenas de bilhões de dólares.
Comando no MS-DOS


Após várias melhorias sobre o sistema comprado, a Microsoft lançou MS-DOS em 1982 cuja interface era baseada em modo texto, bastante parecida com a utilizada pelo Unix. Na época, esse SO não chamou tanta atenção, pois o Apple Lisa de Steve Jobs já trabalhava com uma interface gráfica. Tomando conhecimento deste problema, Bill Gates fez uma vista a Apple, com o objetivo básico de conhecer a empresa. Ao final da visita, Gates convenceu Jobs a ser incluído no  desenvolvimento do Macintosh.

O objetivo de Gates era maior que isso: copiar a interface gráfica do Machintosh, e foi exatamente isso que aconteceu. No lançamento do novo PC da Apple, Steve Jobs descobriu que a Microsoft estava lançando máquinas no Japão, cujas interfaces eram muito parecida com a do seu computador. Após a quebra da parceria entre os dois, Gates lançou o Sistema Operacional Windows 1.0 em 1985, batendo de frente com o MAC OS.


Após problemas de administração, Jobs foi demitido da Apple, o que desestabilizou a empresa, retornando somente em 1997. Assim, a Microsoft foi ganhando cada vez mais mercado no mercado, lançando o Windows 2.0 em 1987, trazendo melhorias consideráveis na parte visual e no gerenciamento de memória.

Interface do Windows 2.0

Windows 3.0 e 3.11

No início dos anos 90, o mercado de sistemas operacionais sofreu novo boom com o lançamento do Windows 3.0 (1990) e Windows 3.1(1992).  Na sua versão 3.0, a memória passou a ser gerenciada de maneira muito mais eficiente, incluindo a melhora substancial na interface gráfica. Foi criado um painel de controle e um gerenciador de arquivos organizado, facilitando todo o trabalho do usuário.
Um dos principais motivos que contribuíram para seu sucesso foi o fato do sistema já vir instalado de fábrica em um grande número de máquinas.
Windows 3.1 desktop

O Windows 3.1, incluindo seu service pack 3.11, trouxe melhorias à versão 3.0, como uma interface de rede melhor desenvolvida. Em 2 meses de lançamento, o 3.1 vendeu 3 milhões de cópias.

Windows 95, 98 e ME

No ano de 1995, foi lançada no mercado a nova versão deste sistema operacional, o Windows 95. Esta versão foi tão importante para informática que acabou definindo o padrão com que o desktop é organizado, o qual ainda é utilizado no Vista. Por exemplo, podemos citar o botão Start, o menu Iniciar, a barra de tarefas e o gerenciador de arquivos Windows Explorer.  Após alguns services packs, esta versão passou a suportar a leitura de dispositivos USB,  o navegador internet explorer, entre outras funcionalidades.

Dando continuidade a seu antecessor, a nova versão deste sistema foi lançada no ano de 1998, chamada de Windows 98. Apesar de apresentar melhorias em relação ao 95, o SO era um pouco lento e instável. Tais problemas só foram arrumados com o Windows 98 SE (Second Edition), lançado em 1999, que incluía funções avançadas para compartilhamento de rede, suporte integrado a drivers de DVD-ROM, entre outras tarefas

O sucessor, Windows Me, lançado em 2000, foi um dos maiores fracassos na questão de sistema operacional, pois era muita instável. Possuía somente poucas melhoras em relação ao Windows 98 SE. Por isso, logo foi deixado de lado.

Todas as versões apresentadas até aqui usavam o MS-DOS como núcleo do sistema, ou seja, o Windows funcionava como uma espécie de ambiente gráfico. Com o passar do tempo, o uso desta arquitetura tornou-se insuportável, visto que o MS-DOS não conseguia dar conta de processar tantas informações, o que ficou evidente no  Windows Me.

Windows XP e Vista


Lançado em 2001, o Windows XP tornou-se um marco na história dos sistemas operacionais, principalmente por trazer muitos recursos totalmente novos. Entre eles é possível citar que o sistema tornou-se muito mais seguro, através da diferenciação de permissões entre administradores e usuários comuns. A estabilidade também é uma de suas fortes características, pois o número de telas azuis diminuíram consideravelmente.
Interface Windows XP

O principal motivo para todo esse avanço é uso do núcleo (kernel) NT como base, que exclui totalmente a necessidade do MS-DOS. Na verdade, o núcleo NT já vem sido usado desde outras versões do Windows lançadas para uso de servidores, como o Windows NT (1993) e Windows 2000 (2000). Contudo, foi somente no XP que esta arquitetura foi lançada para o usuário comum. Para saber mais sobre a definição de núcleo, clique aqui.

Depois de seis anos de espera, a Microsoft lança o Windows Vista, em 2007, que foi muito aguardado pelos usuários. Ao contrário do XP, esta nova versão desapontou o público de uma maneira geral, principalmente por exigir uma máquina muito potente. Somente em computadores top de linha é possível observar vantagens no desempenho do Vista, principalmente pela suporte a multi-core. Seu grande destaque foram os efeitos gráficos de última geração provido pelo pelo Aero e o Flip 3D.
Desktop Windows 7

A nova versão deste SO, Windows Seven, já está em desenvolvimento.


Sistemas Operacionais Livres

Até o exato momento, apresentamos a evolução dos principais sistemas proprietários do mercado: Mac OS X e Windows. Agora, vamos focar nos sistemas livres. Apesar de fazer bastante sucesso nos anos 70, o Unix continuou a ser desenvolvido durante toda esta década e a seguinte também. No ano de 1983, um revolucionário programador chamado Richard Stallman criou o projeto GNU, ele afirmava que os softwares deveriam ser desenvolvidos de maneira livre, sem  restrições na leitura ou modificação de seus códigos fontes. 

Em 1984, o MIT desenvolveu o X Window System, que como o seu nome diz, é um sistema gráfico de Janelas para o Unix. Ele permaneceu proprietário até 1987, quando uma versão opensource foi lançada, sendo incorporada no desenvolvimento deste sistema operacional. Um dos principais objetivos da GNU sempre foi desenvolver a sua própria versão do Unix, através de um Kernel próprio, chamado de GNU Hurd. Contudo, este núcleo possuía muitas falhas de sistema, comprometeu muito o seu desenvolvimento.
X Window System

O kernel Linux

Visando estas falhas, um programador chamado Linus Torvalds estava desenvolvendo outro kernel para o GNU, chamado de Linux, em. Em seu primeiro lançamento oficial (1991), na versão 0.2, o Linux já possuía mais funcionalidades que o GNU, o que atraiu bastantes desenvolvedores. Pouco tempo depois, o núcleo criado por Torvalds já era o sistema GNU mais usado do mundo.

Além disso, os programadores eram e ainda são livres para utilizar o kernel Linux em seus próprios sistemas, o que acabou gerando as famosas distribuições como conhecemos hoje . As primeiras  ficaram conhecidas como Debian e Slackware, ambas lançadas no Ano de 1993. No início, eram difíceis de serem utilizadas, comparadas com os Windows 3.11 e 95, pois exigiam um conhecimento profundo de computação por parte dos usuários.
Ubuntu 9.04

Com o tempo, as distribuições Linux foram se tornando cada vez mais fáceis de serem utilizadas, principalmente para atrair o usuário comum do computador. Atualmente, utilizar este sistema é tão fácil quanto o Windows, principalmente em distribuições como o Ubuntu.

Fonte: www.tecmundo.com.br

Instalação e configuração do Samba usando o Swat




A necessidade de compartilhar arquivos e impressoras motivou o aparecimento das primeiras redes de computadores (ainda na década de 70) e continua sendo uma necessidade comum. Mesmo para fazer um simples backup armazenado remotamente, é necessário configurar algum tipo de compartilhamento de arquivos. Existem diversas formas de disponibilizar arquivos através da rede, incluindo o NFS, o FTP, o SFTP e até mesmo um servidor web, que pode ser usado para compartilhar a pasta contendo os arquivos e aceitar uploads através de um script em PHP, por exemplo. Entretanto, quando falamos em redes locais, o protocolo mais usado é o CIFS (Common Internet File System), que é o protocolo usado para compartilhar arquivos e impressoras em redes Microsoft. O nome "CIFS" pode soar estranho à primeira vista, mas ele nada mais é do que a mais nova versão do protocolo SMB, usada a partir do Windows 2000. A história do SMB e do CIFS começa em 1984, quando a IBM criou o protocolo NetBIOS (Network Basic Input Output), um protocolo para troca de mensagens entre micros PC ligados em rede, originalmente desenvolvido para servir como uma extensão do BIOS da placa-mãe, oferecendo recursos de rede. Em 1985, o protocolo foi expandido, dando origem ao protocolo NetBEUI, que foi durante muito tempo o principal protocolo usado em redes locais, antes da popularização do TCP/IP. O SMB (Server Message Block) veio mais tarde, junto com o Windows 3.11. O protocolo SMB governa o compartilhamento de arquivos e impressoras em redes Microsoft, incluindo a navegação na rede, o estabelecimento de conexões e a transferência de dados. Ele utiliza o NetBIOS para a troca de mensagens entre os hosts e inclui uma versão atualizada do protocolo, que roda sobre o TCP/IP.Acessando as propriedades do protocolo TCP/IP dentro das configurações de rede de uma máquina com o Windows XP, você pode ver que ele (NetBIOS) continua presente, com o objetivo de manter compatibilidade com as versões anteriores do Windows:
O problema com o NetBIOS é que ele depende do uso intensivo de pacotes de broadcast e de pacotes UDP. O CIFS é a evolução natural do SMB, que inclui diversos novos recursos, abandona o uso do NetBIOS e passa a utilizar uma única porta TCP (445) no lugar das três portas (137 UDP, 138 UDP e 139 TCP) utilizadas pelo SMB. O Samba é justamente uma implementação das mesmas funções para sistemas Unix, incluindo não apenas o Linux, mas também o BSD, Solaris, OS X e outros primos. Ele começou como uma implementação do protocolo SMB e foi então sucessivamente expandido e atualizado, de forma a incorporar suporte ao CIFS e a se manter atualizado em relação aos recursos oferecidos pelas versões mais recentes do Windows.
  • Um Pouco de História

O projeto nasceu no final de 1991, de forma acidental. Andrew Tridgell, um australiano que na época era estudante do curso de PhD em ciências da computação da Universidade Nacional da Austrália. Ele precisava rodar um software da DEC (que na época era uma das gigantes no ramo de tecnologia) chamado "eXcursion", que trabalhava em conjunto com o Patchworks, um software de compartilhamento de arquivos. O Patchworks era um software proprietário, que utilizava um protocolo obscuro, sobre o qual não existiam muitas informações disponíveis. Como todo bom hacker, ele decidiu estudar o protocolo e assim desenvolver um servidor que pudesse rodar em seu PC. Ele desenvolveu então um pequeno programa, chamado clockspy, que era capaz de examinar o tráfego da rede, capturando as mensagens enviadas pelo cliente e as respostas do servidor. Com isso, ele foi rapidamente capaz de implementar o suporte às principais chamadas e a desenvolver um programa servidor, que era capaz de conversar com os clientes rodando o Patchworks. O objetivo desta primeira versão era apenas resolver um problema doméstico: interligar um micro PC rodando o MS-DOS ao servidor rodando o Solaris. Depois de algum tempo, Andrew recebeu um e-mail contando que o programa também funcionava em conjunto com o LanManager da Microsoft, permitindo compartilhar arquivos de um servidor Unix com máquinas rodando o MS-DOS. O protocolo obscuro usado pelo Patchworks se revelou uma implementação do protocolo SMB, que havia sido desenvolvida internamente pela DEC. Nasceu assim, acidentalmente, o um dos aplicativos open-source mais importantes da atualidade. Pouco depois, em janeiro de 1992, ele disponibilizou o "Server 0.1" no servidor da Universidade, que foi rapidamente seguido por uma versão aprimorada, o "Server 0.5". Este arquivo ainda pode ser encontrado em alguns dos FTPs do http://samba.org, com o nome "server-0.5". Esta versão inicial rodava sobre o MS-DOS. Depois de um longo período de hibernação, o software foi portado para o Linux, dando origem à versão seguinte (1.5), que foi lançada apenas em dezembro de 1993 e passou a se chamar "smbserver". O nome continuou sendo usado até abril de 1994, quando foi finalmente adotado o nome definitivo. O nome "Samba" surgiu a partir de uma simples busca dentro do dicionário Ispell por palavras que possuíssem as letras S, M e B, de "Server Message Blocks", posicionadas nessa ordem. A busca retornou apenas as palavras "salmonberry", "samba", "sawtimber" e "scramble", de forma que a escolha do nome acabou sendo óbvia. Uma curiosidade é que não existiu um "Samba 1.0", pois a primeira versão a utilizar o nome "Samba" foi a 1.6.05, que foi a sucessora imediata do "smbserver 1.6.4". O projeto começou a se tornar popular a partir da versão 1.6.09 (lançada pouco depois), que foi a primeira a trazer suporte ao controle de acesso com base nos logins de usuário (assim como o Windows NT), enquanto as versões anteriores suportavam apenas o controle de acesso com base no compartilhamento (assim como no Windows 3.11 e 95), onde a única opção de segurança era usar uma senha de acesso para os compartilhamentos. A partir daí, o projeto não parou de crescer, atraindo um número crescente de usuários e desenvolvedores, até se transformar no monstro sagrado que é hoje. Estes dois links contam um pouco mais sobre a história do Samba, desde as primeiras versões:
Em 1994 a Microsoft liberou as especificações do SMB e do NetBIOS, o que permitiu que o desenvolvimento do Samba desse um grande salto, tanto em recursos quanto em compatibilidade, passando a acompanhar os novos recursos adicionados ao protocolo da Microsoft, que mais tarde novamente deixou de ser aberto. Hoje, além de ser quase 100% compatível com os recursos de rede do Windows 98, NT, 2000 e XP, o Samba é reconhecido por ser mais rápido que o próprio Windows na tarefa de servidor de arquivos. Um dos pontos fortes do Samba é que o projeto foi todo desenvolvido sem precisar incorrer em qualquer violação de patentes. Todas as chamadas (com exceção das que a Microsoft tornou públicas em 1994) foram implementadas monitorando as transmissões de dados através da rede, processo que os desenvolvedores chamam de "French Cafe technique". Dentro da analogia, seria como aprender francês sentando-se em um café e passando a prestar atenção nas conversas, aprendendo a partir daí novas palavras, expressões e situações onde elas podem ou não serem usadas. É um trabalho bastante detalhista e tedioso, que demanda um grande esforço e resulta em avanços graduais, mas, se executado por anos a fio, como no caso do Samba (que começou a ser desenvolvido em 1991), resulta em conquistas surpreendentes. Isso torna o Samba virtualmente invulnerável a ações legais relacionadas a quebras de patentes ou problemas similares, já que o software é inteiramente baseado em observação e no uso de especificações públicas. Uma curiosidade é que a existência do Samba permitiu que a Microsoft conseguisse colocar PCs rodando Windows em muitos nichos onde só entravam Workstations Unix, já que com o Samba os servidores Unix existentes passaram a ser compatíveis com as máquinas Windows. Ou seja: até certo ponto, o desenvolvimento do Samba foi vantajoso até mesmo para a Microsoft. Quase tudo que você pode fazer usando um servidor Windows, pode ser feito também através do Samba, com uma excelente segurança, confiabilidade e com um desempenho em muitas situações bastante superior ao de um servidor Windows com a mesma configuração. O Samba é uma solução bastante completa e flexível para uso em redes locais, pois oferece um grande volume de opções de configuração e é compatível com todas as versões do Windows; do 3.11 ao Vista. Além de compartilhar arquivos, ele permite também compartilhar impressoras e centralizar a autenticação dos usuários, atendendo tanto a clientes Windows, quanto a clientes Linux. Para os clientes Windows, o servidor Samba aparece no ambiente de redes exibindo os compartilhamentos disponíveis, exatamente da mesma forma que um servidor Windows:
Os compartilhamentos podem ser acessados da forma tradicional e inclusive mapeados. No caso dos compartilhamentos de impressoras, é possível inclusive utilizar o Point-and-Print, onde os clientes obtém os drivers de impressão diretamente a partir do servidor e a impressora fica disponível com apenas dois cliques. Além de compartilhar arquivos e impressoras, o servidor Samba pode atuar como um PDC, autenticando os usuários da rede. Existem também diversas opções de segurança, que permitem restringir o acesso aos compartilhamentos. Naturalmente, o servidor pode ser acessado de forma simples também nos clientes Linux da rede. As versões recentes do Konqueror e do Nautilus incorporam plugins que permitem acessar os compartilhamentos de forma bastante prática (experimente digitar smb://endereço_do_servidor na barra de endereços do Konqueror) e existem também clientes especializados, como o Smb4k:
O Samba é dividido em dois módulos, o servidor Samba propriamente dito e o "smbclient", o cliente que permite acessar compartilhamentos em outras máquinas. Os dois são independentes, de forma que você pode instalar apenas o servidor, apenas o cliente ou ambos, de acordo com a função da máquina.
  • Instalando o Samba

Como comentei a pouco, o Samba é dividido em dois módulos. O servidor propriamente dito e o cliente, que permite acessar compartilhamentos em outras máquinas (tanto Linux quanto Windows). Os dois são independentes, permitindo que você mantenha apenas o cliente instalado num desktop e instale o servidor apenas nas máquinas que realmente forem compartilhar arquivos. Isso permite melhorar a segurança da rede de uma forma geral. Os pacotes do Samba recebem nomes um pouco diferentes nas distribuições derivadas do Debian (incluindo o Ubuntu, Kubuntu e outras) e no Fedora (e outras distribuições derivadas do Red Hat, como o CentOS). Veja:
Pacote
Debian
Fedora
Servidor
samba
samba
Cliente
smbclient
samba-client
Documentação
samba-doc
samba-doc
Swat
swat
samba-swat

Para instalá-lo no Debian ou Ubuntu, por exemplo, você usaria:
# apt-get install samba smbclient swat samba-doc
O script de instalação faz duas perguntas. A primeira é se o servidor deve rodar em modo daemon ou sob o inetd. Responda "daemons" para que o servidor rode diretamente. Isso garante um melhor desempenho, melhor segurança e evita problemas diversos de configuração relacionados ao uso do inetd, serviço que está entrando em desuso. Em seguida ele pergunta: "Gerar a base de dados para senhas /var/lib/samba/passdb.tdb?". É importante responder que "Sim", para que ele crie o arquivo onde serão armazenadas as senhas de acesso. Como explica o script, "Caso você não o crie, você terá que reconfigurar o samba (e provavelmente suas máquinas clientes) para utilização de senhas em texto puro", o que é um procedimento trabalhoso, que consiste em modificar chaves de registro em todas as máquinas Windows da rede e modificar a configuração de outros servidores Linux. Muito mais fácil responder "Sim" e deixar que ele utilize senhas encriptadas, que é o padrão. :) Lembre-se de que você deve instalar todos os pacotes apenas no servidor e em outras máquinas que forem compartilhar arquivos. O Swat pode ajudar bastante na etapa de configuração, mas ele é opcional, pois você pode tanto editar manualmente o arquivo smb.conf, quanto usar um arquivo pronto, gerado em outra instalação. Nos clientes que forem apenas acessar compartilhamentos de outras máquinas, instale apenas o cliente. No Fedora e no CentOS a instalação é feita usando o yum:
# yum install samba samba-client samba-doc samba-swat
O Fedora inclui mais um pacote, o "system-config-samba", um utilitário de configuração rápida, que permite criar e desativar compartilhamentos de forma bem prática. Outro configurador rápido é o módulo "Internet & Rede > Samba", disponível no Painel de Controle do KDE. Aqui abordo apenas a configuração manual e o uso do Swat, que é o configurador mais completo, mas você pode lançar mão destes dois utilitários para realizar configurações rápidas. Com os pacotes instalados, use os comandos:
# /etc/init.d/samba start
# /etc/init.d/samba stop
... para iniciar e parar o serviço.
Por padrão, ao instalar o pacote é criado um link na pasta "/etc/rc5.d", que ativa o servidor automaticamente durante o boot. Para desativar a inicialização automática, use o comando:
# update-rc.d -f samba remove
Pata reativá-lo mais tarde, use:
# update-rc.d -f samba defaults
No FedoraCentOS e no Mandriva, os comandos para iniciar e parar o serviço são:
# service smb start
# service smb stop
Para desabilitar o carregamento durante o boot, use o "chkconfig smb off" e, para reativar, use o "chkconfig smb on". Note que, em ambos, o pacote de instalação se chama "samba", mas o serviço de sistema chama-se apenas "smb". É sempre recomendável utilizar os pacotes que fazem parte da distribuição, que são compilados e otimizados para o sistema e recebem atualizações de segurança regularmente. De qualquer forma, você pode encontrar também alguns pacotes compilados por colaboradores nohttp://samba.org/samba/ftp/Binary_Packages/, além do código fonte, disponível nohttp://samba.org/samba/ftp/stable/. Ao instalar a partir do código fonte, o Samba é instalado por default na pasta "/usr/local/samba", com os arquivos de configuração na pasta "/usr/local/samba/lib". Este texto é baseado no Samba 3 que, enquanto escrevo, é a versão estável, recomendada para ambientes de produção. O Samba 3 trouxe suporte ao Active Directory, passou a ser capaz de atuar como PDC, trouxe muitas melhorias no suporte a impressão e inúmeras outras melhorias em relação à série 2.x. O Samba 3.0.0 foi lançado em setembro de 2003, ou seja, há mais de 4 anos. Comparado com os ciclos de desenvolvimento das distribuições Linux, que são em sua maioria atualizadas a cada 6 ou 12 meses, 4 anos podem parecer muita coisa, mas se compararmos com os ciclos de desenvolvimento de novas versões do Windows, por exemplo, os ciclos parecem até curtos :). Para efeito de comparação, o Samba 2 (o major release anterior) foi lançado em 1999 e o Samba 4 está (em junho de 2008) em estágio de desenvolvimento, ainda sem previsão de conclusão. Por ser um software utilizado em ambientes de produção, novas versões do Samba são exaustivamente testadas antes de serem consideradas estáveis e serem oficialmente lançadas. Graças a isso, é muito raro o aparecimento de bugs graves e, quando acontecem, eles costumam ser corrigidos muito rapidamente. Naturalmente, as versões de produção continuam sendo atualizadas e recebendo novos recursos. Entre o Samba 3.0.0 lançado em 2003 e o Samba 3.0.24 incluído no Debian Etch, por exemplo, foram lançadas nada menos do que 28 minor releases intermediários. Se tiver curiosidade em ler sobre as alterações em cada versão, pode ler o change-log de cada versão no: http://samba.org/samba/history/. Você pode verificar qual é a versão do Samba instalada usando o comando:
# "smbd -V"
como em:
# smbd -V Version 3.0.24
Ao usar qualquer distribuição atual, muito provavelmente você encontrará o Samba 3.0.23 ou superior. Se por acaso você estiver usando alguma distribuição muito antiga, que ainda utilize uma versão do Samba anterior à 3.0.0, recomendo que atualize o sistema, já que muitos dos recursos que cito ao longo do texto, sobretudo o uso do Samba como PDC, não funcionam nas versões da série 2.x. Para usar o Samba em conjunto com estações rodando o Windows Vista, você deve utilizar o Samba versão 3.0.22, ou superior, que oferece suporte ao protocolo NTLMv2, que é o protocolo de autenticação utilizado por padrão pelo Windows Vista. Se não for possível atualizar o Samba, a segunda opção é configurar as estações com o Vista para permitirem o uso do sistema NTLM, o que é feito através do utilitário "secpol.msc" em "Diretivas locais > Opções de segurança > Segurança de rede: nível de autenticação Lan Manager", alterando o valor da opção de "Enviar somente resposta NTLMv2" para "Enviar LM e NTLM - use a segurança da sessão NTLMv2, se negociado".
  • Cadastrando Usuários

Depois de instalar o Samba, o próximo passo é cadastrar os logins e senhas dos usuários que terão acesso ao servidor. Esta é uma peculiaridade do Samba: ele roda como um programa sobre o sistema e está subordinado às permissões de acesso deste. Por isso, ele só pode dar acesso para usuários que, além de estarem cadastrados no Samba, também estão cadastrados no sistema. Existem duas abordagens possíveis. A primeira é criar usuários "reais", usando o comando adduser ou um utilitário como o "user-admin" (disponível no Fedora e no Debian, através do pacote gnome-system-tools). Ao usar o adduser, o comando fica:
# adduser maria
Uma segunda opção é criar usuários "castrados", que terão acesso apenas ao Samba. Essa abordagem é mais segura, pois os usuários não poderão acessar o servidor via SSH ou Telnet, por exemplo, o que abriria brecha para vários tipos de ataques. Nesse caso, você cria os usuários adicionando os parâmetros que orientam o adduser a não criar o diretório home e a manter a conta desativada até segunda ordem:
# adduser --disabled-login --no-create-home maria
Isso cria uma espécie de usuário fantasma que, para todos os fins, existe e pode acessar arquivos do sistema (de acordo com as permissões de acesso), mas que, por outro lado, não pode fazer login (nem localmente, nem remotamente via SSH), nem possui diretório home. Uma dica é que no Fedora e no CentOS (e outras distribuições derivadas do Red Hat), você só consegue usar o comando caso logue-se como root usando o comando "su -" ao invés de simplesmente "su". A diferença entre os dois é que o "su -" ajusta as variáveis de ambiente, incluindo o PATH, ou seja, as pastas onde o sistema procura pelos executáveis usados nos comandos. Sem isso, o sistema não encontra o executável do adduser, que vai na pasta "/usr/sbin". Os parâmetros suportados pelo adduser também são um pouco diferentes. O padrão já é criar um login desabilitado (você usa o comando "passwd usuário" para ativar) e, ao invés do "--no-create-home", usa a opção "-M". O comando (no Fedora) fica, então:
# adduser -M maria
De qualquer uma das duas formas, depois de criar os usuários no sistema você deve cadastrá-los no Samba, usando o comando: "smbpasswd -a", como em:
# smbpasswd -a maria
Se você mantiver os logins e senhas sincronizados com os usados pelos usuários nos clientes Windows, o acesso aos compartilhamentos é automático. Caso os logins ou senhas no servidor sejam diferentes, o usuário precisará fazer login ao acessar:
Um detalhe importante é que, ao usar clientes Windows 95/98/ME, você deve marcar a opção de login como "Login do Windows" e não como "Cliente para redes Microsoft" (que é o default) na configuração de rede (Painel de controle > Redes). Para desativar temporariamente um usuário, sem removê-lo do sistema (como em situações onde um funcionário sai de férias, ou um aluno é suspenso), você pode usar o parâmetro "-d" (disable) do smbpasswd, como em: # smbpasswd -d maria Se o servidor Samba for configurado como PDC da rede, autenticando os clientes Windows (como veremos em detalhes a seguir), os usuários com contas desativadas sequer conseguem fazer logon no sistema:
Para reativar a conta posteriormente, use o parâmetro "-e" (enable), como em:
# smbpasswd -e maria
Se, por outro lado, você precisar remover o usuário definitivamente, use o parâmetro "-x" (exclude), seguido pelo comando "deluser", que remove o usuário do sistema, como em:
# smbpasswd -x maria
# deluser maria
Depois de criados os logins de acesso, falta agora apenas configurar o Samba para se integrar à rede e compartilhar as pastas desejadas, trabalho facilitado pelo Swat. A segunda opção é editar manualmente o arquivo de configuração do Samba, o "/etc/samba/smb.conf", como veremos mais adiante. As opções que podem ser usadas no arquivo são as mesmas que aparecem nas páginas do Swat, de forma que você pode até mesmo combinar as duas coisas, configurando através do Swat e fazendo pequenos ajustes manualmente, ou vice-versa.
  • Usando o Swat

O Swat é um utilitário de configuração via web, similar ao encontrado nos modems ADSL. Isso permite que ele seja acessado remotamente e facilita a instalação em servidores sem o ambiente gráfico instalado. Esta mesma abordagem é utilizada por muitos outros utilitários, como o Webmin. Manter o ambiente gráfico instalado e ativo em um servidor dedicado é considerado um desperdício de recursos, por isso os desenvolvedores de utilitários de configuração evitam depender de bibliotecas gráficas. Desse modo, mesmo distribuições minimalistas podem incluí-los. No caso de redes de pequeno ou médio porte, você pode até mesmo usar uma máquina antiga como servidor de arquivos, fazendo uma instalação minimalista do Debian, Ubuntu ou outra distribuição e instalando o Samba e o Swat em modo texto. Como facilitador, o Swat acaba sendo uma faca de dois gumes, pois ao mesmo tempo em que facilita a configuração, por ser uma ferramenta visual e dispensar a edição manual do arquivo, ele complica, por oferecer um grande número de opções específicas ou obsoletas. Vamos então aprender como fazer uma configuração básica usando o Swat e depois nos aprofundar na configuração do Samba editando o smb.conf manualmente. Se preferir, você pode ir diretamente para o tópico seguinte.
  • Ativando o Swat

No Debian, Slackware e também no Gentoo, o Swat é inicializado através do inetd. O inetd tem a função de monitorar determinadas portas TCP e carregam serviços sob demanda. Isto evita que serviços e utilitários que são acessados esporadicamente (como o Swat) precisem ficar ativos o tempo todo, consumindo recursos do sistema. No caso do Ubuntu, o inetd não vem instalado por padrão. A documentação recomenda usar o xinetd no lugar dele, o que é uma boa deixa para falar um pouco sobre as diferenças de configuração entre os dois serviços. O xinetd tem a mesma função do inetd ou seja, carregar serviços sob demanda, mas ele é mais recente e um pouco mais seguro, de forma que acabou se tornando o mais usado. Apesar disso, a configuração dos dois é diferente: no caso das distribuições que usam o inetd, você precisa adicionar (ou descomentar) a linha abaixo no arquivo de configuração do inetd, o "/etc/inetd.conf":
swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat
O arquivo "/etc/inetd.conf" é composto por um grande número de linhas similares a essa, cada uma referente a um dos serviços suportados por ele (incluindo os serviços que não estão instalados). Ao descomentar a linha, você ativa o serviço. Para que a alteração entre em vigor, reinicie o inetd com o comando:
# /etc/init.d/inetd restart
Para o xinetd, a configuração é um pouco diferente. Em vez em um único arquivo de configuração, com uma linha para cada serviço, é utilizado um conjunto de arquivos de configuração (um para cada serviço) que são armazenados na pasta "/etc/xinetd.d". O primeiro passo para instalar o Swat no Ubuntu seria instalar os pacotes "swat" e "xinetd" usando o apt-get:
# apt-get install swat xinetd
Para ativar o Swat, é necessário criar o arquivo "/etc/xinetd.d/swat", com o seguinte conteúdo:
service swat {
port = 901
socket_type = stream
wait = no
user = root
server = /usr/sbin/swat log_on_failure += USERID
disable = no }
Depois de criado o arquivo, reinicie o serviço e o Swat ficará disponível.
# /etc/init.d/xinetd restart
Nas distribuições derivadas do Red Hat, o Swat também é inicializado através do xinetd, mas nelas a configuração pode ser feita de forma automática utilizando o chkconfig. Para ativá-lo, use os comandos:
# chkconfig swat on
# service xinetd restart
Em caso de problemas, abra o arquivo "/etc/xinetd.d/swat" e substitua a linha "disable = yes" (caso presente) por "disable = no" e reinicie novamente o serviço xinetd. No Fedora, você pode também reiniciar os serviços usando o utilitário "systemconfig-services", que funciona como uma interface gráfica para o comando "service". Como pode ver, devido às diferenças de configuração entre as distribuições e o uso do xinetd/inetd, ativar o Swat pode ser um pouco mais complicado do que ativar outros serviços, embora o Samba propriamente dito não dependa dele para fazer seu trabalho. Para acessar o Swat localmente, basta abrir o Firefox ou outro Browser disponível e acessar o endereço http://localhost:901. No prompt de login, forneça a senha de root (do sistema) para acessar. As credenciais do root são necessárias para que o Swat possa alterar os arquivos de configuração, reiniciar os serviços e outras operações que ficam disponíveis apenas para o root. No caso do Ubuntu, você pode definir a senha de root usando o comando "sudo passwd". Ao configurar um servidor remotamente, ou ao instalar o Samba/Swat em um servidor sem o ambiente gráfico instalado, você pode acessar o Swat remotamente, a partir de qualquer máquina da rede. Abra o navegador e acesse o endereço "http://ip-do-servidor:901", como em: http://192.168.1.1:901. Uma observação é que o Swat não utiliza encriptação, o que é uma temeridade do ponto de vista da segurança, já que alguém poderia capturar a senha sniffando a rede. Você pode evitar isso criando um túnel seguro usando o SSH e acessando o Swat através dele. Para isso, é preciso apenas que o SSH esteja ativo no servidor. Para criar o túnel, use o comando:
# ssh -f -N -L901:192.168.1.1:901 -l login 192.168.1.1
Onde o "192.168.1.1" é o endereço IP do servidor, o "901" é a porta do Swat e o "login" é a sua conta de usuário no servidor. Este comando cria um túnel encriptado entre a porta 901 do seu micro e a porta 901 do servidor, que permite acessar o Swat de forma segura. Com o túnel ativo, você acessa o Swat usando o endereço http://localhost:901, como se estivesse sentado na frente do servidor. O SSH se encarrega de transportar as informações de forma transparente entre os dois pontos, encriptando os dados e garantindo a segurança.
  • Opções Gerais do Swat

Ao abrir o Swat, você verá um menu como o do screenshot abaixo, com vários links para a documentação disponível sobre o Samba, que você pode consultar para se aprofundar no sistema. Na parte de cima, estão os links para as seções da configuração, que é o que nos interessa:
Na seção Password, você pode cadastrar usuários, substituindo o uso manual do comando "smbpasswd -a". Neste caso, você precisará primeiro cadastrar os usuários no sistema, utilizando o comando adduser. O Swat apenas cadastra os usuários no Samba:
Em seguida, acesse a seção "Globals", que engloba todas as configurações de rede e de acesso. A opção "netbios name" indica o nome do servidor, através do qual ele será identificado na rede Windows. Normalmente se utiliza o nome da máquina, mas isso não é obrigatório, já que o nome de máquina utilizado pelo Samba não está relacionado ao nome definido no arquivo "/etc/hosts" ou à configuração do DNS. O nome pode ter até 15 caracteres e ser composto por letras e números, além de espaços e dos caracteres a seguir: ! @ # $ % ^ & ( ) - ' { } ~. Ao usar mais do que 15 caracteres, os caracteres excedentes serão ignorados. É também permitido o uso de pontos, mas usá-los não é uma boa idéia, pois torna os nomes NetBIOS difíceis de diferenciar de nomes de domínio, o que pode confundir os usuários. A opção "workgroup" indica o grupo de trabalho ao qual o servidor pertence. Você pode tanto utilizar o mesmo grupo de trabalho em todas as máquinas da rede quanto agrupar suas máquinas em grupos distintos como "diretoria",  "vendas", etc.
A seguir, temos a opção "interfaces", que permite limitar os acessos ao servidor caso ele possua mais de uma placa de rede. É o caso, por exemplo, de quem acessa via ADSL ou cabo e possui uma segunda placa de rede para compartilhar a conexão com os micros da rede local. Nesses casos, a placa da web será reconhecida como eth0, enquanto a placa da rede local será reconhecida como eth1, por exemplo. Você pode, então, preencher o campo com o endereço da placa de rede local (eth1). Assim, o Samba só aceitará conexões vindas dos micros da rede local, descartando automaticamente todas as tentativas de acesso vindas da Internet. Caso o campo permaneça vazio, o Samba permite acessos vindos de todas as placas de rede e passa a ser necessário bloquear os acessos provenientes da internet usando o firewall. Na seçãoSecurity Options temos a opção "security", uma opção capciosa que aceita os valores "user", "share", "server" e "domain". Com nomes tão descritivos a configuração fica fácil, já que "server" é para quando estamos configurando o Samba como servidor e "domain" é para quando ele está sendo configurado como controlador de domínio, certo? Errado! :) As opções share e server são opções obsoletas (como veremos em detalhes mais a seguir) e a opção "domain" é usada quando você deseja que o servidor Samba seja configurado como membro (cliente) de um domínio sob responsabilidade de outro servidor. Se você está configurando um servidor Samba, seja como um servidor de grupo de trabalho, seja como controlador de domínio, a opção correta para a opção security é a "user". Utilizando o modo user, as permissões de acesso aos compartilhamentos do samba ficam condicionadas às permissões de acesso de cada usuário. Por exemplo, se você compartilhar a pasta "/home/maria/arquivos", por default apenas a usuária "maria" terá permissão para gravar novos arquivos e alterar o conteúdo da pasta. Para que outros usuários tenham acesso à pasta, você deve dar permissão a eles, criando um novo grupo e dando permissão de escrita para os integrantes do mesmo. Outra opção é adicionar os demais usuários no grupo "maria" (cada usuário possui um grupo com o mesmo nome do login, criado no momento em que é cadastrado) e configurar as permissões de acesso de forma que o grupo possa escrever na pasta. Você pode fazer a administração de grupos usando o "users-admin", que facilita bastante as coisas ao trabalhar com um grande número de usuários. Lembre-se de que no Debian ele é instalado através do pacote "gnome-system-tools". No Fedora e no CentOS ele se chama "system-config-users":
Para criar um novo grupo, mude para a aba "Grupos" e use a opção "Adicionar Grupo", especificando o nome do novo grupo e os usuários que farão parte dele na janela seguinte:
O próximo passo é alterar as permissões de acesso da pasta, colocando o grupo cadastrado como dono da pasta e fazendo com que o grupo tenha permissão para ler e alterar os arquivos. A alteração dá poderes sobre a pasta a todos os usuários que foram cadastrados no grupo:
Se você não está tão preocupado com a segurança, pode fazer do jeito "fácil", alterando a opção "outros" nas permissões de acesso da pasta, que dá acesso a todo mundo. Isso faz com que qualquer usuário local do sistema (ou logado via SSH) tenha acesso aos arquivos da pasta, mas não permite necessariamente que outros usuários do Samba possam acessar, pois neste caso ainda são usadas as permissões de acesso no Samba. A alteração das permissões da pasta é feita usando o Konqueror ou outro gerenciador de arquivos e não através do Samba:
Ou seja, é necessário fazer com que os usuários do grupo, ou todos os usuários do sistema, possam escrever na pasta, evitando que as permissões do sistema conflitem com as permissões configuradas no Samba. Se configuro o Samba para permitir que o usuário "joao" possa escrever no compartilhamento, mas a configuração das permissões da pasta compartilhada não permitem isso, o joao vai continuar sem conseguir escrever. Ao criar compartilhamentos no Samba, é preciso se preocupar com as duas coisas. Mais abaixo, temos a opção Encrypt Password. Ela também é importe, e deve ficar sempre ativa (Encrypt Password = yes). Todas as versões do Windows, incluindo o 3.11 suportam o uso de senhas encriptadas, mas até o Windows 95 original os clientes deixavam de usar a encriptação e passavam a enviar as senhas em texto puro quando percebiam que o interlocutor não suportava encriptação. Entretanto, isso abria margem para todo tipo de ataques, de forma que a partir do Windows 95 OSR/2 e do Windows NT 4 SP3, senhas em texto puro deixaram de ser suportadas, de forma que ao desativar o uso de senhas encriptadas no Samba, o servidor simplesmente não conseguirá conversar com as máquinas Windows e você vai ficar quebrando a cabeça até se lembrar deste parágrafo. :) A partir do Samba 3, existe a opção de fazer com que o próprio Samba mantenha as senhas dos usuários sincronizadas em relação às senhas dos mesmos no sistema. Antigamente, sempre que você alterava a senha de um usuário no Samba, usando o "smbpasswd", precisava alterar também a senha do sistema, usando o comando "passwd". As duas senhas precisam ficar em sincronismo, do contrário caímos no problema das permissões, onde o Samba permite que o usuário acesse o compartilhamento, mas o sistema não permite que o Samba acesse os arquivos no disco. Para ativar este recurso, ative a opção "unix password sync" no Swat. Originalmente, esta opção fica desativada e aparece apenas dentro das opções avançadas. Para chegar até ela você deve clicar no botão "Change View To: Advanced" no topo da tela. Depois de alterar, clique no Commit Changes". Para que tudo funcione, é necessário que as opções "passwd program" e "passwd chat" estejam configuradas com (respectivamente) os valores: "/usr/bin/passwd %u" e "*EntersnewsUNIXspassword:* %nn *RetypesnewsUNIXspassword:* %nn .". Estes já são os valores padrão no Swat, mas não custa verificar:
A opção "Hosts Allow" deve incluir os endereços IP de todos os computadores que terão permissão para acessar o servidor. Se quiser que todos os micros da rede tenham acesso, basta escrever apenas a primeira parte do endereço IP, como em "192.168.0.", o que faz com que todos os endereços dentro do escopo sejam permitidos. Se for incluir mais de um endereço ou mais de um escopo de endereços, separe-os usando vírgula e espaço, como em: "192.168.0., 10.0.0., 123.73.45.167". Caso o campo permaneça vazio, a opção fica desativada e todos os micros que estiverem ligados em rede com servidor Samba poderão acessá-lo. A opção "Hosts Deny", por sua vez, permite especificar máquinas que não terão permissão para acessar o servidor. É importante notar que as opções "Hosts Allow" e "Hosts Deny" possuem algumas peculiaridades, sobretudo quando usadas em conjunto. Veremos mais detalhes sobre o uso das duas mais adiante. Continuando, em uma rede Windows, uma das máquinas fica sempre responsável por montar e atualizar uma lista dos compartilhamentos disponíveis e enviá-la aos demais, conforme solicitado. O host que executa esta função é chamado de "Master Browser". De uma forma geral, todas as versões do Windows são capazes de atuar como Master Browser da rede e o cargo pode mudar de dono conforme as máquinas vão sendo ligadas e desligadas, mas o Samba executa o trabalho de forma muito eficiente, de forma que, a menos que você tenha outro servidor em posição hierarquicamente superior, é sempre interessante delegar esta tarefa ao servidor Samba. O cargo de Master Browser é disputado através de uma eleição, onde os micros da rede enviam pacotes de broadcast contendo informações sobre o sistema operacional usado, o tempo de uptime e outras informações. Ao receber o pacote de broadcast de um "oponente", cada máquina compara suas credenciais com as do pacote recebido. Se suas credenciais forem inferiores, ela desiste da eleição, caso contrário responde enviando o pacote com suas próprias credencias. Este processo de eliminação continua até que sobre apenas uma máquina, que passa então a ser o Master Browser da rede (até que seja desconectada da rede, ou perca o cargo para outra máquina com credenciais superiores). A principal credencial é o "OS Level", que nas máquinas Windows varia de acordo com a versão do sistema. As máquinas com o Windows NT Server, 2000 Server, 2003 Server ou 2008 Server possuem um Os Level de 32, as com o Windows NT Workstation, 2000 Professional ou qualquer versão doméstica do XP ou Vista possuem OS Level de 16 e as versões antigas do Windows (3.11, 95, 98 e ME) possuem OS Level de apenas 1. Nos servidores Samba o valor é ajustado através da opção "OS Level", na seção Browse Options. Isso permite que você "trapaceie", fazendo com que o servidor Samba sempre ganhe as eleições. Para isso, configure esta opção com um valor alto, 100 por exemplo, para que ele sempre ganhe as eleições (você pode usar qualquer valor entre 0 e 255). O default dessa opção é 20, o que faz com que o servidor Samba ganhe de todas as máquinas Windows, com exceção das versões Server. Para completar, deixe a opção "Local Master" e "Preferred Master" como "Yes". A opção "Local Master" faz com que o servidor Samba convoque uma nova eleição sempre que necessário (de forma a defender o cargo caso outra máquina tente assumir a posição) e a "Preferred Master" dá a ele uma leve vantagem quando confrontado com outra máquina com o mesmo OS Level:
É importante enfatizar que você nunca deve colocar dois servidores Samba na rede com o mesmo OS Level e com a opção "Preferred Master" ativada, caso contrário eles iniciarão uma disputa interminável pelo cargo, o que fará com que a navegação na rede se torne intermitente. Ao usar vários servidores Samba na rede, crie uma hierarquia, usando valores diferentes para a opção OS Level. Se, por outro lado, você não desejar que o servidor Samba participe das eleições (caso já tenha outro servidor desempenhando este papel), basta definir a opção "Local Master" com o valor "no". Logo abaixo, deixe a opção WINS Support ativada (Yes) para que o servidor Samba atue como um servidor WINS para os demais micros da rede. A opção WINS Serverdeve ser deixada em branco, a menos que exista na rede algum servidor Wins (rodando uma das versões Server do Windows) ao qual o servidor Linux esteja subordinado. Caso o único servidor seja a máquina Linux, você pode configurar as máquinas Windows para utilizá-la como servidor Wins. Para isto basta colocar o seu endereço IP no campo "Servidor Wins" na configuração de rede das estações (veja mais detalhes a seguir). Terminado, pressione o botão "Commit Changes" no topo da tela para que as alterações sejam salvas no arquivo "/etc/samba/smb.conf". Uma observação importante é que o Swat lê o arquivo smb.conf ao ser aberto, lendo as opções configuradas e mostrando-as na interface, mas gera um novo arquivo sempre que você clica no "Commit Changes". Ao ler o arquivo, ele procura por trechos específicos de texto, ignorando tudo que for diferente. Isso faz com que ele remova qualquer tipo de comentário incluído manualmente no arquivo. Em geral, quem tem o hábito de editar manualmente o smb.conf, acaba nunca usando o Swat e vive-versa.
  • Criando Compartilhamentos

Depois de cadastrar os usuários no sistema e no Samba e configurar a seção Globals, falta apenas configurar as pastas que serão compartilhadas com as estações, através da seção "Shares". Cada usuário válido (ou seja, os usuários "reais", que podem fazer login, e não os usuários limitados, criados usando o "adduser -M") cadastrado no sistema possui automaticamente um diretório home. Estas pastas ficam dentro do diretório /home e podem ser usadas para guardar arquivos pessoais, já que, a menos que seja estabelecido o contrário, um usuário não terá acesso à pasta pessoal do outro. Além dos diretórios home, você pode compartilhar mais pastas de uso geral. Para criar um compartilhamento, basta escrever seu nome no campo no topo da tela e clicar no botão "Create Share".
Depois de criado um compartilhamento, escolha-o na lista e clique no botão "Choose Share" para configurá-lo. Você verá uma lista de opções, contendo campos para especificar usuários válidos e inválidos, usuários que podem ou não escrever no compartilhamento, nomes ou endereços de máquinas, entre outras opções.
O campo "path" é o mais importante, pois indica justamente qual pasta do sistema será compartilhada. O nome do compartilhamento diz apenas com que nome ele aparecerá no ambiente de rede, que não precisa necessariamente ser o mesmo nome da pasta. A opção "comment" permite que você escreva um breve comentário sobre a pasta que também poderá ser visualizado pelos usuários no ambiente de rede. Este comentário é apenas para orientação, não tem efeito algum sobre o compartilhamento. A opção "read only" determina se a pasta ficará disponível apenas para leitura (opção Yes) ou se os usuários poderão também gravar arquivos (opção No). Você pode também determinar quais máquinas terão acesso ao compartilhamento através das opções "Hosts Allow" e "Hosts Deny". Note que as configurações das opções "Hosts Allow" e "Hosts Deny" incluídas na seção global possuem precedência sobre as colocadas dentro da configuração dos compartilhamentos, por isso (salvo poucas exceções), elas não são usadas em conjunto. Ao bloquear um host através da seção Global, ele perde o acesso a todos os compartilhamentos do servidor, mesmo que a configuração de um compartilhamento específico diga o contrário. Continuando, a opção "browseable" permite configurar se o compartilhamento aparecerá entre os outros compartilhamentos do servidor no ambiente de rede, ou se será um compartilhamento oculto, que poderá ser acessado apenas por quem souber que ele existe. Isso tem uma função semelhante a colocar um "$" em uma pasta compartilhada no Windows. Ela fica compartilhada, mas não aparece no ambiente de rede. Apenas usuários que saibam que o compartilhamento existe conseguirão acessá-lo. Esta opção tem efeito apenas sobre os clientes Windows, pois no Linux a maior parte dos programas clientes (como o Smb4k) mostram os compartilhamentos ocultos por padrão. Finalmente, a opção "available" especifica se o compartilhamento está ativo ou não. Você pode desativar temporariamente um compartilhamento configurando esta opção como "No". Fazendo isso, ele continuará no sistema e você poderá torná-lo disponível quando quiser, alterando a opção para "Yes". Terminadas as configurações, reinicie o serviço do Samba e o servidor irá aparecer imediatamente no ambiente de rede, como se fosse um servidor Windows. Os compartilhamentos podem ser acessados de acordo com as permissões que tiverem sido configuradas, mapeados como unidades de rede, entre outros recursos. Para compartilhar uma impressora já instalada na máquina Linux, o procedimento é o mesmo. Dentro do Swat, acesse a seção printers, escolha a impressora a ser compartilhada (a lista mostrará todas as instaladas no sistema), configure a opção available como "yes" e ajuste as permissões de acesso, como vimos anteriormente. No Mandriva, você pode instalar impressoras através do Control Center. No Fedora está disponível o "system-config-printer", que contém basicamente as mesmas funções. Em outras distribuições, você pode usar o kaddprinterwizard ou a própria interface de administração do Cups, que você acessa (via navegador) através da URL:
http://127.0.01:631