Buscar

Apostila Linux Avançada

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 69 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 69 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 69 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

A P O S T I L A
D E
G N U / L I N U X
1. KERNEL
Kernel de um sistema operacional é entendido como o núcleo deste ou, numa 
tradução literal, cerne. Ele representa a camada mais baixa de interface com o 
Hardware, sendo responsável por gerenciar os recursos do sistema computacional 
como um todo. É no kernel que estão definidas funções para operação com 
periféricos (mouse, disco, impressora, interface serial/interface paralela), 
gerenciamento de memória, entre outros. Resumidamente, o kernel é um conjunto 
de programas que fornece para os programas de usuário (aplicativos) uma interface 
para utilizar os recursos do sistema.
Quanto à sua arquitetura, o kernel pode ser monolítico - em um único bloco, com 
todas as funcionalidades carregadas na memória - ou modular (micro-kernel) - com 
os módulos específicos para cada tarefa carregados opcionalmente, dinamicamente.
O kernel é a parte mais importante do sistema operacional, pois, sem ele, a cada 
programa novo que se criasse seria necessário que o programador se preocupasse 
em escrever as funções de entrada/saída, de impressão, entre outras, em baixo 
nível, causando uma duplicação de trabalho e uma perda enorme de tempo. Como o 
kernel já fornece a interface para que os programas possam acessar os recursos do 
sistema de um nível mais alto e de forma transparente, fica resolvido o problema da 
duplicação do trabalho.
Quando há periféricos ou elementos de um sistema computacional que o kernel não 
cobre, então se faz necessário escrever a interface para eles, os chamados device 
drivers. Geralmente, os kernels oferecem uma função para se executar chamadas 
de sistema, como por exemplo a ioctl(), função essa que podemos denominar de I/O 
Control do Linux. Valendo-se dessa função, podem-se escrever rotinas para 
qualquer dispositivo.
1.1 Kernel monolítico.
Kernel monolítico ou mono-bloco é um kernel que implementa um interface de alto 
nível para possibilitar chamadas de sistema específicas para gestão de processos, 
concorrência e gestão de memória por parte de módulos dedicados que são 
1
A P O S T I L A
D E
G N U / L I N U X
executados com privilégios especiais.
Alguns exemplos deste tipo de kernel:
• BSD
• Linux
1.2 Micro-Kernel.
Micro-kernel é um termo usado para caracterizar o sistema cujas funcionalidades do 
sistema saíram do kernel e foram para servidores, que se comunicam com um 
núcleo mínimo, usando o mínimo possível o "espaço do sistema" (nesse local o 
programa tem acesso a todas as instruções e a todo o hardware) e deixando o 
máximo de recursos rodando no "espaço do usuário" (no espaço do usuário, o 
software sofre algumas restrições, não podendo acessar alguns hardwares, nem tem 
acesso a todas as instruções).
Alguns exemplos deste tipo de kernel:
• Hurd 
• Minix 
• Microsoft Windows NT 
2
A P O S T I L A
D E
G N U / L I N U X
1.3 Recompilando o Kernel.
A recompilação do kernel tem de ser extremamente observada. É nela que você 
poderá colocar suporte a muitos tipos de hardwares, habilitar recursos do kernel 
(como firewall e compartilhamento NAT), entre outras coisas. Muitas distribuições 
incluem kernels já compilados e prontos para usar, mas é sempre recomendado que 
você compile o seu kernel para otimizá-lo conforme suas necessidades.
Alguns pacotes precisam ser instalados antes da recompilação do kernel, entre eles, 
os pricipais são o gcc-4.0, initrd-tools, automake1.9, make e libncurses5-dev.
Pacotes de descompactação também serão necessários, portanto devemos instalar 
os pacotes tar, bzip2 e gzip.
Descompactando o kernel
Em primeiro lugar, vamos baixar uma imagem e descompactá-la em algum diretório, 
para depois começarmos a configurar a compilação. Os códigos-fonte do kernel em 
suas várias versões podem ser todos encontrados através do seguinte endereço:
 http://www.kernel.org – Página oficial do Kernel
 ftp://ftp.kernel.org — FTP oficial do Kernel
 http://ftp.kernel.org — Acesso HTTP ao FTP oficial do Kernel
 ftp://ftp.br.kernel.org — Mirror Brasileiro do FTP do kernel
Para facilitar, vamos um browser em modo texto para baixar a última versão do 
kernel, para isso deveremos instalar o links através do apt-get com o seguinte 
comando:
# apt-get install links
Para acessarmos a página do kernel devemos digitar o seguinte comando no shell:
# links www.kernel.org
Vamos baixar a última versão disponível do kernel, utilizando a seta de 
direcionamento para baixo até chegarmos a letra F (Full), em seguida precione a 
letra D (download) e em seguida pressione a tecla enter para iniciar o download.
Terminado o download, utilizaremos o comando mv para mover o pacote do kernel 
para o diretório /usr/src.
# mv linux-v.x.y.z.tar.bz2 /usr/src
Agora, portanto é hora de descompactarmos o código fonte do kernel, para isso 
3
A P O S T I L A
D E
G N U / L I N U X
utilizaremos a seguinte linhas de comando:
# cd /usr/src
# tar -xvjf linux-v.x.y.z.tar.bz2
Para facilitar, criaremos um link simbólico do diretório nos quais os fontes do kernel 
foram extraidos.
# ln -s linux-v.x.y.z linux
No proximo passo, iniciaremos a configuração para posteriormente compilarmos o 
kernel.
# cd linux
# make menuconfig
É extremamente necessário que você tenha todo o conhecimento sobre o hardware 
utilizado no computador, e serviços para os quais ele deverá atender.
Para verificarmos uma listagem simplificada de hardware, utilizaremos o segundo 
terminal disponível, apertando as teclas Alt+F2.
Em seguida, digitaremos o seguinte comando:
# lspci
4
A P O S T I L A
D E
G N U / L I N U X
Desta forma saberemos quais são os principais hardwares instalados no computador 
para que possamos passar informações corretas ao kernel.
Sabendo qual é o tipo de hardware existente no computador, retornaremos à janela 
de configuração do kernel pressionando as teclas Alt+F1.
Dentro das configurações do kernel Linux, podemos setar as opções como build in 
(compilado diretamente dentro de uma única estrutura do kernel, sendo carregado 
sempre que o computador for iniciado e é representado por um *) ou podemos ainda 
setar as opções como modules (modulos que podem ou não ser carregados pelo 
kernel em sua inicialização e é representado pela letra M).
Após todas as modificações necessárias, iremos salvar o arquivo de configuração 
selecionando a opção “Save Configuration to an Alternate File”
Agora iremos salvar as configurações do kernel com o nome de config-meu-kernel 
(pode ser qualquer outro nome desde que se recorde posteriormente).
5
A P O S T I L A
D E
G N U / L I N U X
Agora é só sair selecionando a opção Exit ele irá questionar se deseja salvar, 
selecione Yes.
Com o kernel configurado, iniciaremos a compilação com o seguinte comando:
# make bzImage
Se todas as configurações do kernel estiverem corretas, o kernel já estará compilado 
e será salvo dentro do diretório /usr/src/linux/arch/i386/boot/ , caso contrário, 
deveremos reconfigurá-lo identificando na mensagem de erro qual o causador do 
problema e rodar novamente o comando acima descrito.
O próximo passo é instalar os módulos. Para isso utilizaremos os seguintes 
comandos:
# make modules
# make modules_install
Vamos agora copiar a imagem do kernel compilado, do nosso arquivo de 
configurações e um arquivinho chamado System.map para o diretório /boot nota-se 
que o nome do kernel geralmente iniciá-se por vmlinuz, portanto ao copiarmos o 
arquivo bzImage, já estaremos renomeando-o com esse prefixo mais sua versão 
tudo isso com os seguintes comandos:
6
A P O S T I L A
D E
G N U / L I N U X
# cp /usr/src/linux/arch/i386/boot/bzImage/boot/vmlinuz-v.x.y.z
# cp /usr/src/linux/System.map /boot
# cp /usr/src/linux/config-meu-kernel /boot
Agora é necesário criarmos uma imagem initrd, que é uma imagem relativa aos 
procedimentos de inicialização do sistema, para isso usaremos o seguinte comando:
# mkinitrd /lib/modules/v.x.y.z/ -o /boot/initrd-v.x.y.z.img
Para organizar a estrutura de kernels, uma vez que pode-se ter mais de um no 
sistema operacional GNU/Linux, vamos criar links simbólicos no diretório raiz com os 
seguintes comandos:
# ln -s /boot/vmlinuz-v.x.y.z /
# ln -s /boot/initrd.v.x.y.z.img /
Agora é só adicionar as linhas no /etc/lilo.conf e redar o comando lilo ou adicionar 
em menu.lst dentro do diretório /boot/grub/ conforme já aprendido acima.
CUIDADO!!!
Lembre-se de sempre adicionar uma nova entrada em seu arquivo de configuração 
do kernel, não é seguro substituí-las, pois, o novo kernel pode não funcionar após a 
próxima reinicialização.
7
A P O S T I L A
D E
G N U / L I N U X
2. SERVIDOR DHCP
O DHCP (Dynamic Host Control Protocol) é um protocolo utilizado para 
endereçamento dinâmico de hosts. Através do DHCP, é possível endereçar uma 
grande quantidade de hosts de uma rede, sem perder um grande tempo 
configurando estações de trabalho.
Existe um serviço no GNU/LINUX chamado dhcpd que pode ser configurado para 
fornecer endereços IP's automaticamente para os clientes da rede. Com isso, o 
administrador da rede ganha tempo, tem uma configuração mais confiável e muito 
mais estável em todas as suas estações. Além disso, é possível ter um controle dos 
endereços utilizados pelos hosts da rede e fornecer algumas configurações 
adicionais, tais como, endereço de gateway, servidor de DNS primário, servidor de 
DNS secundário, entre outros.
2.1 Instalando o servidor e cliente dhcp.
Para instalar o servidor e o cliente de dhcp, devemos usar o seguinte comando:
# apt-get install dhcp3-server dhcp3-common dhcp-client
Instalado o servidor, daremos início à sua configuração, seu arquivo encontra-se 
dentro do diretório /etc/dhcp3/dhcpd.conf
As linhas que contiverem # na frente, não serão lidas pelo servidor DHCP, pois 
estarão comentadas.
# vi /etc/dhcp3/dhcpd.conf
ddns-update-style none;
Esta opção especifica se o servidor DHCP deverá tentar atualizar o DNS quando 
um arrendamento é aceito ou devolvido. Na implementação da ISC, esta opção é 
obrigatória.
option domain-name "marcioleonardi.com.br";
8
A P O S T I L A
D E
G N U / L I N U X
Esta opção especifica o domínio que será fornecido aos clientes como o principal 
domínio de busca.
option domain-name-servers 200.167.216.14,200.167.216.15;
Esta opção especifica uma lista separada por vírgulas de servidores DNS que o 
cliente deve utilizar.
default-lease-time 600;
Um cliente pode requerer um período de tempo específico válido para um 
arrendamento. Senão o servidor deverá fazer um arrendamento com este prazo de 
expiração (em segundos). 
max-lease-time 7200;
Se você tiver mais endereços IP do que máquinas os endereços IP das estações 
raramente vai precisar mudar. Mas, no caso de uma rede congestionada, o " max-
lease-time" determina o tempo máximo que uma estação pode usar um 
determinado endereço IP. Isso foi planejado para ambientes onde haja escassez de 
endereços IP, em condições normais estas duas opções não são muito 
importantes. 
authoritative;
Em uma rede com 2 servidores DHCP, esta opção o torna padrão da rede local.
subnet 192.168.1.0 netmask 255.255.255.0 {
 range 192.168.1.101 192.168.1.254;
 option routers 192.168.1.1;
}
A opção "range" determina a faixa de endereços IP que será usada pelo servidor. 
Se você utiliza a faixa de endereços 192.168.1.0 até 192.168.1.254 por exemplo, 
pode reservar os endereços de 192.168.1.1 a 192.168.1.100 para estações 
configuradas com IP fixo e usar os demais para o DHCP.
A opção routers declara o gateway padrão que será fornecido aos clientes.
host Marcio {
 hardware ethernet 00:0C:6E:8E:F7:9A;
 fixed-address 192.168.1.5;
9
A P O S T I L A
D E
G N U / L I N U X
}
O endereço MAC de um sistema (de forma que o servidor DHCP possa reconhecê-
lo quando dele receber uma solicitação).
Especifica que o sistema sempre deve receber o mesmo endereço IP. Note que um 
hostname funciona aqui, desde que o servidor DHCP seja capaz de resolver o 
nome via DNS antes de responder à solicitação com as informações do 
arrendamento.
Desta forma estará finalizada a configuração do seu servidor DHCP devendo iniciá-
lo através do seguintes comandos:
# /etc/init.d/dhcp3-server stop
# /etc/init.d/dhcp3-server start
10
A P O S T I L A
D E
G N U / L I N U X
3. SERVIDOR FTP
FTP significa File Transfer Protocol (Protocolo de Transferência de Arquivos), e é 
uma forma bastante rápida e versátil de transferir arquivos, sendo uma das mais 
usadas na internet.
Pode referir-se tanto ao protocolo quanto ao programa que implementa este 
protocolo (neste caso, tradicionalmente aparece em letras minúsculas, por influência 
do programa de transferência de arquivos do Unix).
A transferência de dados em redes de computadores envolve normalmente 
transferência de arquivos e acesso a sistemas de arquivos remotos (com a mesma 
interface usada nos arquivos locais). O FTP (RFC 959) é baseado no TCP, mas é 
anterior à pilha de protocolos TCP/IP, sendo posteriormente adaptado para o TCP/IP. 
É o standard da pilha TCP/IP para transferir arquivos, é um protocolo genérico 
independente de hardware e do sistema operacional e transfere arquivos por livre 
arbítrio, tendo em conta restrições de acesso e propriedades dos arquivos.
Existem diversos servidores FTP disponível para GNU/Linux, vamos utilizar o 
ProFTPd como exemplo para nossa experiência.
3.1 Instalando o ProFTPd.
Como já vimos antes, vamos instalar o servidor através do comando apt, com os 
seguintes parâmetros:
# apt-get install proftpd proftpd-common
3.2 Configurando o ProFTPd.
Como todo daemon de um sistema GNU/Linux e Unix, o ProFTPd é configurado 
através de um arquivo texto, o /etc/proftpd.conf. Com um simples editor de texto é 
possível efetuar sua configuração. É interessante observar que o ProFTPd apenas lê 
seu arquivo de configuração ao ser iniciado. Portanto após cada modificação 
deveremos reiniciá-lo.
A sintaxe do arquivo /etc/proftpd.conf é simples. O ProFTPd usa o conceito de 
contextos em sua configuração e nestes contextos temos as chamadas diretivas. 
Contexto é uma configuração global de um certo comportamento do ProFTPd 
11
A P O S T I L A
D E
G N U / L I N U X
enquanto as diretivas são as sub-opções que configuram os contextos. 
Contextos do ProFTPd.
Basicamente temos dois contextos principais:
Contexto Principal: Contém as configurações default que serão utilizados inclusive 
por outros contextos.
Contexto <Directory DIR >: Determina o comportamento do ProFTPd quando 
acessando e/ou servindo o diretório DIR.
Abaixo temos um exemplo de configuração do ProFTPd (perceba que é a 
configuração default de nossa versão customizada).
Exemplo 1. exemplo do configuração do ProFTPd
#Configuração do ProFTPd
ServerName "FTP-TESTE"
ServerType standalone
DefaultServer on
ServerAdmin root@localhost
#Para efetuar download aos pedaços
AllowRetrieveRestart on
#porta 21 padrão
port 21
#Umask 022 é um bom padrão pra prevenir que novos diretórios e 
arquivos
#sejam graváveis pelo grupo de usuários
Umask 022
#Quantidade máxima de instâncias
MaxInstances 10
#Usuário e grupo para o servidor no caso de especificação 
12A P O S T I L A
D E
G N U / L I N U X
especifica
#User nobody
#Group nobody
#Autenticação de usuário...utilizando o usuário do própio server 
GNU/Linux
AuthUserFile /etc/passwd
#login como root
RootLogin on
#Faz com que o usuário apenas acesse seu diretório $HOME
DefaultRoot ~
<Directory /*>
Todas as devias alterações realizadas vamos reiniciar o processo com o seguinte 
comando:
# /etc/init.d/proftpd stop
# /etc/init.d/proftpd start
13
A P O S T I L A
D E
G N U / L I N U X
Algumas diretivas do contexto principal:
14
A P O S T I L A
D E
G N U / L I N U X
Algumas diretivas do contexto <Directory>
15
A P O S T I L A
D E
G N U / L I N U X
4. SERVIDOR OPENSSH
O Secure Shell ou SSH é, simultaneamente, um programa de computador e um 
protocolo de rede que permite a conexão com outro computador na rede, de forma a 
executar comandos de uma unidade remota. Possui as mesmas funcionalidades do 
TELNET, com a vantagem da conexão entre o cliente e o servidor ser criptografada. 
As redes de computadores são uma mídia inerentemente insegura. A menos que 
você tem certeza que seus pacotes nunca irão passar por um roteador ou 
computador que você não controle direto sobre, seus dados não estão seguros. Eles 
podem ser visualizados por sysadmins pouco confiáveis ou por um script kiddie, ele 
pode ser alterado em trânsito, ou pode ser interceptado e trocado por dados 
completamente diferentes.
4.1 Criptografia e Assinaturas Digitais.
Como mensionado anteriormente, você não pode simplesmente confiar em qualquer 
dado que passe pela Internet sem algum método para garantir que o dado que você 
envia é o mesmo dado que é recebido do outro lado. Isto parece paranóico, e na 
maioria dos casos é, mas é sempre melhor estar seguro que ter problemas. É muito 
fácil para qualquer um falsificar os seus dados durante o trânsito. E se você tem 
dados que são sensíveis ou privados, certamente você não vai querer que J. 
Random Hacker ou H. Bored Sysadmin leia o mesmo. É aqui onde a criptografia e a 
assinatura digital entram.
Vejamos um exemplo concreto de um problema típico de segurança. Suponha que o 
servidor A deseje envia uma mensagem ao servidor B. Se a mensagem for enviada 
descriptografada e passa pelo roteador C, qualquer informação enviada é visível a 
root@C. Se root@C é hostil, ele pode resolver ler o que o servidor A está tentando 
enviar para o servidor B, e, em vez de repassar a mensagem, enviar uma 
mensagem falsa para B, e fazer a mesma coisa no retorno de B para A. Este é o 
ataque conhecido como "man-in-the-midle" ou "intermediário".
16
A P O S T I L A
D E
G N U / L I N U X
Dados Sensíveis
Tipicamente os pacotes enviados pela Internet viajam por vários roteadores antes de 
chegar a seu destino. Cada um destes roteadores é um perigo potencial e possui 
completo acesso a seus dados. Esta é, claramente, uma situação inaceitável para 
muitos dados importantes ou sensíveis. Infelizmente as pessoas constantemente 
estão enviando segredos da empresa, informações pessoais, senhas, números de 
cartão de crédito, e outros dados privados não criptografados pela internet. Ou elas 
não percebem o perigo disto ou simplesmente não acreditam que valha o esforço a 
própria proteção.
Autenticação
Outra área em que a técnica de criptografia é usada é na área de autenticação - 
como eu fico sabendo que você é quem você diz ser? Um nome de login e senha 
podem ter sido seguros há 20 anos atrás, mas eles são facilmente roubados ou 
violados. E um esquema de login e senha pode fornecer um serviço básico de 
autenticação, mas uma vez autenticado, eles não garantem que os dados recebidos 
sejam exatamente os mesmos que foram enviados. Criptografia e assinaturas 
digitais são extremamente importantes para resolver estes problemas 
(particularmente sistemas de chave pública).
Criptografia de Chave Privada vs. Pública
Tradicionalmente a criptografia têm se baseado em um segredo compartilhado, 
conhecido como chave. Esta chave é usada em uma fórmula matemática para 
embaralhar a informação em questão de forma que ela não possa ser 
desembaralhada facilmente sem o conhecimento da chave secreta. Enquanto esta 
técnica pode ser bem segura quando estiver em uso um bom algoritmo e uma chave 
de tamanho razoável, ela introduz o problema da troca de chaves. Como você pode 
se comunicar com um host remoto na Internet quando você não tem um canal 
seguro de comunicação que você possa utilizar para transferir a chave de 
criptografia em primeiro lugar? Este problema tem sido resolvido tipicamente pela 
transferência das chaves pessoalmente.
A presunção que a criptografia requer o compartilhamento do conhecimento de uma 
chave está tão entranhado que ele geralmente não é reconhecido. Simplesmente é 
assumido pela maioria que este é um defeito das técnicas de criptografia. 
Entretanto, tudo mudou em 1976 quando Martin Hellman, Whitfield Diffie, e Ralph 
Merkle apresentaram a idéia da criptografia de chave pública na Stanford University.
A criptografia de chave pública aborda o problema de um ângulo completamente 
diferente. Aqui temos 2 chaves - uma chave privada, que é protegida 
cuidadosamente, e uma chave pública, que pode ser passada a quem a quiser. A 
chave pública pode ser derivada da chave privada, mas não vice-versa. Os 
17
A P O S T I L A
D E
G N U / L I N U X
algoritmos de chave pública possuem a propriedade que os dados criptografados 
pela chave pública podem ser somente descriptografados pela chave privada 
correspondente.
Com esta descoberta, o problema da troca de chaves está praticamente resolvido. 
Não há mais necessidade de uma mídia segura para a transferência inicial de 
chaves, mas você pode simplesmente criptografar os dados com a chave pública do 
recipiente e ter certeza que os dados só podem ser recuperados com a chave 
privada dele, a qual nunca precisa sair do controle dele. Isto também resolve o 
problema mencionado acima da autenticação - se você quer ter certeza que alguém 
é quemdiz ser, simplesmente criptografe uma pequena quantia de dados (conhecida 
como "desafio") usando sua chave pública, e envie a esta pessoa. Esta pessoa 
então descriptografa a mesma com sua chave privada e envia de volta 
(possivelmente criptografada com tua chave pública). Se os dados que você receber 
são idênticos aos dados originalmente enviados, você sabe que ele é quem diz ser.
Então por quê a criptografia de chave privada ainda é utilizada? A razão tem a ver 
com eficiência. Os métodos atuais de criptografia com chave pública são muito mais 
lentos que os métodos de chave privada, tornando, desta forma, impraticável a 
criptografia de enormes quantias de dados. Frequentemente, (como com o SSH), 
um método de chave pública pode ser utilizado para autenticação e para a troca de 
uma chave privada. Se tudo der certo com estes dois passos, a criptografia de chave 
privada pode ser usada.
Funções de Hash
Uma função de Hash é simplesmente uma função que pega uma enorme quantia de 
dados e encolhe a mesma para um tamanho bem menor. É uma função de uma via 
(ou seja, a informação original não pode ser determinada a partir do hash 
resultante). Funções criptográficas de hash tem a propriedade adicional que uma 
pequena alteração nos dados originais resulta em uma grande alteração no hash 
resultante, o que torna extremamente difícil alterar os dados e manter o mesmo hash 
resultante.
Assinaturas Digitais
Assinaturas digitais fazem uso das funções de hash criptográficas para mostrar que 
o que o recipiente vê é, defato, a informação que foi originalmente enviada. 
Algoritmos de assinatura digital típicos são baseados na criptografia de chave 
pública, e uma visão simplificada de como funcionam é mostrada no seguinte 
exemplo:
A pessoa A compõe um email para a pessoa B. Quando o email está pronto para ser 
enviado, ele é passado por um algoritmo criptográfico de hash e o hash resultante é 
criptografado com a chave privada de A e anexado ao email. Quando a pessoa B 
recebe o email, ela descriptografa a assinatura com a chave pública de A e passa o 
18
A P O S T I L A
D E
G N U / L I N U X
email pelo mesmo algoritmo de hash. Se o hash resultante é idêntico ao hash 
descriptografado, a pessoa B pode confiar que o email não foi adulterado durante o 
transporte. Mesmo pequenas alterações, como o acréscimo de pontuações ou 
espaços irá resultar em um hash completamente diferente.
Assinaturas digitais são uma exigência legal em alguns estados por que são 
(praticamente) impossíveis de serem forjadas - certamente são muito mais difíceis 
de forjar que uma assinatura física. Uma aplicação popular para a criação e 
verificação de assinaturas digitais (bem como criptografar e descriptografar) é o 
PGP, ou sua alternativa livre, o GnuPG.
4.2 Instalação do OpenSSH
Para instalarmos o OpenSSH, serão necessários 3 (três) pacotes, que deverão ser 
instalados via apt-get com o seguinte comando:
# apt-get install openssh-server openssh-client ssh
4.3 OpenSSH Básico
O OpenSSH é uma implementação livre dos protocolos SSH, versão 1 e 2. O nome 
secure shell é um pouco equivocado, uma vez que o mesmo não é um shell da 
mesma forma que o bash ou do tcsh são shell, mas é mais do tipo do rsh. Ele é 
usado quando é preciso fazer um acesso remoto seguro a uma máquina Unix, mas 
devido à prevalência de script kiddies que adorariam conseguir sua senha e ober 
acesso livre a teus servidores, é uma boa idéia usar o mesmo sempre que você 
precisar fazer algum acesso remoto.
O uso mais básico do ssh, e a forma que ele é usado pela maioria das pessoas, é 
como substituto do telnet. O telnet transmite toda comunicação, incluindo o login e 
senha, em texto plano, e esta informação pode facilmente ser interceptadapor 
qualquer um que tenha acesso físico a qualquer rede ou roteador em que os seus 
pacotes passarem. Qualquer coisa transmitida pela Internet em texto plano é jogo 
fácil para qualquer um, por isto você tem que ser cuidadoso. Usar o ssh ao invés do 
telnet torna muito mais difícil sua informação ser capturada.
O uso básico do ssh é simples. Vamos por exemplo conectar via SSH no nosse 
endereço de loop-back 127.0.0.1, e com nosso usuário comum desta forma você 
pode usar o seguinte comando:
$ ssh acc@127.0.0.1
Dependendo de sua versão do ssh, você pode também ver uma mensagem 
mostrando a fingerprint da chave do host remoto. Esta está ligada a um hash da 
chave, e se você estiver sendo extremamente cuidadoso você vai trocar as 
fingerprints com o administrador do host remoto através de uma linha segura (tipo 
um telefone ou pessoalmente) antes de fazer a conexão, e então verificar se as 
19
A P O S T I L A
D E
G N U / L I N U X
fingerprints são idênticas. Isto é para proteger-se de um ataque "man-in-the-middle" 
que eu discuti acima, onde alguém fica entre você e o servidor, trocando as chaves e 
criptografando e descriptografando suas comunicações de uma forma que é 
transparente tanto para você quanto para o servidor, mas permitindo-o ver (e alterar) 
toda a comunicação.
Uma vez que o ssh tenha feito a conexão, ele irá pedir pela sua senha. Esta é a 
senha associada à conta de usuário na máquina remota que é idêntica ao username 
que você forneceu ao ssh (se você não fornecer um username, o ssh assume que 
você quer usar o username no qual você está logado atualmente na sua máquina). 
Quando você informar a senha, o ssh criptografa a mesma e a envia para o servidor 
remoto. Se a senha for idêntica à senha associada à conta remota, o ssh cria um 
login shell e loga você na máquina remota. A partir deste ponto, você pode usar a 
máquina como se estivesse logado no console.
Existem duas versões diferentes do protocolo ssh - ssh1 e ssh2 (ambos são 
suportados pelo OpenSSH). Várias vulnerabilidades foram descobertas no ssh1, e a 
recomendação em geral é que se use o ssh2.
4.4 SSH Port Forwarding
O telnet e outros mecanismos de login estão longe de serem os únicos protocolos de 
rede que tem o mau hábito de transmitir informações descriptografadas. Muitos 
protocolos comuns, como HTTP, POP3, ou IMAP, transmitem as informações em 
texto plano, possivelmente incluindo logins e senhas. Enquanto cada um destes 
protocolos tem uma versão protegida pelo SSL, as versões seguras não são tão 
comuns quanto as versões não protegidas. Além disto, a instalação de versões 
protegidas pelo SSL requer o uso de privilégios de superusuário, e se, por exemplo, 
você lê seu email via IMAP de um servidor remoto para o qual você não tem controle 
direto, você não pode instalar o IMAP-S.
O SSH vem para o resgate aqui. Desde que você tenha acesso shell ao servidor que 
você deseja se conectar, o SSH pode criar um tunel criptografado para você usar 
como canal para suas conexões de rede. Ele faz isto criando uma conexão segura 
ao servidor, abrindo uma porta na sua máquina local, e canalizando tudo que recebe 
na porta local para uma porta específica no servidor remoto.
Vamos usar o IMAP com exemplo, já que é ele que eu uso para verificar meu email. 
Digamos que você queira recuperar seus emails de um servidor de nome "vacuum". 
vacuum está rodando um servidor IMAP, mas não um protegido pelo SSL, e você 
prefere não transmitir seu username e senha descriptografados. Você pode chamar 
o ssh com o seguinte comando:
$ ssh -L2001:vacuum:143 bob@vacuum
20
A P O S T I L A
D E
G N U / L I N U X
Este comando diz ao ssh para abrir a porta local 2001 e repassar a conexão para a 
porta 143 em vacuum, e logar em vacuum como bob para isto. Uma vez que você 
consiga fazer o login com sucesso no servidor remoto, você tem um tunel ssh para 
brincar. Para checar seu email agora, simplesmente informe seu cliente IMAP para 
ler seu email a partir de localhost, porta 2001. O ssh irá fazer uma conexão 
transparente para o servidor remoto.
4.5 Autenticação de chaves.
Enquanto usar o ssh com uma senha é muito mais seguro que o telnet ou rsh, ainda 
não o é sem algumas armadilhas. Ao mesmo tempo que sua senha é criptografada e 
mantida segura de outros olhos durante o trânsito pela rede, uma vez que ela 
chegue no servidor remoto ela é descriptografada novamente para texto plano antes 
da autenticação. Se o servidor remoto foi comprometido, um atacante pode substituir 
o sshd por uma versão corrompida que funciona como um cavalo-de-tróia, coletando 
senhas. Um método muito mais seguro de autenticação é a autenticação baseada 
em chaves.
A autenticação de chaves SSH é baseada nos princípios da criptografia de chave 
pública. Você tem uma chave privada que você mantém protegida e que é 
posteriormente criptografada com uma senha de acesso, e você tem uma chave 
pública que é mantida em cada servidor que você deseja acessar. Quando você 
desbloqueia sua chave privada e tenta conectar a um servidor para o qual você 
tenha dado a sua chave pública, sua chave é usada para autenticação em vez de 
sua senha. Isto significa que suas senhas nunca são enviadas à máquina remota, 
removendo desta forma toda a possibilidade de ataques de roubo de senha.
Aqui temos uma visão básica de como este processo funciona. Quando você 
conecta-se a um servidor remoto, o servidor checa para ver se suachave pública 
está no arquivo authorized_keys da sua conta remota. Se ele está, então o servidor 
criptografa algum dado aleatório com sua chave pública e o envia a você. Você 
descriptografa estes dados, criptografa o mesmo com a chave pública do servidor 
remoto, e manda-os de volta. Se o servidor descriptografar e ver que é idêntico ao 
que ele enviou originalmente a você, então ele sabe que você é quem você diz ser, e 
deixa você entrar sem precisar de senha.
Para criar um par de chaves ssh (um conjunto de chaves, uma pública, e uma 
privada), tudo que você precisa fazer é executar o seguinte comando:
$ ssh-keygen -t rsa
Este comando vai pedir por uma senha para criptografar a chave primária e vai 
salvar a mesma por padrão em ~/.ssh/identity. Mantenha esta chave 
cuidadosamente guardada! Se alguém conseguir pegar a chave e a senha que você 
usou para criptografar a mesma, este alguém pode fazer logon como se fosse você 
21
A P O S T I L A
D E
G N U / L I N U X
em todos os servidores que estiverem configurados para aceitar suas chaves! 
Depois que o comando é enviado:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/acc/.ssh/identity): 
Created directory '/home/acc/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/acc/.ssh/identity.
Your public key has been saved in /home/acc/.ssh/identity.pub.
The key fingerprint is:
e8:96:e0:80:06:b5:e5:e4:22:30:3b:76:47:93:95:73 acc@debian-
server
Isto é tudo que você precisa fazer! Uma vez que seu keypar tenha sido gerado, você 
pode pegar o conteúdo de identity.pub e acrescentar ao seu ~/.ssh/authorized_keys 
no servidor remoto. Uma vez que ele tenha sido acrescentado, tente conectar-se ao 
servidor remoto novamente. Quando você faz a conexão, em vez de pedir sua 
senha, ele irá perguntar pela senha que você usou para proteger sua chave privada:
$ ssh acc@debian-server
Enter passphrase for RSA key 'acc@debian-server':
Quando você informar a senha para desbloquear sua chave, o ssh usará então sua 
chave para fazer sua autenticação com o servidor remoto - sua senha nunca é 
transmitida, e nenhuma informaçõ é transmitida pela linha que possa ser mais tarde 
usada por um atacante para obter acesso a sua conta. Desde que você mantenha 
sua chave privada em segurança, sua conta está segura.
A autenticação de chaves tem outros benefícios, como a possibilidade de várias 
pessoas utilizarem a conta root sem conhecer a senha de root. Simplesmente 
acrescente as chaves públicas de cada usuário a ~/.ssh/authorized_keys, e elas 
poderão fazer o login como aquele usuário.
ssh-agent
A autenticação baseada em chaves também traz outras possibilidades interessantes. 
Por exemplo, se você está certo que ninguém que não seja de confiança irá usar 
sua sessão de login atual, você pode usar um programa chamado ssh-agent para 
manter uma cópia desbloqueada de sua chave privada na memória, de forma que 
você não precise escrever sua senha toda vez que faz um ssh para algum lugar. É 
consideravelmente mais seguro que simplesmente usar uma chave privada sem 
22
A P O S T I L A
D E
G N U / L I N U X
senha pois, mesmo quando sua chave está desbloqueada, o ssh-agent não irá dar a 
chave privada para você - ele somente assina ou descriptografa dados com ela 
(como no caso do desafio do servidor). Além disso, outras pessoas que estejam 
logadas em seu servidor (fora o root, é claro) não tem acesso ao seu ssh-agent.
O ssh-agent é usado conforme abaixo:
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-XXvknpQ6/agent.23799; export
SSH_AUTH_SOCK;
SSH_AGENT_PID=23800; export SSH_AGENT_PID;
echo Agent pid 23800; 
A saída do ssh-agent foi feita para ser examinada pelo seu shell para acrescentar as 
variáveis de ambiente apropriadas. Ou copie e cole a saída na mesma janela de 
terminal, ou execute algo assim (assumindo que você está usando um shell bash):
bash$ eval `ssh-agent`
Agent pid 23800;
O ssh-agent está agora rodando e as variáveis de ambiente apropriadas foram 
configuradas de forma que o ssh e os vários utilitários ssh podem agora acessar o 
mesmo. Uma vez que o agente esteja rodando você pode acrescentar suas chaves 
privadas com comandos semelhantes ao abaixo:
$ ssh-add
Need passphrase for /home/acc/.ssh/identity
Enter passphrase for acc@debian-server
Identity added: /home/acc/.ssh/identity (acc@debian-server)
Agora, quando você fizer um ssh a um servidor remoto que está configurado para 
aceitar sua chave, você não precisa fornecer uma senha, você simplesmente faz a 
conexão. Obviamente, neste ponto você precisa ser extremamente cuidadoso sobre 
deixar pessoas que não são de confiançausar sua sessão de login (ssh-add -D faz o 
ssh-agent esquecer a senha se você precisar deixar o computador).
scp
O método tradicional de transferência de arquivos de uma máquina para outra por 
uma rede é usando o protocolo FTP. O FTP, como o IMAP e outros, transfere as 
informações de autenticação em texto plano, que pode não ser desejável. 
Infelizmente, devido à estrutura do protocolo FTP, é muito difícil fazer um tunel para 
o mesmo através de uma conexão ssh.
23
A P O S T I L A
D E
G N U / L I N U X
O SSH vem com um programa chamado 'scp', que significa 'secure copy' (cópia 
segura). Ele vem bem a calhar quando você quer transferir arquivos de um 
computador para outro de forma segura (ele também pode usar compressão se você 
usar a opção -C, que é boa para transferência de teto ou outro formato de dado que 
pode ser comprimido). Ele não usa um protocolo separado, mas envia os dados 
através de uma conexão ssh normal, e por isso ele aceita authorized_keys e 
conversa com o ssh-agent.
O uso do scp é bem simples. A sintaxe é:
scp file1 file2 file3 ... destination
Cada um dos argumentos pode ser um arquivo local ou remoto. Por exmeplo, pra 
compiar seu arquivo .bashr do servidor vacuum para o computador local:
$scp vacuum:.bashrc .
vacuum:.bashrc é a sintaxe que você usa para copiar de ou para um host remoto - 
host:arquivo. Se você não especificar um diretório, ele utiliza por padrão o diretório 
home. O destino é dado como ".", que significa o diretório atual.
24
A P O S T I L A
D E
G N U / L I N U X
5. SERVIDOR SAMBA
O Samba é o servidor que permite compartilhar arquivos e acessar 
compartilhamentos em máquinas Windows. Ele é dividido em dois módulos, o 
servidor Samba propriamente dito e o smbclient, que permite acessar 
compartilhamentos em outras máquinas. Usando o Samba, o servidor Linux se 
comporta exatamente da mesma forma que uma máquina Windows, compartilhando 
arquivos e impressoras e executando outras funções, como autenticação de 
usuários. Você pode configurar o Samba até mesmo para tornar-se um controlador 
de domínio.
A primeira versão do Samba, disponibilizada em 1992, foi escrita por Andrew 
Tridgell, um Australiano que na época era estudante de ciências da computação. 
Como na época a especificação do SMB utilizada pela Microsoft ainda era fechada, 
Andrew desenvolveu um pequeno programa, batizado de clockspy, para examinar os 
pacotes de dados enviados por uma máquina Windows e assim ir implementando 
uma a uma as chamadas de sistema utilizadas, um trabalho extremamente 
complexo para ser feito por uma única pessoa.
O resultado foi um programa que rodava no Solaris e era capaz de responder às 
chamadas SMB como se fosse um servidor Windows. Este arquivo ainda pode ser 
encontrado em alguns dos FTPs do http://samba.org, com o nome "server-0.5".
O objetivo desta primeira versão era apenas resolver um problema doméstico, 
interligar um PCrodando o Windows 3.1 ao servidor Solaris. Na época isso já era 
possível utilizando um dos clientes NFS comerciais para DOS, mas Andrew 
precisava de suporte a NetBIOS para um aplicativo que pretendia utilizar, o WindX, 
um servidor X para Windows, que permitia rodar aplicativos via rede a partir do 
servidor Unix.
Até aí o objetivo era apenas fazer o programa funcionar, não criar um sistema de 
compartilhamento de arquivos.
Depois de algum tempo Andrew recebeu um e-mail contando que o programa 
também funcionava com o LanManager da Microsoft, permitindo compartilhar 
arquivos de um servidor Unix com máquinas rodando o DOS. Andrew só acreditou 
depois de testar, mas ficou tão maravilhado com o que havia conseguido que criou o 
25
A P O S T I L A
D E
G N U / L I N U X
projeto "NetBios for Unix", e começou a recrutar voluntários através da Usenet. Mais 
tarde o projeto passou a usar o nome Samba, que foi adotado não em apologia ao 
Carnaval, mas apenas porque é uma das poucas palavras do dicionário do Aspell 
que possui as letras S, M e B, de "Server Message Blocks".
Em 94 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 novamente deixou de ser aberto.
Hoje, além de ser quase 100% compatível com os recursos de rede do Windows 98, 
NT e 2000, 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 
apelar para qualquer violação de patentes. Todas as chamadas (com exceção das 
que a Microsoft tornou públicas em 94) foram implementadas monitorando as 
transmissões de dados através da rede, uma espécie de engenharia reversa que 
não tem nada de ilegal. É como se você descobrisse como funciona um código de 
encriptação apenas examinando arquivos encriptados por ele. Matemáticos fazem 
isso a todo instante e muitas vezes são bem pagos para isso.
Graças a este "detalhe", o Samba não corre o perigo de sofrer restrições devido a 
ações judiciais. Naturalmente já houveram problemas legais com a Microsoft, cujo 
resultado apenas confirmou esta invulnerabilidade.
De qualquer forma, não existem sinais de que a Microsoft pretenda declarar guerra 
ao Samba, pelo contrário, foi a existência do Samba que permitiu que a Microsoft 
conseguisse colocar PCs rodando o 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, de certa forma o Samba é 
vantajoso até mesmo para a Microsoft.
5.1 Instalando o Samba
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. Isto permite melhorar a segurança da rede 
de uma forma geral.
Para instalarmos o servidor do Samba, será necessário o seguinte comando:
# apt-get install samba samba-doc swat
26
A P O S T I L A
D E
G N U / L I N U X
Lembre-se de que você deve instalar todos os pacotes apenas no servidor e em 
outras máquinas que forem compartilhar arquivos. O Swat ajuda 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.
5.2 Cadastrando usuários.
Depois de instalado, 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. Você pode 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. Esta 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. Neste caso, você cria os usuários adicionando os parâmetros que orientam 
o adduser a não criar o diretório home e manter a senha desativada até segunda 
ordem:
# adduser --disabled-login --no-create-home maria 
Isto 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, por 
outro lado, não pode fazer login (nem localmente, nem remotamente via SSH), nem 
possui diretório home.
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.
27
A P O S T I L A
D E
G N U / L I N U X
Um detalhe importante é que, ao usar clientes Windows 95 ou 98, 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).
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 os arquivos de configuração do Samba, o 
"/etc/samba/smb.conf", como veremos mais adiante. Neste caso, o ideal é começar 
a partir de um arquivo pré-configurado, alterando apenas as opções necessárias.
5.3 Configurando o Samba usando o Swat
O Samba pode ser configurado através do 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 onde o X não está instalado. Esta 
mesma abordagem é utilizada por muitos outros utilitários, como o Webmin e o 
Pagode.
Manter o X instalado e ativo num servidor dedicado é considerado um desperdício 
de recursos, por isso os desenvolvedores de utilitários de configuração evitam 
depender de bibliotecas gráficas. Deste modo, mesmo distribuições minimalistas 
podem incluí-los. 
No Debian, Slackware e também no Gentoo, o Swat é inicializado através do inetd. A 
função do inetd e xinetd é parecida, eles monitoram determinadas portas TCP e 
carregam serviços sob demanda. Isto evita que utilitários que são acessados 
esporadicamente (como o Swat) precisem ficar ativos o tempo todo, consumindo 
recursos do sistema. Apesar disso, a configuração dos dois é diferente: no caso das 
distribuições que usam o inetd, você ainda 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
Para que a alteração entre em vigor, reinicie o inetd com o comando:
# /etc/init.d/inetd restart
Para acessar o Swat, basta abrir um Browser disponível e acessar oendereço 
http://localhost:901 . No prompt de login, forneça a senha de root para acessar.
Ao abrir o Swat, você verá um menu 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.
28
A P O S T I L A
D E
G N U / L I N U X
Na seção Password, você pode cadastrar usuários, substituindo o uso manual do 
comando "smbadduser -a". Neste caso, você precisará primeiro cadastrar os 
usuários utilizando 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 acesso.
Nas opções "workgroup" e "netbios name", você deve colocar o nome do 
29
A P O S T I L A
D E
G N U / L I N U X
computador e o grupo de trabalho a que ele pertence, como faria numa máquina 
Windows. 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 opção "netbios aliases" permite criar "apelidos" para o servidor, de modo de que 
ele possa ser acessado por mais de um nome. Usando um alias, o servidor 
realmente aparece duas vezes no ambiente de rede, como se fossem duas 
máquinas. Em geral isso acaba confundindo mais do que ajudando, mas pode ser 
útil em algumas situações, quando, por exemplo, um servidor é desativado e os 
compartilhamentos movidos para outro. O novo servidor pode responder pelo nome 
do servidor antigo, permitindo que os usuários que não foram avisados da mudança 
continuem acessando os compartilhamentos.
A seguir temos a opção "interfaces", que permite limitar os acessos ao servidor se 
você tiver 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. Nestes 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 da 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 é 
necessário bloquear os acessos provenientes da internet usando o firewall.
30
A P O S T I L A
D E
G N U / L I N U X
Na seção Security Options chegamos a uma das decisões mais importantes, decidir 
entre entre utilizar segurança com base no login do usuário (user) ou com base no 
compartilhamento (share).
A opção share oferece um nível de segurança semelhante ao de uma máquina 
Windows 98. Os compartilhamentos podem ser acessados por todos os usuários, 
através da conta guest. Em compensação, esta opção é a mais simples de 
configurar e pode ser útil em pequenas redes onde não há necessidade de 
segurança.
A opção user é a mais recomendável, pois permite especificar exatamente quais 
usuários terão acesso a cada compartilhamento, como num servidor NT ou Windows 
2000. Naturalmente, para que isso funcione, é necessário que você tenha registrado 
todos os usuários no Linux e no Samba (como vimos anteriormente), e que os 
clientes Windows efetuem login na rede usando estes mesmos logins e senhas, ou 
os forneçam na hora de acessar os compartilhamentos.
Escolhendo este modo, 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 grupo 
ou adicionando os demais usuários no grupo "maria" (que é criado juntamente com o 
login de acesso) e configurando as permissões de acesso de forma que o grupo 
possa escrever na pasta.
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. Isto 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.
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 é importantíssima, e 
deve ser configurada de acordo com a versão do Windows que rodar nas máquinas 
31
A P O S T I L A
D E
G N U / L I N U X
clientes. O Windows 95 original não suporta encriptação de senhas, por isso só 
poderá se conectar ao servidor caso a opção seja configurada com o valor "No". 
Porém, o Windows 95 OSR/2, Windows 98/SE/ME, Windows NT, Windows 2000 e 
Windows XP utilizam senhas encriptadas, então, ao utilizar máquinas com qualquer 
um destes sistemas (que é o mais provável) a opção deve ser configurada como 
"Yes", caso contrário o Samba simplesmente não conseguirá conversar com as 
máquinas Windows.
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 "*Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .". 
Estes já são os valores padrão no Swat, mas não custa verificar.
32
A P O S T I L A
D E
G N U / L I N U X
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.", onde todos os endereços dentro do escopo serão permitidos. Se for 
incluir mais de um endereço ou mais de um escopo de endereços, separe-os por um 
espaço, como: "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 tiverem acesso ao servidor 
Samba poderão acessar.
A opção "Hosts Deny" por sua vez permite especificar máquinas que não terão 
permissãopara acessar o servidor. Você pode usar o Hosts Deny para estabelescer 
exceções ao dito na opção Hosts Allow.
Por exemplo, imagine que você queira que toda a rede local, que usa a faixa 
33
A P O S T I L A
D E
G N U / L I N U X
192.168.0.x, tenha acesso ao servidor, com exceção dos endereços 192.168.0.2 e 
192.168.0.3. Neste caso, a configuração ficaria assim:
Hosts Allow: 192.168.0.
Hosts Deny: 192.168.0.2, 192.168.0.3
Numa 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".
Na seção Browse Options, a opção "OS Level" permite especificar qual chance o 
servidor Linux terá de ser o Master Browser do grupo de trabalho ou domínio. 
Sempre que você estiver configurando o Samba para ser o servidor principal, é 
desejável que ele seja o master browser.
Para isso, configure esta opção com um valor alto, 100 por exemplo, para que ele 
sempre ganhe as eleições. O default dessa opção é 20, que faz com que ele perca 
para qualquer máquina Windows NT, Windows 2000 ou Windows XP. Para 
completar, deixe a opção "Local Master" e "Preferred Master" como "Yes".
A configuração do OS Level é muito importante. Caso não seja o Master Browser, 
você poderá ter problemas para acessar seu servidor Linux a partir de outras 
máquinas Windows, principalmente rodando o NT/2000/XP. Com o valor 100, 
sempre que uma das máquinas Windows tentar ser o Master Browser da rede, o 
Samba convocará uma nova eleição e a máquina Linux sempre ganhará.
Abaixo, deixe a opção Wins Support ativada (Yes). A opção Wins Server deve ser 
deixada em branco, a menos que exista na rede algum servidor Wins (rodando o NT 
server ou o 2K server) ao qual o servidor Linux esteja subordinado. 
Caso o único servidor seja a máquina Linux, você pode configurar as máquinas 
34
A P O S T I L A
D E
G N U / L I N U X
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.
Terminando, 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.
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 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 
35
A P O S T I L A
D E
G N U / L I N U X
Share" para configurá-la. 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". As configurações feitas aqui subscrevem 
as feitas na seção global. Se, por exemplo, a máquina 192.168.0.5 possui permissão 
36
A P O S T I L A
D E
G N U / L I N U X
para acessar o sistema, mas foi incluída na campo Hosts Deny do compartilhamento 
programas, ela poderá acessar outros compartilhamentos do sistema, mas não o 
compartilhamento programas especificamente.
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 "$" numa pasta compartilhada 
no Windows 98. 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á ativado 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".
Um detalhe importante é que os usuários só terão permissão para acessar pastas 
que o login permite acessar. Por exemplo, no Linux o único usuário que pode 
acessar a pasta /root é o próprio root, ou outro autorizado por ele. Mesmo que você 
compartilhe a pasta root através do Samba, os demais usuários não poderão 
acessá-la.
Para editar as permissões de uma pasta, basta abrir o gerenciador de arquivos e, 
nas propriedades da pasta, acessar a guia "Permissões". As permissões podem ser 
dadas apenas ao usuário, para todos os usuários pertencentes ao grupo do usuário 
dono da pasta, ou para todos os usuários. A opção "Aplicar mudanças a todas as 
subpastas e seus conteúdos" deve ficar marcada para que as permissões sejam 
aplicadas também às subpastas.
Terminadas as configurações, o servidor já irá aparecer 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 configure as permissões de acesso como vimos 
anteriormente.
5.4 Configurando o Samba manualmente - /etc/samba/smb.conf
Toda a configuração do Samba, incluindo as configurações gerais do servidor, 
37
A P O S T I L A
D E
G N U / L I N U X
impressoras e todos os compartilhamentos, é feita num único arquivo de 
configuração, o "/etc/samba/smb.conf". Programas de configuração,como o Swat, 
simplesmente lêem este arquivo, "absorvem" as configurações atuais e depois 
geram o arquivo novamente com as alterações feitas.
Isto permite que o Swat coexista com a edição manual do arquivo. Como o formato é 
bastante simples e conciso, muitas vezes é mais rápido e até mais simples editar 
diretamente o arquivo do que através do Swat.
O smb.conf possui as mesmas seções mostradas no swat: global, homes, printers, 
etc.
Para iniciar a edição do arquivo de configuração do smb.conf utilisamos o seguinte 
comando:
# vi /etc/samba/smb.conf
Confira abaixo um exemplo do smb.conf e em seguida a explicaçao de cada 
parâmetro presente nas seçoes: 
[global]
 comment = Servidor SAMBA
 workgroup = EMPRESA
 security = user
 os level = 100
 announce as = NT Server
 domain logons = yes
 logon script = %U.bat
 logon path = \\%L\Profiles\%U
 domain master = yes
 local master = yes
 preferred master = yes
 guest account = nobody
 # wins server = 192.168.0.2
 wins support = yes
 keep alive = 20
 debug level = 3
 winpopup command = csh -c ''xedit %s;rm %s'' &
 log file = /var/log/samba_log.%u
 null passwords = no
 unix password sync = yes
 socket options = IPTOS_LOWDELAY TCP_NODELAY
 printing = bsd
 printcap name = /etc/printcap
38
A P O S T I L A
D E
G N U / L I N U X
 load printers = yes
 hosts allow = 192.168.0. 127.
 hosts deny = 192.168.0.3 192.168.0.4
 [homes]
 comment = Pastas dos Usuarios 
 public = no 
 browseable = yes 
 writeable = yes 
 hosts deny = 192.168.0.250
 [printers] 
 comment = Impressoras Linux
 public = no
 browseable = yes
 printable = yes
 read only = yes
 create mode = 0700 
 path = /var/spool/samba 
 admin users = admin, usuario1
 [netlogon] 
 comment = Compartilhamento de Scripts
 path = /etc/scripts 
 public = no 
 browseable = yes
 writeable = no
 [diretoria] 
 comment = Grupo Diretoria
 path = /home/diretoria
 public = no 
 browseable = yes
 writeable = yes 
 write list = @diretoria
 force create mode = 0777
 force directory mode = 0777
 [comercial] 
 comment = Grupo Comercial
 path = /home/comercial
 public = yes
 browseable = yes
39
A P O S T I L A
D E
G N U / L I N U X
 writeable = yes
 write list = @comercial
 read list = @marketing
 force create mode = 0777
 force directory mode = 0777
 [transf]
 comment = Area de Transferencia
 path = /home/transf
 public = yes
 browseable = yes
 writeable = yes
 write list = @todos
 force create mode = 0777
 force directory mode = 0775
 max disk size = 200
 [oculto$]
 comment = Especifico do Admin
 path = /home/admin/oculto
 copy = homes max connections = 1
Parâmetros Funçoes
comment Comentário para este Host na Rede.
workgroup Especifica o Domínio ou Workgroup a que o Host pertence na Rede.
security
Por padrao o SAMBA utiliza a segurança a nível de usuário 
(security = user), mas existem outras opçoes:
security = share -> Senhas de acesso serao solicitadas por 
cada recurso compartilhado e nao por usuário, ou seja, 
cada diretório ou impressora poderá ter uma senha única 
conhecida pelos usuários autorizados.
security = user -> As permissoes sao dadas de acordo 
com o login do usuário, ou através dos grupos (@grupo).
security = server -> O SAMBA tentará validara senha do 
usuário enviando os dados para outro servidor SMB, como 
outro servidor SAMBA ou um servidor Windows. Deve-se 
incluir o parâmetro .password server = x.x.x.x. na seçao 
[global] do smb.conf.
security = domain -> Usado se o Host for adicionado a um 
40
A P O S T I L A
D E
G N U / L I N U X
Domínio Windows através do comando smbpasswd. Neste 
caso as informaçoes de usuário e senha serao enviadas 
para o PDC da rede, exatamente como o servidor NT faria. 
Note que é necessário que a conta do usuário exista tanto 
no Linux quanto no servidor primário.
os level
Este parâmetro nao é obrigatório se voce nao possui um 
servidor Windows na rede, mas deve ser usado caso tenha 
um ou mais. A variável é um número de 1 a 255, onde 65 é 
a mesma variável utilizada pelo servidor Windows. 
Especifique um número maior que este (como 100 por 
exemplo) para garantir que o servidor SAMBA seja eleito na 
escolha de validaçao do login das estaçoes.
announce as
Permite especificar o tipo de servidor NetBios (nmbd) que 
será divulgado na rede. As opçoes aceitas pelo SAMBA: 
"NT Server", "NT Workstation", "Win95" ou "WfW".
domain logons Usado para validar o login na rede, apenas para estaçoes Windows.
logon script
Indica qual arquivo de logon script será executado para os 
usuários. A variável %u corresponde ao usuário na rede. 
Deve também ser criado um compartilhamento de nome 
[netlogon] apontando para o diretório dos scripts.
logon path
Indica o caminho do perfil remoto do usuário. A variável %L 
corresponde ao nome do servidor NetBios (que pode ser o 
próprio SAMBA). O logon path é útil quando usuários 
costumam efetuar logon em mais de um Host na rede, pois 
seu perfil é trazido com o logon. No caso do exemplo, o 
diretório "Profiles" deve conter os scripts (em formato 
Microsoft usando NET USE e etc) e os scripts devem ser 
criados com o notepad do Windows por exemplo, a fim de 
conservar o formato do arquivo.
domain master Indica se o Host será o Domain Master Browser da rede inteira (WAN).
local master Indica se o Host será o Master Browser da rede local.
preferred master
Este parâmetro força a eleiçao do SAMBA como Master 
Browser para o workgroup. É recomendável utilizar este 
parâmetro em conjunto com o .domain master = yes. para 
garantir a eleiçao. Mas tome cuidado: se voce possui uma 
rede com servidores Windows e SAMBA e já possui um 
41
A P O S T I L A
D E
G N U / L I N U X
servidor como Domain Master, nao use esta opçao e deixe 
o parâmetro .os level = 65. para haver equilíbrio.
guest account
O SAMBA trabalha melhor em redes Microsoft com a 
existencia de uma conta guest (visitante em ingles). Por 
padrao a conta usada é .nobody.
wins server
Indica qual o servidor de Wins da rede. Se o próprio Host 
for o servidor de Wins entao nao utilize este parâmetro, pois 
haverá um loop e o sistema travará!
wins support
Permite ao SAMBA ser o servidor de Wins na rede. Isto 
significa que o SAMBA terá uma tabela com o ambiente 
completo da rede, garantindo que as estaçoes tenham 
acesso a estas informaçoes e ganho em velocidade para 
encontrar e acessar os compartilhamentos e impressoras. O 
Wins Server deve ser especificado na configuraçao de rede 
(TCP/IP) das estaçoes, que é o endereço IP do servidor.
keep alive
Como máquinas rodando Windows tendem a travar de 
tempos em tempos, este parâmetro é usado para verificar o 
estado da conexao, evitando tráfego desnecessário na 
rede. Também pode ser usado para estaçoes Linux.
debug level
Parâmetro usado para dar flexibilidade a configuraçao do 
sistema. Permite ao SAMBA trabalhar corretamente com 
algumas situaçoes de erro, por exemplo.
winpopup command
Especifica qual commando será executado quando o 
servidor receber mensagens Winpopup. Aqui, muitas 
opçoes podem ser usadas de acordo com a preferencia do 
Administrador. Se sua rede utiliza mensagens deste tipo, é 
interessante definir um comando para o parâmetro, evitando 
assim possíveis mensagens de erro para quem enviou a 
mensagem ao servidor.
log file Indica o arquivo de log do SAMBA. A variável %u corresponde ao nome de logon do usuário.
null passwords Indica se será ou nao possível que usuários tenham senha nula de logon (logon sem senha).
unix password sync
Se este parâmetro for ativado (= yes) entao clientes SMB 
(como estaçoes Windows) poderao trocarsua senha de 
login.
socket options Este parâmetro permite configuraçoes extras para o 
42
A P O S T I L A
D E
G N U / L I N U X
protocolo, possibilitando uma melhor performance do 
servidor em lidar com os pacotes na rede.
printing Indica qual o sistema de impressao padrao utilizado pelo Linux.
printcap name Indica o arquivo para busca das definiçoes das impressoras.
load printers Disponibiliza as impressoras para a rede.
hosts allow 
Indica quais máquinas tem acesso ao servidor SAMBA. 
Pode-se utilizar o endereço IP ou o nome da máquina. Para 
garantir acesso a toda uma rede por exemplo, escreva: 
"hosts allow = 192.168.1.".
hosts deny Como em "hosts allow", mas para restringir o acesso ao servidor SAMBA.
A seçao [homes] define os parâmetros para as pastas pessoais dos usuários na rede 
(home dir):
Parâmetros Funçoes
comment Comentário para este compartilhamento.
public Também conhecido como .guest ok., permite ou nao acesso de outros usuários.
browseable
Define se o compartilhamento será ou nao visível para o 
Ambiente de Rede. Estaçoes Windows95 versao 4.00.950-
C nao aceitam esta opçao, onde uma possível soluçao é 
utilizar o nome do compartilhamento seguido de $ (teste$ 
por exemplo), como faz-se no Windows.
writeable Indica se o usuário poderá ou nao ecrever em sua pasta pessoal (home dir).
As demais seçoes correspondem a compartilhamentos presentes na rede. Os 
parâmtros abaixo sao apenas alguns dos possíveis:
Parâmetros Funçoes
comment Comentário para o compartilhamento.
43
A P O S T I L A
D E
G N U / L I N U X
path Caminho do diretório compartilhado
writeable Indica se será ou nao possível criar ou excluir arquivos ou diretórios do compartilhamento.
public / guest ok Indica se será ou nao permitido o acesso de outros usuários.
browseable Define se o compartilhamento será ou nao visível para o Ambiente de Rede.
write list
Define os usuários e/ou grupos com acesso de escrita no 
compartilhamento. Para mais de um usuário, separe os 
nomes por vírgula (user1, user2, etc) e para grupos utilize 
@ antes do nome do grupo.
read list Como em .write list., mas define quem terá permissao de apenas leitura.
force create mode
Diz ao SAMBA para forçar o tipo de permissao dos arquivos 
criados (o mesmo que usar o chmod). Esta permissao tem 
menor prioridade que os parâmetros .write list. e .read list..
force directory mode O mesmo que .force create mode., mas para os diretórios criados no compartilhamento.
admin users Indica quais sao os usuários com permissao completa para o compartilhamento (permissao de root).
copy
Permite copiar os parâmetros de outra seçao, como um 
template por exemplo, útil se utiliza compartilhamentos 
semelhantes. Para alterar parâmetros basta informá-los na 
seçao atual.
hosts allow
Indica quais máquinas podem acessar o compartilhamento. 
Pode-se utilizar o endereço IP ou o nome da máquina. Para 
garantir acesso a toda uma rede classe C por exemplo, 
escreva: "hosts allow = 192.168.1.".
hosts deny Como em "hosts allow", mas para restringir o acesso ao compartilhamento.
max connections Permite especificar o número máximo de conexoes simultâneas ao compartilhamento.
max disk size Permite especificar qual o limite de espaço em disco que o compartilhamento pode utilizar. Este valor é definido em Mb 
44
A P O S T I L A
D E
G N U / L I N U X
(megabytes).
A próxima apresenta variáveis que podem ser usadas em parâmetros:
Variáveis Funçoes
%S Nome do Serviço (compartilhamento) atual.
%u Nome do usuário.
%g Nome do grupo.
%H Nome do diretório pessoal do usuário (home dir).
%m Nome da máquina cliente fornecido pelo NetBios.
%L Nome do servidor NetBios, permitindo que a configuraçao desejada seja alterada de acordo com o cliente que vai acessar o sistema.
%M Nome Internet da máquina cliente.
%a Sistema Operacional da máquina remota, onde os reconhecidos sao WfW, WinNT e Win95.
%I O endereço IP da máquina cliente.
%T Data e horário.
Exemplo de um smb.conf básico para teste e implementação:
[global]
workgroup = Workgroup
server string = Samba server
;wins support = no
###debugging###
log file = /var/null
syslog only = no
security = share
guest account = nobody
[homes]
45
A P O S T I L A
D E
G N U / L I N U X
browseable = no
creat mask = 0700
directory mask = 0700
###file sharing###
[Compartilhado]
path =/mnt/hdb/mpl/ 
browseable = yes 
security = user 
public = yes 
writable = yes
5.5 O smbclient
Da mesma forma que o SAMBA permite que o Linux atue como servidor em redes 
Microsoft, ele também permite atuar como estaçao, sem que nenhuma configuraçao 
seja necessária no servidor Microsoft.
Com o smbclient é possível acessar dados em um servidor Windows (lembra o 
comando net da Microsoft, mas os comandos utilizados sao similares aos de FTP). 
Ele pode ser usado para receber e enviar arquivos, listar diretórios, navegar pelos 
diretórios, renomear e apagar arquivos, entre outros. Diretórios compartilhados por 
um servidor SAMBA sao acessados da mesma forma.
Para verificar quais compartilhamentos estao disponíveis em um determinado Host, 
execute:
#/usr/sbin/smbclient -L host_desejado
A resposta será uma lista de serviços, ou seja, nomes de dispositivos ou 
impressoras que podem ser compartilhados com os usuários na rede. A menos que 
o servidor SMB nao tenha itens de segurança configurados, será solicitada uma 
senha antes de mostrar as informaçoes. Exemplo:
#smbclient -L servidor1
A resposta será semelhante a:
Server time is Fri Dec 22 15:58:02 2000
Timezone is UTC+10.0 Password: Domain=[EMPRESA] OS=[Windows NT 
4.0] Server=[NT LAN Manager 4.0] Server=[servidor1] User=[] 
Workgroup=[EMPRESA] Domain=[] 
46
A P O S T I L A
D E
G N U / L I N U X
Sharename Type Comment 
ADMIN$ Disk Remote Administration Public Disk Public C$ Disk 
Default Share Print$ Disk Printer Control 
Para acessar uma pasta compartilhada, basta especificar o caminho na rede, 
conforme abaixo:
$smbclient //maquina/pasta1 senha
Onde "senha" é literalmente a senha de acesso. Se o caminho estiver correto a 
resposta será algo como:
Server time is Fri Dec 22 16:01:12 2000
Timezone is UTC+10.0
Domain=[EMPRESA] OS=[Windows NT 4.0] Server=[NT LAN Manager]
smb:\>
Digite help para obter ajuda sobre os comandos do smbclient.
47
A P O S T I L A
D E
G N U / L I N U X
6. SERVIDOR DNS BIND9
Boa parte da usabilidade da Internet vem da facilidade que temos para localizar um 
computador conectado. Apesar da maioria dos computadores só conseguirem 
localizar outros através de endereços IP, nós humanos podemos localizá-los 
facilmente através de um nome inteligível. É o que acontece, por exemplo, quando 
acessamos a página oficial do sistema operacional Linux através do nome 
www.linux.org, ao invés de precisarmos usar o número 198.182.196.56 que, cá entre 
nós, é bem mais feio. Esta conversão de nome para números é feita 
automaticamente através do mecanismo de DNS (sigla de Domain Name System).
Os administradores de rede gostam de colocar uns nomes um tanto quanto criativos 
nas suas máquinas. Alguns usam nomes de cidades da região em que a LAN está 
localizada (como Olinda, Buíque e Jaboatão). Outros gostam de usar nomes de 
personagens de quadrinhos como Mônica, Cebolinha, Cascão, Magali. Outros 
preferem nomes de grandes nomes da música brasileira como Raul Seixas, Elis 
Regina e Tom Jobim. Assim como o DNS é usado na Internet, pode também ser 
usado em uma rede interna para facilitar sua utilização. Isso permite, por exemplo 
que ao invés

Continue navegando